香橙派 AIPro開發板上手測評

前言

最近拿到了一個新玩具:香橙派 AIPro。一個只比銀行卡大一點點的開發板能帶給我們多少驚喜呢?接下來就跟我一起來體驗下這塊開發板的魅力。


一、硬件配置

CPU:配備了4核64位ARM處理器,其中默認預留1個給AI處理器使用
NPU:集成了華為昇騰310BAI處理器,擁有4TFOPS的FP16算力核8TOPS的INT8算力
內存:標配LPDDR4X的規格,有8G核16G兩種配置可供選擇
存儲:板載32MB的SPI Flash,內置1個Micro SD卡槽、1個eMMC插座、M.2插槽(2280規格)
以太網:板載10/100/1000Mbps自適應RJ45口
無線通訊:2.4+5雙頻WIFI核BT4.2
USB:2個USB3.0 Host接口、1個Type-C接口(USB3.0)
攝像頭:預留了2個MIPI CSI 2 Lane接口
顯示:2個HDMI接口,支持同時4K@60HZ輸出、一個MIPI DSI 2 Lane接口支持外接顯示屏
音頻:除了2個HDMI接口還有一個3.5MM耳機孔
40PIN擴展口:支持UART、I2C、SPI、PWM、GPIO等
風扇接口:4PIN接口,12V供電,支持PWM調速
電池接口:2PIN,用于接3串電池,支持快充
調試串口:板載Micro USB接口的調試串口
操作系統:目前支持Ubuntu-22.04核OpenEuler 22.03兩種

二、開箱展示

外包裝:

在這里插入圖片描述

外包裝不是太豪華,可以說比較簡易了,但這沒有關系,因為我們注重的是內在。品牌型號下面醒目的為AI而生已經很明確地向我們詮釋了香橙派 AIPro的應用場景。

包裝盒內部:
在這里插入圖片描述

在這里插入圖片描述

整體包裝還是嚴密的,上下各有一個泡沫作為緩沖,很好的保護了運輸過程中的安全。開發板也是在密封的真空袋里面的,需要拆開真空包裝才能取出開發板。

正面:

在這里插入圖片描述

可以看到散熱風扇占了不小的面積,4PIN的風扇插口和2PIN的電池插口都在散熱器下面,正面是看不到的。右上角就是Type-C的電源供電,官方標配65W的PD電源(20V 3.25A)。給了一個簡易的外接天線,包括藍牙和WIFI的天線集成到了一起。

背面:

在這里插入圖片描述
從圖上可以看到M.2插槽,規格是2280。我插了一個256G的SSD,我的SSD使用的是SATA協議,順序讀取速度和順序寫入速度只能達到500MB/S左右,如果使用NVME協議的話速度就相當驚喜了。目前系統還是燒錄在SD卡里面的,SSD只是存儲數據用的。

M.2上邊就是EMMC的擴展卡槽,需要另行購買,系統可以燒錄進EMMC卡里面去。實測SSD的速度還是快于EMMC的,所以如果把系統燒錄進SSD的話能獲取最好的性能。

側面:

在這里插入圖片描述

可以看到所有的接口之間都留了足夠的距離,相互之間不會影響。

特別是HDMI0和HDMI1的接口中間隔著一個3.5MM耳機孔,我只能說在細節上很出色,因為HDMI數據線其實會向兩邊延展一些,如果兩個HDMI緊挨著無疑會導致難以插拔;而Type-C的接口豎著放這個設計也要點個贊,雖然我不知道是不是工程師刻意為之,在我看來如果兩個疊放的Type-A的接口都插滿數據線的話,豎著放無疑流出了相當大的操作空間,不會因為排列緊挨著而導致難以插拔的問題。

三、刷寫系統

開發板支持分別從TF卡、EMMC和SSD三種介質啟動操作系統,板子上有兩個撥碼分別是BOOT1和BOOT2,每個撥碼有打開和關閉兩種狀態,總共就是4種狀態。以下是詳細的配置:

在這里插入圖片描述

注意:無論那種方式都需要先把系統刷寫到SD卡上,然后再在開發板里面將系統鏡像刷寫到其它介質。

1.燒錄到TF卡

準備一個至少32G的TF卡(至少Class10級別),一臺Windows電腦(Linux也行),一個TF卡讀卡器。安裝BalenaEtcher燒錄軟件。

首先,將TF卡插入讀卡器并將讀卡器插入Windows電腦,確保讀卡器被電腦識別。

其次,打開BalenaEtcher軟件并選擇要燒錄的系統,這里燒錄Ubuntu-22.04。
在這里插入圖片描述

等待燒錄完成即可

在這里插入圖片描述

燒錄完成會校驗數據,必須要校驗成功才行。

在這里插入圖片描述

最后,退出軟件并彈出讀卡器。將TF卡從讀卡器拔下來并插入開發板的TF卡槽里,這一步一定要斷電,防止燒壞設備。確定插緊之后就可以接電源線了,設備會自動開機,等待進入桌面即可。

2.燒錄到EMMC

EMMC默認是不配的,需要自行花錢采購,如果你確實需要就采購一個,具體型號可以咨詢商家。

我們這里燒錄到EMMC需要借助TF卡,前面燒錄到TF卡的教程已經說過了,確保你已經通過TF卡進入了操作系統。

首先,在關機斷電的前提下將EMMC插入卡槽上,這個卡槽在背面。
在這里插入圖片描述

通過命令確認系統已經識別了EMMC,類似于下面這樣:

fdisk -lDisk /dev/mmcblk0: 28.91 GiB, 31037849600 bytes, 60620800 sectors

然后,將要燒錄的 Linux 鏡像文件壓縮包上傳到 TF 卡的 Linux 系統中。

最后,使用香橙派系統中自帶的balenaEtcher將鏡像燒錄進EMMC即可。

在這里插入圖片描述

燒錄完成后需要關機并拔掉電源,將BOOT1和BOOT2撥碼撥動到啟動EMMC的位置即可,重新插上電源等待進入桌面。

題外話:

還有一種方法燒錄到EMMC的方法我覺得是可行的,有一種專門讀取EMMC的讀卡器,就像下面這樣:

在這里插入圖片描述

我恰好就有一個,只不過是給RK3399用的,和手上的香橙派 AI Pro不配套。如果你恰巧有一個配套的EMMC讀卡器,那么理論上直接將鏡像燒錄進EMMC也是可行的,比起上面的方法會節省一些時間。不過,為了這個方式買一個EMMC讀卡器是不是值得就看你自己怎么想了。

3.燒錄進SSD

現在這個時代估計機械硬盤成了稀罕貨了,估計以后只能在機房里看到了。想起來早些年買電腦還是小容量SSD+機械的搭配,放在那個SSD天價的時代也是無奈之舉。

現在好了,隨著技術的發展和國內的廠商的跟進,雖說SSD沒有夸張到白菜價,至少比起以前也是一個天上,一個地下了吧!

這塊板子支持的SSD是M.2 2280的插槽,速度標準是PCIe3.0x4的速度,如果你的SSD超過這個標準,比如三星980 Pro是PCIe4.0x4的速度,就只能跑在PCIe3.0x4的速度了。我之前買的三星970 Pro就是這個標準,最大讀取速度3500MB/S,最大寫入速度2500MB/S,這個速度比起TF或EMMC已經是快很多了,滿足生產力也肯定是沒問題的。

注意:現在的NVME SSD只測試過梵想、金士頓和三星,目前只有三星的SSD能穩定運行操作系統!其他品牌的目前不建議將系統燒錄到SSD上,等待官方發布新的更新即可解決這個問題。

首先,將開發板關機并下電,不要帶電操作,可能燒壞設備。將SSD插入背板的M.2插槽上:

在這里插入圖片描述

一定要用螺絲將SSD固定好再開機,防止脫落引發不必要的損壞。

其次,和前面一樣燒錄SSD也需要借助TF卡,這個過程就不介紹了。確保你的SSD是走的NVME協議,通過以下命令查看是否備操作系統識別:

sudo fdisk -lDisk /dev/nvme0n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors

所有的NVME協議的SSD都是以/dev/nvme開頭的,注意不要看錯了。

最后,還是借用香橙派系統自帶的balenaEtcher軟件將鏡像燒錄進SSD里面,方法和燒錄TF卡一樣,唯一需要注意的是SSD是大容量設備,注意備份數據,這個操作會刪除所有的數據,且不可恢復!

燒錄完成后關機并斷開電源,將BOOT1和BOOT2的撥碼撥動到啟動NVME的位置即可插電源上電,然后等待進入系統。

四、系統初探

我手上拿到的這款自帶32GB的閃迪SD卡,操作系統預裝了Ubuntu-22.04。系統本身加上預裝的開發軟件占用了大概17G的空間,剩余11G左右的空間。

Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G   17G   11G  61% /
tmpfs           3.7G  4.0K  3.7G   1% /dev/shm
tmpfs           1.5G   15M  1.5G   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
tmpfs           128M  6.0M  123M   5% /var/log
/dev/mmcblk1p3   50M  2.0K   50M   1% /exchange
tmpfs           755M   76K  755M   1% /run/user/0
tmpfs           755M   80K  755M   1% /run/user/1000
/dev/sda1       239G  3.2G  236G   2% /mnt/data

實測這個SD卡的順序寫入速度大概是30MB/S,大致是A1的級別。安裝軟件過程中沒有感受到任何卡頓,但復制大文件會等待更長的時間。想要更好的體驗還是換速度更快的TF卡或者干脆更換成SSD獲得更好的體驗。

找一個支持HDMI的顯示器連接到HDMI0接口上即可看到桌面,遺憾的是我拿到這塊開發板的時候暫時還不支持2個HDMI口同時輸出,目前默認HDMI0是有輸出信號的,HDMI1是無輸出信號的,以后軟件更新會修復這個問題的。
在這里插入圖片描述

默認的桌面是Xfce的,且支持在不同的工作區之間進行切換。另外,還附帶了Gnome和KDE桌面,有需要的可自行切換。不同的人有不同的使用習慣,比如我本人使用Gnome更多一些,這一點考慮的很周到。

實測WIFI信號是滿格的:
在這里插入圖片描述
目前無法看到WIFI實際的速率,按照往常的經驗大概率是433M,這個速率對于開發板來說夠用了。

實測藍牙也是可以正常連接的:
在這里插入圖片描述
目前支持藍牙傳輸文件,但是速率略慢。用來聲音輸出沒有任何問題,音質也沒有任何影響 。

桌面里面的功能就不過多介紹了,像日常用到的網絡管理、藍牙、WIFI都是自帶的,常用的應用程序功能基本是應有盡有,感興趣的小伙伴請自行體驗吧。

五、性能評測

1.CPU性能評測

我們已經知道開發板搭載的NPU的確切性能是8TOPS,接下來就是用UnixBench測試下CPU的性能。

因為默認有一個核心被分配給了NPU,我們需要先把這個核心要回來,等待測完再還給它

先查詢下當前的分配策略:

npu-smi info -t cpu-num-cfg -i 0 -c 0Current AI CPU number          : 1Current control CPU number     : 3Current data CPU number        : 0

AI CPU就是分配給NPU的核心數,control CPU就是分配給系統的核心數,默認是1:3的策略,可以通過命令更改這個分配策略。簡單解釋下就是說分配給NPU的核心是獨占的,你的Linux系統不會把非AI的任務調度到這個核心上,通俗點說就是日常使用只有3個核心可用了。這個比例可以通過命令調整,比如0:4。如果你非常確定你的模型沒有運行在CPU上的算子,你就可以從NPU臨時回收這個核心。

切記:你一定要很確定才能這么做,有些模型是會把算子分配到CPU上運行的,強行回收可能導致嚴重的性能問題!

下面地命令就是重新分配:

sudo npu-smi set -t cpu-num-cfg -i 0 -c 0 -v 0:4:0Status                         : OKMessage                        : The cpu-num-cfg of the chip is set successfully. Reset system for the configuration to take effect.

注意:一定要重啟系統才能生效!每次更改分配策略都要重啟系統。

重啟之后再檢查下:

npu-smi info -t cpu-num-cfg -i 0 -c 0Current AI CPU number          : 0Current control CPU number     : 4Current data CPU number        : 0

AI CPU變成0說明策略生效了!

接下來開始UnixBench測試,為了縮小Desktop對測試結果的影響,我先切換到命令行模式:

sudo systemctl isolate multi-user.target

然后再把風扇的速度手動調到最大,規避掉過熱導致的降頻:

#首先調速模式必須切換為手動,否則無法更改速度
sudo npu-smi set -t pwm-mode -d 0#調速比調整為100,也就是全速運轉
sudo npu-smi set -t pwm-duty-ratio -d 100sudo reboot

這樣開發板重啟后就進入命令行界面了,關掉多余的進程就可以開始測試了。

測試獲得906.4的綜合得分,比6核心的RK3399 CPU綜合性能強30%,比6核心的Atlas-200 CPU綜合性能強50%。這個結果讓我眼前一亮,本以為區區4核心不夠看的,沒想到這么快就打臉了。雖說分數沒有到夸張的程度,不過作為定位AI的產品也是足夠了。

注:Atlas-200的8核CPU必須至少分給NPU兩個,所以至多只能使用6個核心。

2.硬解碼能力評測

支持2路4K@60HZ的視頻輸出,這個在嵌入式設備上相當出色了,現在同時使用2個顯示器的場景還蠻多的,這個設計無疑迎合了一些人的需求。

這個能力背后需要的正是硬解碼的支持,接下來我們就來看看它的解碼能力到底怎么樣,我們后面在實際場景中演示中會非常依賴硬解碼。以下測試以單路1920x1080@30FPS視頻流為測試對象:

實測H264平均每幀解碼耗時:1-2ms
在這里插入圖片描述

實測H265平均每幀解碼耗時:1-2ms
在這里插入圖片描述
接下來2路4K@60HZ測試,結果平均每路最大12ms:
在這里插入圖片描述
按照60HZ的輸出標準來看的話平均每幀解碼不能超過16ms,測試結果證明符合描述。

注:我本人測試了下jpeg的編碼和解碼速度都在幾毫秒范圍內,應該來講我們做推理用的最多的是H264或H265的解碼能力,jpeg用的并不多,所以就一筆帶過了。

六、推理性能評測

作為定位AI場景的開發板,這是最主要的功能了。接下來就測試下開發板的AI推理能力。

1.目標檢測

目標檢測應該是使用的最多的場景之一了,這里使用YOLOv5s,它是 YOLOv5 系列中較為輕量的網絡模型,適合在邊緣設備部署,進行實時目標檢測。這里檢測以1080p視頻為輸入。

實測每幀處理速度大概是51ms左右:
在這里插入圖片描述
在這里插入圖片描述
關于準確率,除了完全遮擋的情況下無法識別,基本上沒什么問題。真實使用場景中并不是每一幀都要檢測,我之前做的很多項目都是可以通過抽幀解決,所以這個速度能夠滿足一定場景的需求,但如果對幀數要求特別高,就略顯吃力了。

2.OCR

OCR兩階段方法一般包含兩個模型,檢測模型負責找出圖像或視頻中的文字位置,識別模型負責將圖像信息轉換為文本信息。使用的檢測模型為CTPN,識別模型則是SVTR。

以下圖為例:

在這里插入圖片描述

識別結果:

在這里插入圖片描述

cost: 262.5029296875
det result: 536,184,536,200,651,200,651,184
rec result: 開啟開發者之旅
det result: 249,89,249,122,920,122,920,89
rec result: 從入門到進階,開啟昇騰開發者成長之旅

可以看出準確識別出了文字,速度的話是262ms左右,能夠滿足一些場景的使用,不太能滿足對實時性要求很高的場景。

3.圖片卡通化

使用cartoonGAN模型對輸入圖片進行卡通化處理,輸入正常圖像,輸出卡通圖像。

輸入:
在這里插入圖片描述
輸出:
在這里插入圖片描述
從結果可以看出來細節的保留做的還是相當好的。

速度測試:

in pre_process, use time:0.0037565231323242188
in inference, use time:0.2697789669036865
cost: 270.003173828125
in post_process, use time:0.0645606517791748

前處理和后處理幾乎不消耗時間,推理的話消耗270ms左右,能夠滿足一些場景的需求,視頻流場景需要做抽幀處理,不能夠滿足實時檢測。

4.其他模型

諸如人臉檢測和人臉識別這樣的模型基本是能夠做到實時檢測的,有的甚至能夠多路并發。由于模型太多就不一一展示了。

5.模型轉換

比較好的一點是模型是可以直接在開發板上轉換的,別問我為什么這么說,因為我遇到過需要借助其它設備轉換的開發板,這些設備往往需要另外掏錢購買。Yolov5轉換成om模型大概需要5分鐘左右吧,雖說不算快,但也就是喝杯茶的功夫,我覺得可以接受。

七、Camera測試

之前買了個樹莓派4B的時候正好買了個MIPI攝像頭,今天拿過來插香橙派 AI Pro上看看效果。遺憾的是這個攝像頭我當初買的時候不是樹莓派官方原裝攝像頭,我也是抱著試試看的態度,實際是不能正常使用的。如果大家由這類需求的話還是購買官方指定的MIPI攝像頭吧。
在這里插入圖片描述

八、40PIN測試

這個硬件和AI關系不大,一般無人機、機器人這類場景使用的比較多。正好我手上有一些IO設備,就順手看下。遺憾的是我經過多方面測試發現目前GPIO基本上是處于不可用的狀態,經過多方面查找資料依然沒有解決這個問題,只能后續和官方交流后再進一步測試了。

九、說說優缺點

說說優點:

1、高達8TOPS的AI處理器,這個算力可以毫無壓力地跑人臉識別、物體識別、物體分類、追蹤等等場景。

2、存儲的可選性比較多,除了支持Micro SD Card,還支持eMMC和M.2 2280(實測同時支持NVME核SATA兩種協議),還可以把系統燒錄到SSD上體驗飛一般的感覺。

3、支持主動散熱,正常使用過程中風扇幾乎沒有噪音。

4、支持電池供電而且還支持快充,這個功能我以前用過的很多開發板都是沒有的,雖然我可能用的不多,但是有的話無疑是要點個贊。

說說缺點:

1、實際使用過程中遇到過好幾次假死或網絡無故斷連的情況,操作系統的穩定性需要再完善下。


總結

1、香橙派 AIPro為AI而生,如果你正在找一款合適的開發板,不妨考慮下。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17707.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot和Apache Doris實現實時廣告推薦系統

本專題旨在向讀者深度解讀Apache Doris技術,探討其與SpringBoot框架結合在各類實際應用場景中的角色與作用。本專題包括十篇文章,每篇文章都概述了一個特定應用領域,如大數據分析、實時報告系統、電商數據分析等,并通過對需求的解析、解決方案的設計、實際應用示例的展示以…

【Python實戰】你還在沖會員看電影電視劇嗎?Python帶你實現各大資源免費看!

前言 halo,包子們下午好 今天給大家實現一個視頻播放器,可以看任何電影,電視劇,不要再為以后看電視看電影而煩惱,今天是福利文章,相信我絕對有用! 開發工具 Python版本:3.7.8 相…

Java Lambda 會影響性能嗎?

# 測試代碼LamdaTest.java import java.util.*;class LamdaTest {static volatile List<Integer> integers new ArrayList<Integer>();// 普通 for 循環測試public static int forLoopInteger() {int total 0;for (int i 0; i < integers.size(); i) {total…

驅動未來:IT行業的現狀與發展趨勢

前言 隨著技術的不斷進步&#xff0c;IT行業已成為推動全球經濟和社會發展的關鍵力量。從云計算、大數據、人工智能到物聯網、5G通信和區塊鏈&#xff0c;這些技術正在重塑我們的生活和工作方式。本文將探討IT行業的現狀和未來發展趨勢&#xff0c;并邀請行業領袖、技術專家和…

Follow Your Pose: Pose-Guided Text-to-Video Generation using Pose-Free Videos

清華深&港科&深先進&Tencent AAAI24https://github.com/mayuelala/FollowYourPose 問題引入 本文的任務是根據文本來生成高質量的角色視頻&#xff0c;并且可以通過pose來控制任務的姿勢&#xff1b;當前缺少video-pose caption數據集&#xff0c;所以提出一個兩…

Java的上下轉型與多態

上下轉型 首先&#xff0c;定義一個父類Person // 父類 class Person {public void run(){System.out.println("person 中的 run");}public void eat(){System.out.println("Person 中的 eat");}}接著定義一個繼承自父類的子類Student: // 子類 class S…

拿捏數據結構- 鏈式二叉樹

鏈式二叉樹的概念&#xff1a; 鏈式二叉樹解決的是非完全二叉樹解決不了的問題 什么意思呢&#xff0c;簡單的說就是&#xff0c;鏈式二叉樹 可以是下面三種二叉樹 但是非鏈式二叉樹只能是前兩種 鏈式二叉樹的存儲 節點結構&#xff1a;首先定義一個結構體或類來表示二叉樹的節…

機器學習-7-機器學習中常用的可視化方式總結

參考通透!!監督學習和無監督學習全總結! 參考機器學習中的可視化 1 監督學習和無監督學習 監督學習和無監督學習,它們之間的主要區別在于訓練數據的標簽信息是否提供。 1.1 概述 一、監督學習(Supervised Learning): (1)標簽信息: 監督學習使用帶有標簽的訓練數據。這…

單元測試的實現方式

單元測試的實現方式包括&#xff1a;人工靜態檢查、動態執行跟蹤 人工靜態檢查 人工靜態檢查是一種單元測試實現方式&#xff0c;它主要依賴開發人員的人工代碼審查和靜態分析工具來識別潛在的代碼問題。 代碼審查&#xff1a;開發人員通過仔細檢查代碼來發現潛在的問題。他…

不怕YOLOv10高歌猛進,我有YOLOv8穩扎穩打

YOLOv10 出來有幾天時間了&#xff0c;這次我沒有選擇第一時間出文章解析&#xff0c;如此頻繁的發布數字版本的 YOLO 著實讓人頭疼&#xff0c;雖然數字的更新并非舊版技術的過時&#xff0c; 但是這肯定會讓很多在校同學增加很多焦慮情緒。這里還是請大家辯證看待。 v10 這次…

解密消息隊列的復制魔法:RocketMQ vs Kafka

解密消息隊列的復制魔法&#xff1a;RocketMQ vs Kafka 今天我們來聊聊一個在消息隊列世界中至關重要的主題&#xff1a;消息復制。消息復制不僅能防止消息丟失&#xff0c;還能確保系統的高可用性。即使某個節點宕機了&#xff0c;其他節點依然可以繼續工作。那么&#xff0c…

區間選點問題-貪心-C++

問題&#xff1a; 給定 &#x1d441; 個閉區間 [ai,bi]&#xff0c;請你在數軸上選擇盡量少的點&#xff0c;使得每個區間內至少包含一個選出的點。 輸出選擇的點的最小數量。 位于區間端點上的點也算作區間內。 輸入格式 第一行包含整數 &#x1d441;&#xff0c;表示區間數…

CSS文本粒子動畫特效之愛心粒子文字特效-Canvas

1. 效果圖 2.完整代碼 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>body,html {margin: 0;paddin…

order by工作過程和優化

工作過程 order by 是由優化器決定的&#xff0c;如果優化器認為filesort速度快&#xff0c;那么走filesort排序&#xff0c;如果優化器認為索引速度快&#xff0c;那么走索引排序。

有一個3x4的矩陣,求矩陣中所有元素中的最大值。要求用函數處理

解此題的算法已在之前的文章中介紹&#xff0c;詳見&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/139181787 編寫程序&#xff1a; 運行結果&#xff1a;

常用的字符串方法

length() 返回字符串的長度。 let str "HelloWorld"; console.log(str.length); // 10charAt() 返回指定位置的字符。參數&#xff1a;位置索引。 let str "HelloWorld"; console.log(str.charAt(5)); // Wconcat() 連接字符串。參數&#xff1a;一…

昵稱生成器

package mainimport ("math/rand" )// 隨機昵稱 形容詞 var nicheng_tou []string{"迷你的", "鮮艷的", "飛快的", "真實的", "清新的", "幸福的", "可耐的", "快樂的", "冷…

卷徑計算(PID輸出補償法 SCL源代碼)

卷徑計算有很多方法,這里我們提供另一個思路,這里我們采用的是通過速度控制間接控制張力通過線速度和系統卷徑我們可以計算出我們的速度前饋量(主速度)。具體收放卷前饋量計算可以參考下面文章鏈接: 收放卷前饋量計算FC(梯形圖+SCL代碼)-CSDN博客文章瀏覽閱讀584次。這篇博…

【數據分析面試】55. 尋找雙詞組 (Python)

題目&#xff1a; 尋找雙詞組 &#xff08;Python&#xff09; 編寫一個名為 find_bigrams 的函數&#xff0c;該函數接收一個句子或段落的字符串&#xff0c;并按順序返回其所有雙詞組的列表。 注意&#xff1a; 雙詞組是指連續的兩個單詞。 示例&#xff1a; 輸入&#x…

JavaScript(ES6)入門

ES6 1、介紹 ECMAScript 6&#xff08;簡稱ES6&#xff09;是于2015年6月正式發布的JavaScript 語言的標準&#xff0c;正式名為ECMAScript 2015&#xff08;ES2015&#xff09;。它的目標是使得JavaScript語言可以用來編寫復雜的大型應用程序&#xff0c;成為企業級開發語言。…