0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

開(kāi)發(fā)者說(shuō) | 地平線程序員奶爸帶你玩轉(zhuǎn)機(jī)器人開(kāi)發(fā)平臺(tái) —— 第一期 手勢(shì)控制

地瓜機(jī)器人 ? 2022-07-19 14:30 ? 次閱讀

在地平線工作了4年多了,原本是沖著地平線機(jī)器人,機(jī)器人這三個(gè)字來(lái)的地平線,結(jié)果很長(zhǎng)一段時(shí)間地平線都沒(méi)搞機(jī)器人,我倒是給孩子買(mǎi)了不少機(jī)器人。

比如這個(gè),

poYBAGLWJHuAI853ADwECV7XXqY206.png

手勢(shì)操控機(jī)器人,東西不錯(cuò),很便宜,但是得帶個(gè)手套,一點(diǎn)不AI

再比如這個(gè),

poYBAGLWJIeAP3JRABQeqNE94CA809.png

也很便宜,能語(yǔ)音對(duì)話,遙控下能跑跑,但也一點(diǎn)不AI。

身為一個(gè)地平線資深程序員奶爸,手里有大把現(xiàn)成的AI武器,必須得用上,恰好地平線剛剛發(fā)布了機(jī)器人開(kāi)發(fā)平臺(tái)Horizon Hobot Platform,我準(zhǔn)備把里面的各種算法都裝進(jìn)一個(gè)機(jī)器人里面(都是公開(kāi)的哦),不管孩子喜不喜歡,但要先體現(xiàn)老爸的厲害,先從最簡(jiǎn)單的手勢(shì)控制搞起。

1 功能介紹

大家先看一下最終實(shí)現(xiàn)的功能。

  • “666手勢(shì)”手勢(shì)控制機(jī)器人前進(jìn)
  • “yeah”手勢(shì)控制機(jī)器人后退
  • “大拇指向右”手勢(shì)控制機(jī)器人右轉(zhuǎn)
  • “大拇指向左”手勢(shì)控制機(jī)器人左轉(zhuǎn)

(里面的語(yǔ)音播報(bào)是示意,下期給大家講語(yǔ)音控制機(jī)器人)

pYYBAGLVO72AVfAiAF9MSVBqSB4161.png

從最終實(shí)現(xiàn)的功能效果來(lái)看,機(jī)器人能夠迅速響應(yīng)人手的控制指令,得益于X3派上5Tops算力的BPU可以實(shí)現(xiàn)低延遲(50ms左右)、高幀率(滿(mǎn)幀30fps)、遠(yuǎn)距離(>=5m)的算法推理能力。

開(kāi)始碼代碼前,先來(lái)簡(jiǎn)單分析一下手勢(shì)操控機(jī)器人需要具備哪些基本模塊。

  1. 傳感

對(duì)于手勢(shì)識(shí)別這類(lèi)基于視覺(jué)的AI算法應(yīng)用,首先需要有視覺(jué)傳感器來(lái)捕捉圖像數(shù)據(jù)。

  1. 感知

獲取到傳感器發(fā)布的圖像后,通過(guò)視覺(jué)算法進(jìn)行推理,檢測(cè)到人手并且識(shí)別出手勢(shì),實(shí)現(xiàn)感知的能力。

  1. 交互

識(shí)別出手勢(shì)之后,需要定義并實(shí)現(xiàn)對(duì)應(yīng)不同手勢(shì)的功能應(yīng)用,如使用“大拇指向右”手勢(shì)控制機(jī)器人向右轉(zhuǎn)動(dòng)。

  1. 控制

根據(jù)“交互”模塊輸出的控制指令,實(shí)現(xiàn)對(duì)機(jī)器人的機(jī)械控制

  1. 機(jī)器人本體

當(dāng)然還需要一個(gè)具備運(yùn)動(dòng)能力的機(jī)器人本體,接收控制指令并控制電機(jī)運(yùn)動(dòng),實(shí)現(xiàn)最終的通過(guò)手勢(shì)控制機(jī)器人運(yùn)動(dòng)的效果。

地平線發(fā)布的機(jī)器人平臺(tái)Horizon Hobot Platform(HHP)內(nèi)置了豐富易用的機(jī)器人開(kāi)發(fā)組件,包含搭建一個(gè)智能機(jī)器人應(yīng)用(如機(jī)器人手勢(shì)控制)所涉及到的所有功能模塊,完全開(kāi)源免費(fèi),并允許開(kāi)發(fā)者二次開(kāi)發(fā),接下來(lái)開(kāi)始搞起。

2 準(zhǔn)備工作

準(zhǔn)備搭建機(jī)器人手勢(shì)控制應(yīng)用案例的硬件設(shè)備和軟件包。

2.1 硬件

硬件包括:

  1. X3派
poYBAGLWJJeAVOHXAAZP6ysBK9A861.png
  1. F37 MIPI攝像頭
poYBAGLWJK-AWjStAADYCvQxdvQ924.png
  1. 機(jī)器人

X3派和HHP適配了本末雙足機(jī)器人和小R科技的麥輪小車(chē)。這邊為了讓孩子覺(jué)得機(jī)器人足夠高大上,就用本末的輪足機(jī)器人來(lái)介紹,沒(méi)有的同學(xué)也不用擔(dān)心,文章后面會(huì)介紹自己搭建機(jī)器人的方式。

pYYBAGLWJL-AAZ8nAAOy91ERXgQ719.png
  1. 其他配件
    1. USB Type C接口電源線。至少搭配5V 直流 2A,用于X3派供電。
    2. 串口線。連接方式如下:
pYYBAGLWJPWAEurXAAzs72Tj73U694.png
  1. TF存儲(chǔ)卡和讀卡器。旭日X3派開(kāi)發(fā)板采用TF存儲(chǔ)卡作為系統(tǒng)啟動(dòng)介質(zhì),推薦使用至少8GB容量、速率C10以上的TF存儲(chǔ)卡,以便滿(mǎn)足Ubuntu系統(tǒng)及更多應(yīng)用功能包對(duì)存儲(chǔ)空間的需求。

2.2 安裝系統(tǒng)

參考旭日X3派的用戶(hù)手冊(cè)的安裝系統(tǒng)章節(jié)。

2.3 系統(tǒng)配置

配置X3派的無(wú)線網(wǎng)絡(luò),參考X3派的用戶(hù)手冊(cè)的無(wú)線網(wǎng)絡(luò)章節(jié)。

無(wú)線網(wǎng)絡(luò)配置成功之后,查詢(xún)IP地址:

poYBAGLWJSWAYIuxAAE-d_Rnorg810.png

可以看到,X3派的無(wú)線網(wǎng)路分配的IP地址為192.168.1.147,下面開(kāi)始使用這個(gè)地址和root賬號(hào)(密碼為root)通過(guò)ssh遠(yuǎn)程連接到X3派,登錄成功后的狀態(tài)如下:

pYYBAGLWJW6AbRqeAABKldkb_58374.png

2.4 安裝HHP

使用apt命令通過(guò)DEB包安裝HHP。

登錄旭日X3派ssh root@192.168.1.147,執(zhí)行命令sudo apt install hhp,安裝過(guò)程如下:

root@ubuntu:~# sudo apt install hhp Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: hhp0 upgraded, 1 newly installed, 0 to remove and 52 not upgraded. Need to get 384 MB of archives. After this operation, 512 MB of additional disk space will be used. Get:1 http://42.62.85.28/ubuntu-ports focal/main arm64 hhp arm64 1.0.1 [384 MB] Fetched 384 MB in 6min 43s (954 kB/s) Selecting previously unselected package hhp.(Reading database ... 110406 files and directories currently installed.) Preparing to unpack .../archives/hhp_1.0.1_arm64.deb ... Unpacking hhp (1.0.1) ... Setting up hhp (1.0.1) ... Generating locales (this might take a while)... en_US.ISO-8859-1... done en_US.UTF-8... done Generation complete.

查看/opt目錄下文件:

root@ubuntu:/userdata# ls /opt/ tros

可以看到HorizonHobotPlatform(HHP)已安裝在/opt目錄下,說(shuō)明安裝成功。

至此,準(zhǔn)備工作結(jié)束,下面開(kāi)始使用這些硬件設(shè)備和軟件包搭建機(jī)器人手勢(shì)控制App。

3 使用介紹

接下來(lái)開(kāi)始搞各個(gè)功能模塊,再一步步組裝起來(lái),分別驗(yàn)證其功能。

3.1 安裝和測(cè)試F37攝像頭

將F37攝像頭通過(guò)MIPI線連接到X3派上,連接方式如下:

pYYBAGLWJbWAGCn5AAJ9usVh2eY614.png

直接使用HHP中的ROS package測(cè)試F37的功能。以下通過(guò)腳本啟動(dòng)攝像頭采集,圖像編碼,web展示功能包,實(shí)現(xiàn)將F37攝像頭采集到的圖像進(jìn)行編碼后,通過(guò)PC端web瀏覽器實(shí)時(shí)查看采集到的圖像。

登錄旭日X3派ssh root@192.168.1.147后,在終端(以下默認(rèn)終端都是通過(guò)ssh登錄)中輸入以下命令啟動(dòng):

# 配置 TogetherROS 環(huán)境: source /opt/tros/local_setup.bash # 啟動(dòng)腳本 ros2 launch websocket hobot_websocket.launch.py

啟動(dòng)成功的終端狀態(tài)如下:

poYBAGLWJfaAFxFsAARi93E3Ohs054.png

攝像頭開(kāi)始采集圖像并對(duì)外發(fā)布圖像消息。

PC瀏覽器(chrome/firefox/edge)輸入旭日X3派IP地址,即可查看F37實(shí)時(shí)采集到的圖像效果:

pYYBAGLWJnSAMOdcAIzwNeIUozQ567.png

說(shuō)明F37攝像頭已安裝成功并能夠?qū)ν獍l(fā)布圖像消息。

3.2 測(cè)試手勢(shì)識(shí)別算法和交互功能

X3派上打開(kāi)一個(gè)終端,啟動(dòng)手勢(shì)識(shí)別和控制的腳本:

# 配置TogetherROS環(huán)境 source /opt/tros/setup.bash # 從TogetherROS的安裝路徑中拷貝出運(yùn)行示例需要的配置文件。 cp -r /opt/tros/lib/mono2d_body_detection/config/ . cp -r /opt/tros/lib/hand_lmk_detection/config/ . cp -r /opt/tros/lib/hand_gesture_detection/config/ . #啟動(dòng)launch文件 ros2 launch gesture_control hobot_gesture_control.launch.py

啟動(dòng)成功后,對(duì)著F37攝像頭做出"Victory"的手勢(shì),終端輸出如下信息

[gesture_control-7] [WARN] [1652965757.159500951] [GestureControlEngine]: frame_ts_ms: 3698315358, track_id: 2, tracking_sta: 1, gesture: 3 [gesture_control-7] [WARN] [1652965757.159660358] [GestureControlEngine]: do move, direction: 0, step: 0.500000 [gesture_control-7] [WARN] [1652965757.211420964] [GestureControlEngine]: frame_ts_ms: 3698315425, track_id: 2, tracking_sta: 1, gesture: 3 [gesture_control-7] [WARN] [1652965757.211624899] [GestureControlEngine]: do move, direction: 0, step: 0.500000 [gesture_control-7] [WARN] [1652965757.232051230] [GestureControlEngine]: frame_ts_ms: 3698315457, track_id: 2, tracking_sta: 1, gesture: 3 [gesture_control-7] [WARN] [1652965757.232207513] [GestureControlEngine]: do move, direction: 0, step: 0.500000

以上log顯示ID為2(track_id: 2)的人手通過(guò)Victory手勢(shì)(gesture: 3)控制機(jī)器人(tracking_sta: 1)以0.5m/s的速度后退運(yùn)動(dòng)(do move, direction: 1, step: 0.500000)。

在PC端瀏覽器上會(huì)實(shí)時(shí)渲染顯示攝像頭采集到的圖像,人體、人頭、人臉和人手檢測(cè)框和ID,人手關(guān)鍵點(diǎn)和手勢(shì)結(jié)果,以及實(shí)時(shí)的性能統(tǒng)計(jì)數(shù)據(jù),如下圖:

pYYBAGLWJoGAT0QGAAmZ4s1wP-w505.png

其中瀏覽器下方顯示的fps為實(shí)時(shí)的AI推理輸出的幀率,和F37攝像頭采集圖像的幀率30fps一致。ai_delay(單位為毫秒)為51,表示的是單幀推理的延遲,從傳感Node發(fā)布圖像數(shù)據(jù)開(kāi)始,經(jīng)過(guò)多個(gè)感知算法Node推理后,發(fā)布包含手勢(shì)結(jié)果的AI msg的耗時(shí)。

同時(shí)測(cè)試了遠(yuǎn)距離情況下手勢(shì)識(shí)別的效果,在距離攝像頭5米的情況下,依然能夠穩(wěn)定識(shí)別出手勢(shì),如下圖所示:

pYYBAGLWJpyATKe4AAYgqSQqnK8722.png

經(jīng)過(guò)以上測(cè)試,說(shuō)明在X3派上,HHP的手勢(shì)識(shí)別算法運(yùn)行成功,并且算法可以實(shí)現(xiàn)低延遲(51ms)、高幀率(滿(mǎn)幀30fps)、遠(yuǎn)距離(>=5m)的算法推理效果,體現(xiàn)了X3 BPU強(qiáng)大的算力。

手勢(shì)識(shí)別算法測(cè)試完成后,接著測(cè)試手勢(shì)交互功能。

X3派上另起一個(gè)終端,執(zhí)行如下命令查詢(xún)X3派上的話題列表:

# 配置TogetherROS環(huán)境 source /opt/tros/setup.bash ros2 topic list

輸出如下:

pYYBAGLWJs-AWnzhAABGB30_QsQ793.png

其中/cmd_vel話題是手勢(shì)控制節(jié)點(diǎn)發(fā)布的控制命令消息。在當(dāng)前終端執(zhí)行ros2 topic echo /cmd_vel命令查詢(xún)X3派上的話題信息,對(duì)著F37攝像頭做出"Victory"的手勢(shì)時(shí),終端輸出如下:

poYBAGLWJt-AF1nKAAA0kBoyvoo702.png

可以看到,做出表示后退的“Victory”手勢(shì)時(shí),發(fā)布出的/cmd_vel話題的linear x數(shù)據(jù)為-0.5,表示以0.5m/s的速度后退。

說(shuō)明手勢(shì)識(shí)別算法和交互功能的軟件包已安裝成功,并能夠通過(guò)/cmd_vel話題對(duì)外發(fā)布機(jī)器人運(yùn)動(dòng)控制消息。

3.3 將X3派安裝到機(jī)器人上

將X3派安裝到機(jī)器人上,并測(cè)試在X3派上通過(guò)發(fā)布/cmd_vel話題控制機(jī)器人運(yùn)動(dòng)的功能。

連接了F37攝像頭的X3派直接固定在機(jī)器人上,并將機(jī)器人的USB控制接口插到X3派上。

安裝效果如下:

poYBAGLWJyCAZ8c9ABvTNz07oIM337.png

對(duì)于支持使用ROS開(kāi)發(fā)的機(jī)器人,一般會(huì)提供一個(gè)基于ROS開(kāi)發(fā)的機(jī)器人運(yùn)動(dòng)控制Node,功能為訂閱/cmd_vel話題的控制消息(ROS2中定義的用于機(jī)器人控制的消息,消息類(lèi)型為geometry_msgs/msg/Twist),根據(jù)控制協(xié)議,通過(guò)USB等接口向機(jī)器人發(fā)送運(yùn)動(dòng)控制指令,實(shí)現(xiàn)控制機(jī)器人運(yùn)動(dòng)的目的。

本文使用的本末雙足機(jī)器人使用的是USB接口,并提供了運(yùn)行在X3派上的運(yùn)動(dòng)控制package,package訂閱到/cmd_vel話題的控制消息后,通過(guò)USB向機(jī)器人下發(fā)控制指令,實(shí)現(xiàn)對(duì)機(jī)器人的控制。

在X3派上啟動(dòng)本末雙足機(jī)器人運(yùn)行控制Node。打開(kāi)一個(gè)終端,執(zhí)行如下命令:

# 配置TogetherROS環(huán)境 source /opt/tros/setup.bash #啟動(dòng)本末機(jī)器人運(yùn)動(dòng)控制package ros2 run diablo_sdk ros_bridge_example

執(zhí)行成功后終端中輸出如下信息:

?code=NDZkOTFmNGQ4Nzg3MzVhMzE3MmYwNWU3Y2Q0ZDEwZmRfb1U0eUcxdjgzdEVKeFBCNFhwREQyS3lCRHFLVEpna25fVG9rZW46Ym94Y24xeEdlTGpLdnFnRkdwb0lkd0tmVm9oXzE2NTgxNDA1MjQ6MTY1ODE0NDEyNF9WNA

X3派上重新打開(kāi)一個(gè)終端,通過(guò)發(fā)布/cmd_vel話題消息控制機(jī)器人以0.3r/s的速度轉(zhuǎn)動(dòng):

# 配置TogetherROS環(huán)境 source /opt/tros/setup.bash ros2 topic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.3}}'

執(zhí)行成功后終端中輸出如下信息:

pYYBAGLWJzWAAtpgAABABX_Q0O4707.png

機(jī)器人收到控制指令后轉(zhuǎn)動(dòng)的效果如下:

pYYBAGLWJ0yAazCoAABOxcXYJpk135.png

說(shuō)明機(jī)器人能夠按照發(fā)布的控制命令消息正確的實(shí)現(xiàn)運(yùn)動(dòng)。

3.4 對(duì)于其他機(jī)器人應(yīng)該怎么安裝

如果手里是其他的移動(dòng)機(jī)器人,例如有一個(gè)使用樹(shù)莓派或者Jetson Nano作為上位機(jī)的機(jī)器人,也可以將X3派安裝在機(jī)器人上,代替樹(shù)莓派或者Jetson Nano,實(shí)現(xiàn)控制機(jī)器人運(yùn)動(dòng)。

安裝方法如下:

  1. 編譯可以運(yùn)行在X3派上的運(yùn)動(dòng)控制package
    1. X3派上安裝ROS2軟件系統(tǒng)構(gòu)建和編譯工具:

apt update apt-get install python3-catkin-pkg pip install empy pip install -U colcon-common-extensions

  1. 將原先運(yùn)行在樹(shù)莓派或者Jetson Nano上的機(jī)器人運(yùn)動(dòng)控制ROS2 package源碼拷貝到X3派上。
  2. 在X3派上,package源碼工程所在路徑下,直接使用source /opt/tros/setup.bash; colcon build命令編譯package。
  3. 如果原先運(yùn)動(dòng)控制package是基于ROS1開(kāi)發(fā),源碼需要適配到ROS2。只需要適配"cmd_vel"話題消息的訂閱和處理,如果原先的ROS1 package中有其他功能,可以先不關(guān)注。
  4. 安裝
    1. 將X3派固定在機(jī)器人上,如果空間有限,可以將原先的樹(shù)莓派或者Jetson Nano拆除。
    2. 使用USB Type C給X3派供電,如果機(jī)器人上無(wú)Type C供電輸出,也可以使用移動(dòng)電源(輸出至少5V&直流 2A)給X3派供電。
    3. 將機(jī)器人的USB控制接口插到X3派上。
  5. 測(cè)試
    1. X3派上啟動(dòng)新編譯的機(jī)器人運(yùn)動(dòng)控制package。
    2. X3派上重新打開(kāi)一個(gè)終端,通過(guò)發(fā)布/cmd_vel話題消息控制機(jī)器人以0.3r/s的速度轉(zhuǎn)動(dòng):

# 配置TogetherROS環(huán)境 source /opt/tros/setup.bash ros2 topic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.3}}'

如果機(jī)器人正常轉(zhuǎn)動(dòng),說(shuō)明X3派安裝成功。

4 完整的機(jī)器人手勢(shì)控制效果

下面開(kāi)始測(cè)試完整的機(jī)器人手勢(shì)控制功能。

  1. X3派上打開(kāi)一個(gè)終端,啟動(dòng)手勢(shì)識(shí)別和控制腳本

# 配置TogetherROS環(huán)境 source /opt/tros/setup.bash # 從TogetherROS的安裝路徑中拷貝出運(yùn)行示例需要的配置文件。 cp -r /opt/tros/lib/mono2d_body_detection/config/ . cp -r /opt/tros/lib/hand_lmk_detection/config/ . cp -r /opt/tros/lib/hand_gesture_detection/config/ . #啟動(dòng)launch文件 ros2 launch gesture_control hobot_gesture_control.launch.py

  1. X3派上打開(kāi)一個(gè)終端,啟動(dòng)機(jī)器人運(yùn)動(dòng)控制Node

# 配置TogetherROS環(huán)境 source /opt/tros/setup.bash #啟動(dòng)本末機(jī)器人運(yùn)動(dòng)控制Node ros2 run diablo_sdk ros_bridge_example

  1. 通過(guò)手勢(shì)控制機(jī)器人運(yùn)動(dòng)

App的控制效果視頻如下:

pYYBAGLVO72AVfAiAF9MSVBqSB4161.png

5 原理分析

第4章節(jié)中,在X3派的兩個(gè)終端中分別啟動(dòng)了hobot_gesture_control.launch.py腳本和運(yùn)動(dòng)控制Node,實(shí)現(xiàn)了通過(guò)手勢(shì)控制機(jī)器人的效果,本章節(jié)對(duì)實(shí)現(xiàn)的原理進(jìn)行分析。

5.1 App運(yùn)行時(shí)的Node和Topic信息

對(duì)于一個(gè)基于ROS開(kāi)發(fā)的App,首先會(huì)想到這個(gè)App在運(yùn)行時(shí)有哪些Node,這些Node發(fā)布和訂閱了哪些Topic,以及這些Node之間的關(guān)聯(lián)。

在X3派上使用ros2的命令行工具查詢(xún)?cè)O(shè)備上運(yùn)行的Node和Topic信息:

root@ubuntu:~# source /opt/tros/setup.bash root@ubuntu:~# ros2 node list /gesture_control /gesture_control_parameter_node /hand_gesture_det /hand_lmk_det /hobot_codec1656779158649265431 /mipi_cam /mono2d_body_det /ros_bridge_example /transform_listener_impl_558896ba50 /websocket root@ubuntu:~# ros2 topic list /cmd_vel /hbmem_img080a1309022201080401012021072312 /hobot_hand_gesture_detection /hobot_hand_lmk_detection /hobot_mono2d_body_detection /image_jpeg /image_raw /imu/data_raw /odom /parameter_events /quat_odom /raw_odom /rosout /tf /tf_static

查詢(xún)到X3派上運(yùn)行著多個(gè)Node,這些ROS2 Node之間是基于pub&sub機(jī)制通信,通過(guò)topic將這些Node串聯(lián)起來(lái)形成一個(gè)pipeline。

此App運(yùn)行時(shí)Node以及Topic信息比較多,看不出Node之間的關(guān)聯(lián)??梢栽赑C端通過(guò)rqt(PC端需要安裝ROS2 Foxy版本,rqt,以及PC需要和X3派處于同一網(wǎng)段)的Node Graph功能可以可視化的展示X3派上運(yùn)行的Node,Node發(fā)布和訂閱的topic,以及Node之間的連接關(guān)系,如下圖:

pYYBAGLWJ3iAPqxNAACIneNR7ek685.png

其中橢圓形框內(nèi)為Node名,矩形框內(nèi)為topic名。

可以看到,整個(gè)graph(pipeline)以mipi_cam Node(圖像采集和發(fā)布)為起點(diǎn),websocket Node(序列化圖片和AI結(jié)果,用于可視化展示)和ros_bridge_example Node(機(jī)器人運(yùn)動(dòng)控制)為終點(diǎn),起點(diǎn)和終點(diǎn)之間連接著多個(gè)Node。

這些Node中ros_bridge_example Node是通過(guò)ros2 run diablo_sdk ros_bridge_example命令啟動(dòng),其余Node都是通過(guò)hobot_gesture_control.launch.py腳本啟動(dòng)。

5.2 App的Node介紹

對(duì)于復(fù)雜的包含多個(gè)Node的應(yīng)用,ROS2提供了使用啟動(dòng)腳本通過(guò)launch批量啟動(dòng)Node的功能。

手勢(shì)控制機(jī)器人App使用hobot_gesture_control.launch.py腳本來(lái)啟動(dòng)這些Node,腳本內(nèi)容如下:

import os from launch import LaunchDescription from launch_ros.actions import Node from launch.actions import IncludeLaunchDescription from launch.launch_description_sources import PythonLaunchDescriptionSource from ament_index_python import get_package_share_directory def generate_launch_description(): web_service_launch_include = IncludeLaunchDescription( PythonLaunchDescriptionSource( os.path.join( get_package_share_directory('websocket'), 'launch/hobot_websocket_service.launch.py')) ) return LaunchDescription([ web_service_launch_include, # 啟動(dòng)圖片發(fā)布pkg Node( package='mipi_cam', executable='mipi_cam', output='screen', parameters=[ {"out_format": "nv12"}, {"image_width": 960}, {"image_height": 544}, {"io_method": "shared_mem"}, {"video_device": "F37"} ], arguments=['--ros-args', '--log-level', 'error'] ), # 啟動(dòng)jpeg圖片編碼&發(fā)布pkg Node( package='hobot_codec', executable='hobot_codec_republish', output='screen', parameters=[ {"channel": 1}, {"in_mode": "shared_mem"}, {"in_format": "nv12"}, {"out_mode": "ros"}, {"out_format": "jpeg"}, {"sub_topic": "/hbmem_img"}, {"pub_topic": "/image_jpeg"} ], arguments=['--ros-args', '--log-level', 'error'] ), # 啟動(dòng)單目rgb人體、人頭、人臉、人手框和人體關(guān)鍵點(diǎn)檢測(cè)pkg Node( package='mono2d_body_detection', executable='mono2d_body_detection', output='screen', parameters=[ {"ai_msg_pub_topic_name": "/hobot_mono2d_body_detection"} ], arguments=['--ros-args', '--log-level', 'error'] ), # 啟動(dòng)人手關(guān)鍵點(diǎn)檢測(cè)pkg Node( package='hand_lmk_detection', executable='hand_lmk_detection', output='screen', parameters=[ {"ai_msg_sub_topic_name": "/hobot_mono2d_body_detection"}, {"ai_msg_pub_topic_name": "/hobot_hand_lmk_detection"} ], arguments=['--ros-args', '--log-level', 'error'] ), # 啟動(dòng)web展示pkg Node( package='websocket', executable='websocket', output='screen', parameters=[ {"image_topic": "/image_jpeg"}, {"image_type": "mjpeg"}, {"smart_topic": "/hobot_hand_gesture_detection"} ], arguments=['--ros-args', '--log-level', 'error'] ), # 啟動(dòng)手勢(shì)識(shí)別pkg Node( package='hand_gesture_detection', executable='hand_gesture_detection', output='screen', parameters=[ {"ai_msg_sub_topic_name": "/hobot_hand_lmk_detection"}, {"ai_msg_pub_topic_name": "/hobot_hand_gesture_detection"} ], arguments=['--ros-args', '--log-level', 'error'] ), # 啟動(dòng)手勢(shì)交互pkg Node( package='gesture_control', executable='gesture_control', output='screen', parameters=[ {"ai_msg_sub_topic_name": "/hobot_hand_gesture_detection"}, {"twist_pub_topic_name": "/cmd_vel"}, {"activate_wakeup_gesture": 0}, {"track_serial_lost_num_thr": 100}, {"move_step": 0.5}, {"rotate_step": 0.5} ], arguments=['--ros-args', '--log-level', 'info'] ) ])

腳本中指定了多個(gè)Node,其中每個(gè)Node中的package配置項(xiàng)表示Node名,可以看到腳本中配置的Node名和5.1章節(jié)中查出來(lái)的一致。

在第1章節(jié),分析了機(jī)器人手勢(shì)操控App所需要具備的功能模塊,下面按照這些功能模塊對(duì)Node進(jìn)行分析。

  1. 傳感

使用了HHP中的Hobot Sensor組件中的mipi_cam Node,同時(shí)指定了Node的參數(shù)

  • "out_format":發(fā)布圖片的格式為"nv12"
  • "image_width":圖片分辨率寬為960
  • "image_height":圖片分辨率高為544
  • "io_method":發(fā)布出來(lái)的圖片傳輸方式為"shared_mem",即共享內(nèi)存方式,對(duì)應(yīng)消息的topic為"hbmem_img"
  • "video_device":指定了使用的MIPI攝像頭類(lèi)型為"F37",表示F37攝像頭

參數(shù)指定了使用F37攝像頭,發(fā)布的圖片格式和分辨率可以直接用于算法推理,其中通過(guò)共享內(nèi)存方式發(fā)布圖片,可以極大地降低系統(tǒng)負(fù)載和傳輸延遲。

  1. 感知

使用了HHP中的Boxs算法倉(cāng)庫(kù),訂閱Hobot Sensor(mipi_cam Node)發(fā)布的圖像數(shù)據(jù)后,通過(guò)視覺(jué)算法進(jìn)行推理,檢測(cè)到人手并且識(shí)別出手勢(shì)。使用到的算法包括:

(1)人體檢測(cè)和跟蹤

人體檢測(cè)和跟蹤算法Node訂閱Hobot Sensor發(fā)布的圖像消息,利用BPU處理器進(jìn)行AI推理,發(fā)布包含人體、人頭、人臉、人手框和人體關(guān)鍵點(diǎn)檢測(cè)結(jié)果的AI msg,并通過(guò)多目標(biāo)跟蹤(multi-target tracking,即MOT)功能,實(shí)現(xiàn)檢測(cè)框的跟蹤和ID分配。

Node對(duì)應(yīng)package名為'mono2d_body_detection',同時(shí)指定了Node的參數(shù):

  • "ai_msg_pub_topic_name":發(fā)布包含人手檢測(cè)框信息的AI感知結(jié)果的topic名為"/hobot_mono2d_body_detection"

(2)人手關(guān)鍵點(diǎn)檢測(cè)

人手關(guān)鍵點(diǎn)檢測(cè)算法Node訂閱Hobot Sensor發(fā)布的圖像消息和人體檢測(cè)和跟蹤算法示例發(fā)布的包含人手框信息的AI msg,利用BPU處理器進(jìn)行AI推理,發(fā)布包含人手關(guān)鍵點(diǎn)信息的AI msg。

Node對(duì)應(yīng)package名為'hand_lmk_detection',同時(shí)指定了Node的參數(shù):

  • "ai_msg_sub_topic_name": 訂閱包含人手檢測(cè)框信息的topic名為"/hobot_mono2d_body_detection"
  • "ai_msg_pub_topic_name":發(fā)布包含人手關(guān)鍵點(diǎn)信息的的AI感知結(jié)果topic名為"/hobot_hand_lmk_detection"

(3)手勢(shì)識(shí)別

手勢(shì)識(shí)別算法Node訂閱人手關(guān)鍵點(diǎn)檢測(cè)算法示例發(fā)布的包含人手框、人手關(guān)鍵點(diǎn)信息的AI msg,利用BPU處理器進(jìn)行AI推理,發(fā)布包含手勢(shì)信息的AI msg。

Node對(duì)應(yīng)package名為'hand_gesture_detection',同時(shí)指定了Node的參數(shù):

  • "ai_msg_sub_topic_name": 訂閱包含人手關(guān)鍵點(diǎn)信息的topic名為"/hobot_hand_lmk_detection"
  • "ai_msg_pub_topic_name":發(fā)布包含手勢(shì)信息的的AI感知結(jié)果topic名為"/hobot_hand_gesture_detection"

手勢(shì)識(shí)別算法支持識(shí)別的手勢(shì)類(lèi)別,發(fā)布的AI msg中對(duì)應(yīng)的手勢(shì)結(jié)果數(shù)值如下:

手勢(shì)類(lèi)別手勢(shì)結(jié)果數(shù)值
無(wú)手勢(shì)0
ThumbUp/豎起大拇指2
Victory/“V”手勢(shì)3
Mute/“噓”手勢(shì)4
Palm/手掌5
Okay/OK手勢(shì)11
ThumbLeft/大拇指向左12
ThumbRight /大拇指向右13
Awesome/666手勢(shì)14
  1. 交互

手勢(shì)控制策略Node訂閱手勢(shì)識(shí)別算法示例發(fā)布的包含手勢(shì)信息的AI msg,根據(jù)手勢(shì)類(lèi)型發(fā)布前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)的控制消息,實(shí)現(xiàn)控制機(jī)器人運(yùn)動(dòng)。

Node發(fā)布的運(yùn)動(dòng)控制消息為ROS2中定義的消息,topic為“/cmd_vel”,消息類(lèi)型為“geometry_msgs/msg/Twist”。

Node對(duì)應(yīng)package名為'gesture_control',同時(shí)指定了Node的參數(shù):

  • "ai_msg_sub_topic_name": 訂閱包含手勢(shì)信息的topic名為"/hobot_hand_gesture_detection"
  • "twist_pub_topic_name":發(fā)布運(yùn)動(dòng)控制指令消息的topic名為"/cmd_vel"
  • "activate_wakeup_gesture": 喚醒手勢(shì)開(kāi)關(guān),值為0表示不啟用喚醒手勢(shì)。一般在人較多,環(huán)境復(fù)雜的場(chǎng)景,通過(guò)啟用喚醒手勢(shì)避免誤觸發(fā)手勢(shì)控制功能。
  • "track_serial_lost_num_thr": 人手連續(xù)消失幀數(shù)閾值,值為100,表示當(dāng)用于控制的人手連續(xù)消失100幀之后會(huì)重新選擇控制手
  • "move_step": 平移運(yùn)動(dòng)的步長(zhǎng)(速度),0.5表示移動(dòng)速度為0.5m/s,值越大速度越快
  • "rotate_step": 旋轉(zhuǎn)運(yùn)動(dòng)的步長(zhǎng)(速度),0.5表示旋轉(zhuǎn)速度為0.5r/s,值越大速度越快

手勢(shì)控制策略選擇做出上述4種控制手勢(shì)(詳細(xì)的手勢(shì)控制說(shuō)明詳見(jiàn)3.2章節(jié))的人手作為唯一的控制手,通過(guò)此控制手實(shí)現(xiàn)對(duì)機(jī)器人的控制。

如果有多個(gè)人手同時(shí)做手勢(shì),選擇人手檢測(cè)框?qū)挾茸畲蟮氖肿鳛榭刂剖帧?/p>

已有控制手的情況下,其他的手做控制手勢(shì)都無(wú)效。

Node輸出的log中tracking_sta關(guān)鍵字表示控制手的狀態(tài),0表示未找到控制手,1表示已有控制手,2表示控制手消失。

Node啟動(dòng)后,未找到控制手的情況下,即沒(méi)有做出手勢(shì),輸出log中tracking_sta值為0。

當(dāng)有人手做出手勢(shì)時(shí),找到控制手,輸出log中tracking_sta值為1,同時(shí)通過(guò)track_id關(guān)鍵字輸出人手的ID,gesture輸出當(dāng)前做出的手勢(shì)結(jié)果數(shù)值。

只有當(dāng)控制手消失,即連續(xù)track_serial_lost_num_thr幀(配置為100幀,對(duì)于輸出頻率為30fps的F37攝像頭,大約為3.3秒)未檢測(cè)到人手,判斷控制手消失,開(kāi)始重新選擇控制手??刂剖窒r(shí)輸出log中tracking_sta值為2。

如果需要啟用喚醒手勢(shì)避免誤觸發(fā),喚醒手勢(shì)使用方法詳見(jiàn)手勢(shì)控制策略的代碼倉(cāng)庫(kù)。

  1. 控制

機(jī)器人運(yùn)動(dòng)控制Node訂閱手勢(shì)控制策略Node發(fā)布的topic為“/cmd_vel”的控制消息,根據(jù)控制協(xié)議,通過(guò)USB總線向機(jī)器人下位機(jī)發(fā)布運(yùn)動(dòng)控制指令。

對(duì)于不同類(lèi)型的機(jī)器人,控制協(xié)議不同,對(duì)應(yīng)于不同的運(yùn)動(dòng)控制Node。

本文使用的是本末雙足機(jī)器人,對(duì)應(yīng)的運(yùn)動(dòng)控制Node啟動(dòng)方法為ros2 run diablo_sdk ros_bridge_example。此Node單獨(dú)啟動(dòng),不在啟動(dòng)腳本中。

5.3 App的系統(tǒng)設(shè)計(jì)

根據(jù)5.1和5.2章節(jié)的介紹,已經(jīng)知道了機(jī)器人手勢(shì)控制App啟動(dòng)了哪些Node,這些Node的功能,Node之間的關(guān)系,以及使用這些Node如何實(shí)現(xiàn)通過(guò)手勢(shì)控制機(jī)器人的目標(biāo)。下面進(jìn)行理論總結(jié),介紹此App的系統(tǒng)設(shè)計(jì)。

對(duì)于一個(gè)復(fù)雜的機(jī)器人系統(tǒng),一般在機(jī)器人上配置上位機(jī)和下位機(jī)兩種處理器。

機(jī)器人上位機(jī)的計(jì)算能力較強(qiáng),執(zhí)行復(fù)雜的機(jī)器人上層應(yīng)用,同時(shí)能夠最大程度屏蔽不同類(lèi)型機(jī)器人的底層差異。

機(jī)器人下位機(jī)一般使用低成本的MCU處理器,對(duì)機(jī)器人本體上的各類(lèi)傳感器和硬件進(jìn)行數(shù)據(jù)采集/控制。

手勢(shì)控制App由兩部分組成,分別為機(jī)器人和PC端,其中機(jī)器人部分又分為上位機(jī)和下位機(jī)。詳細(xì)組成如下圖:

poYBAGLWJ92AE7ElAAKvqgxvwTM899.png

機(jī)器人上位機(jī)為X3派,運(yùn)行著多個(gè)ROS2 Node,除了5.2章節(jié)介紹的傳感、感知、交互和控制功能,還有JPEG圖像編碼和WEB展示功能,將攝像頭發(fā)布的圖片編碼壓縮,以及將手勢(shì)識(shí)別算法發(fā)布的AI數(shù)據(jù)序列化后使用websocket協(xié)議發(fā)布,實(shí)現(xiàn)跨設(shè)備在PC端渲染展示和調(diào)試。

機(jī)器人下位機(jī)屬于機(jī)器人本體的一部分,詳細(xì)說(shuō)明略。

從App的系統(tǒng)設(shè)計(jì)圖中可以看出,搭載了X3派和HHP的機(jī)器人,利用芯片的AI加速能力和HHP中豐富的算法、機(jī)器人開(kāi)發(fā)組件,可以實(shí)現(xiàn)快速開(kāi)發(fā)智能機(jī)器人應(yīng)用的目標(biāo)。

6 FAQ

6.1 如何復(fù)現(xiàn)App效果?

復(fù)現(xiàn)App效果涉及到兩部分:

(1)機(jī)器人手勢(shì)控制App

參考第2章準(zhǔn)備工作,在X3派上安裝HHP。

(2)本末雙足機(jī)器人和機(jī)器人運(yùn)動(dòng)控制package

獲取方法詳見(jiàn)產(chǎn)品信息:https://developer.horizon.ai/forumDetail/94246984227025410

除了本末雙足機(jī)器人,X3派和HHP還適配了小R科技的麥輪小車(chē),也可以使用小R小車(chē)直接體驗(yàn)App效果。

6.2 沒(méi)有機(jī)器人的情況下可以體驗(yàn)App效果嗎?

可以體驗(yàn)。

在沒(méi)有機(jī)器人的情況下,可以使用此App控制gazebo仿真環(huán)境下的虛擬機(jī)器人運(yùn)動(dòng)。

6.3 如何將App適配到自己的機(jī)器人上?

本文以本末雙足機(jī)器人為例介紹手勢(shì)控制App的效果,App本身不依賴(lài)于任何形態(tài)的機(jī)器人,App發(fā)布的運(yùn)動(dòng)控制消息為ROS2中定義的消息(topic為“/cmd_vel”,消息類(lèi)型為“geometry_msgs/msg/Twist”,具體說(shuō)明參考第5章的原理分析)。

如下圖,可以將App的組成劃分成紅色和藍(lán)色虛線框兩個(gè)部分:

poYBAGLWJ_KACtknAALSDaG3hMw929.png

(1)紅色虛線框部分

這部分功能不依賴(lài)于機(jī)器人,即可以直接移植到任意形態(tài)的機(jī)器人上。

移植方法為將X3派安裝在機(jī)器人上,按照第2章節(jié)的準(zhǔn)備工作,在X3派上安裝攝像頭傳感器和HHP。

(2)藍(lán)色虛線框部分

這部分功能依賴(lài)于機(jī)器人,需要針對(duì)性的適配。根據(jù)機(jī)器人的狀態(tài)不同,對(duì)應(yīng)不同的適配方法。

狀態(tài)1,原先機(jī)器人上有上位機(jī)和下位機(jī),如原先使用樹(shù)莓派或者Jetson Nano作為上位機(jī),并且上位機(jī)上有機(jī)器人運(yùn)動(dòng)控制Node。需要在X3派上重新編譯機(jī)器人運(yùn)動(dòng)控制Node。

狀態(tài)2,原先機(jī)器人上只有下位機(jī)。需要開(kāi)發(fā)機(jī)器人運(yùn)動(dòng)控制Node后(開(kāi)發(fā)參考components/xrrobot · develop · HHP / app / xr_robot · GitLab (horizon.ai)),在X3派上編譯機(jī)器人運(yùn)動(dòng)控制Node。

6.4 App支持哪些攝像頭?

App對(duì)于攝像頭類(lèi)型沒(méi)有要求,地平線機(jī)器人平臺(tái)支持MIPI和USB兩類(lèi)攝像頭。

對(duì)于MIPI攝像頭,支持F37和GC4663兩種型號(hào)。

6.5 是否可以重新定義手勢(shì)對(duì)應(yīng)的功能?

可以。

App中手勢(shì)和控制功能對(duì)應(yīng)關(guān)系詳見(jiàn)第1章的功能介紹,目前只用到了4種控制手勢(shì),5.2章節(jié)介紹了手勢(shì)識(shí)別算法支持的8種手勢(shì)類(lèi)別,可以對(duì)手勢(shì)控制策略Node進(jìn)行二次開(kāi)發(fā),重新定義手勢(shì)和對(duì)應(yīng)的控制功能,如通過(guò)OK手勢(shì)控制四足機(jī)器人站立。

6.6 如何調(diào)整機(jī)器人的運(yùn)動(dòng)速度?

修改App啟動(dòng)腳本hobot_gesture_control.launch.py中手勢(shì)控制策略gesture_control Node中的參數(shù),可以控制機(jī)器人的平移和旋轉(zhuǎn)速度:

# 啟動(dòng)手勢(shì)交互pkg Node( package='gesture_control', executable='gesture_control', output='screen', parameters=[ {"ai_msg_sub_topic_name": "/hobot_hand_gesture_detection"}, {"twist_pub_topic_name": "/cmd_vel"}, {"activate_wakeup_gesture": 0}, {"track_serial_lost_num_thr": 100}, {"move_step": 0.5}, {"rotate_step": 0.5} ], arguments=['--ros-args', '--log-level', 'info'] )

參數(shù)說(shuō)明詳見(jiàn)5.2.2.8章節(jié)。

6.7 可以開(kāi)發(fā)一個(gè)python的Node擴(kuò)展App功能嗎?

可以。

ROS2支持跨設(shè)備、跨平臺(tái)、跨語(yǔ)言,TogetherROS完全兼容ROS2 Foxy版本,因此也支持這些特性。

例如在X3派的40PIN上安裝了LED燈,當(dāng)機(jī)器人處于運(yùn)動(dòng)狀態(tài)時(shí),LED燈被點(diǎn)亮。

用戶(hù)可以使用python開(kāi)發(fā)一個(gè)ROS Node,訂閱手勢(shì)控制策略Node發(fā)布的topic為“/cmd_vel”的消息,檢查消息中的控制指令是否為啟動(dòng)運(yùn)動(dòng)指令(值是否為非0),如果有非0值,表示是啟動(dòng)運(yùn)動(dòng),點(diǎn)亮LED燈,否則點(diǎn)滅LED燈。

使用python開(kāi)發(fā)完Node后,直接在X3派上編譯并運(yùn)行。

6.8 如何開(kāi)發(fā)一個(gè)自己的算法Node擴(kuò)展App功能?

HHP提供的Hobot DNNshe'u'qsheuq簡(jiǎn)化板端AI模型推理與部署,釋放BPU算力,降低AI使用門(mén)檻。同時(shí)內(nèi)置了常用的檢測(cè)、分類(lèi)和分割算法的模型后處理,幫助用戶(hù)快速在X3派上集成部署自己的算法。

本文轉(zhuǎn)自地平線開(kāi)發(fā)者社區(qū)

原作者:zhuk

原鏈接:https://developer.horizon.ai/forumDetail/98129540173361326

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 人機(jī)交互
    +關(guān)注

    關(guān)注

    12

    文章

    1196

    瀏覽量

    55244
  • 人工智能
    +關(guān)注

    關(guān)注

    1789

    文章

    46348

    瀏覽量

    236509
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    兆易創(chuàng)新亮相2024地平線地瓜機(jī)器人開(kāi)發(fā)者

    日前,以“加速智能生長(zhǎng)”為主題的“2024地瓜機(jī)器人開(kāi)發(fā)者日暨新品發(fā)布”活動(dòng)在深圳成功舉辦。兆易創(chuàng)新作為地瓜機(jī)器人優(yōu)質(zhì)生態(tài)合作伙伴,受邀出席大會(huì)。中央市場(chǎng)部王霄受邀參加議程中的DUP教育生態(tài)聯(lián)盟研討會(huì)并做了《“兆易創(chuàng)新+地瓜
    的頭像 發(fā)表于 10-17 09:47 ?108次閱讀

    地平線助力鑒智機(jī)器人多款中階方案斬獲定點(diǎn)合作

    近日,智能駕駛系統(tǒng)供應(yīng)商鑒智機(jī)器人基于地平線征程6E打造的多款中階方案獲得頭部車(chē)企與Tier-1定點(diǎn),并已正式啟動(dòng)量產(chǎn)交付開(kāi)發(fā)。
    的頭像 發(fā)表于 07-30 09:20 ?484次閱讀
    <b class='flag-5'>地平線</b>助力鑒智<b class='flag-5'>機(jī)器人</b>多款中階方案斬獲定點(diǎn)合作

    ROS讓機(jī)器人開(kāi)發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布!

    。 ROS系統(tǒng)主要特點(diǎn)有哪些 (1) 提供豐富的機(jī)器人算法庫(kù) 機(jī)器人的各種控制以及通信離不開(kāi)算法庫(kù)的支持,ROS系統(tǒng)提供豐富且功能強(qiáng)大的機(jī)器人算法庫(kù),如坐標(biāo)變換、運(yùn)動(dòng)
    發(fā)表于 07-09 11:38

    全球機(jī)器人開(kāi)發(fā)領(lǐng)域采用NVIDIA 機(jī)器人開(kāi)發(fā)和生產(chǎn)

    機(jī)器人開(kāi)發(fā)領(lǐng)域的領(lǐng)先企業(yè)正在采用NVIDIA Isaac機(jī)器人平臺(tái)來(lái)研究、開(kāi)發(fā)和生產(chǎn)下代 AI 賦能的自主
    的頭像 發(fā)表于 06-03 18:25 ?1125次閱讀

    TOSUN同星 第一期開(kāi)發(fā)者訓(xùn)練營(yíng)圓滿(mǎn)落幕

    2024年3月12日,由同星智能舉辦的2024年首【線上開(kāi)發(fā)者訓(xùn)練營(yíng)】成功舉行。本次開(kāi)發(fā)者訓(xùn)練營(yíng)旨在聚集對(duì)同星智能軟件架構(gòu)以及TSMaster相關(guān)功能內(nèi)容感興趣的開(kāi)發(fā)者,進(jìn)行同星軟件
    的頭像 發(fā)表于 03-16 08:20 ?311次閱讀
    TOSUN同星 <b class='flag-5'>第一期</b><b class='flag-5'>開(kāi)發(fā)者</b>訓(xùn)練營(yíng)圓滿(mǎn)落幕

    地平線正式開(kāi)源Sparse4D算法

    地平線將業(yè)內(nèi)領(lǐng)先的純視覺(jué)自動(dòng)駕駛算法——Sparse4D系列算法開(kāi)源,推動(dòng)行業(yè)更多開(kāi)發(fā)者共同參與到端到端自動(dòng)駕駛、稀疏感知等前沿技術(shù)方向的探索中。目前,Sparse4D算法已在GitHub平臺(tái)上線,
    的頭像 發(fā)表于 01-23 10:18 ?671次閱讀

    集成電路學(xué)習(xí)與實(shí)訓(xùn)平臺(tái)配置方案-高職院校第一期建設(shè)

    北京革新創(chuàng)展能科技有限公司提供的集成電路學(xué)習(xí)與實(shí)訓(xùn)平臺(tái)配置方案,主要用于高職院校第一期建設(shè)需求,如需詳細(xì)方案,請(qǐng)隨時(shí)聯(lián)系我們。
    的頭像 發(fā)表于 01-03 10:42 ?669次閱讀
    集成電路學(xué)習(xí)與實(shí)訓(xùn)<b class='flag-5'>平臺(tái)</b>配置方案-高職院校<b class='flag-5'>第一期</b>建設(shè)

    集成電路學(xué)習(xí)與實(shí)訓(xùn)平臺(tái)配置方案-本科院校第一期建設(shè)

    北京革新創(chuàng)展科技有限公司提供的集成電路學(xué)習(xí)與實(shí)訓(xùn)平臺(tái)配置方案,主要用于本科院校第一期建設(shè)。如需詳細(xì)方案資料,請(qǐng)隨時(shí)聯(lián)系我們。
    的頭像 發(fā)表于 01-03 10:29 ?777次閱讀
    集成電路學(xué)習(xí)與實(shí)訓(xùn)<b class='flag-5'>平臺(tái)</b>配置方案-本科院校<b class='flag-5'>第一期</b>建設(shè)

    開(kāi)發(fā)者說(shuō)開(kāi)發(fā)案例:使用canvas實(shí)現(xiàn)圖表系列之折線圖

    # 開(kāi)發(fā)者說(shuō) # 【開(kāi)發(fā)者說(shuō)】欄目是為HarmonyOS開(kāi)發(fā)者提供的展示和分享平臺(tái),在這里,大家
    的頭像 發(fā)表于 12-13 16:05 ?541次閱讀
    【<b class='flag-5'>開(kāi)發(fā)者</b><b class='flag-5'>說(shuō)</b>】<b class='flag-5'>開(kāi)發(fā)</b>案例:使用canvas實(shí)現(xiàn)圖表系列之折線圖

    誠(chéng)邀報(bào)名 | GPT驅(qū)動(dòng)的新程序員時(shí)代,開(kāi)發(fā)者如何編程?

    模式,開(kāi)發(fā)者們迎來(lái)了編程范式的全新變革。傳統(tǒng)的編程不再局限于編寫(xiě)線性代碼和優(yōu)化邏輯,自然語(yǔ)言取而代之,成為了編程的新工具,這大大降低了開(kāi)發(fā)的門(mén)檻。 如今,以ChatGPT、Copilot等為代表的AI工具,將全球的知識(shí)庫(kù)和代碼庫(kù)都呈現(xiàn)在用戶(hù)面前,只要有足夠的想象力,每個(gè)人
    的頭像 發(fā)表于 12-11 22:20 ?476次閱讀

    開(kāi)發(fā)者說(shuō)開(kāi)發(fā)案例分享:萬(wàn)能卡片也能用來(lái)玩游戲

    # 開(kāi)發(fā)者說(shuō) # 【開(kāi)發(fā)者說(shuō)】欄目是為HarmonyOS開(kāi)發(fā)者提供的展示和分享平臺(tái),在這里,大家
    的頭像 發(fā)表于 11-30 21:15 ?452次閱讀
    【<b class='flag-5'>開(kāi)發(fā)者</b><b class='flag-5'>說(shuō)</b>】<b class='flag-5'>開(kāi)發(fā)</b>案例分享:萬(wàn)能卡片也能用來(lái)玩游戲

    ROS讓機(jī)器人開(kāi)發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布!

    庫(kù)的支持,ROS系統(tǒng)提供豐富且功能強(qiáng)大的機(jī)器人算法庫(kù),如坐標(biāo)變換、運(yùn)動(dòng)控制等。機(jī)器人開(kāi)發(fā)者可根據(jù)開(kāi)發(fā)需要,簡(jiǎn)單快捷地調(diào)用合適的算法庫(kù),以提高
    發(fā)表于 11-30 16:01

    「科聰二次開(kāi)發(fā)平臺(tái)」移動(dòng)機(jī)器人開(kāi)發(fā),只需3步!

    科聰提供獨(dú)家二次開(kāi)發(fā)平臺(tái),配合各類(lèi)工具型軟件,簡(jiǎn)單、靈活、快速完成移動(dòng)機(jī)器人開(kāi)發(fā)。隨著移動(dòng)機(jī)器人應(yīng)用場(chǎng)景的持續(xù)擴(kuò)展和整機(jī)形態(tài)的不斷演化,廠商
    的頭像 發(fā)表于 11-06 10:53 ?1026次閱讀
    「科聰二次<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>平臺(tái)</b>」移動(dòng)<b class='flag-5'>機(jī)器人</b><b class='flag-5'>開(kāi)發(fā)</b>,只需3步!

    喜迎1024程序員節(jié)!祝各位開(kāi)發(fā)者們“碼”到“程”功!

    祝各位開(kāi)發(fā)者們,節(jié)日快樂(lè)! 程序員(Programmer)是從事程序開(kāi)發(fā)、維護(hù)的專(zhuān)業(yè)人員。 對(duì)于奮斗在線的
    的頭像 發(fā)表于 10-24 20:00 ?683次閱讀
    喜迎1024<b class='flag-5'>程序員</b>節(jié)!祝各位<b class='flag-5'>開(kāi)發(fā)者</b>們“碼”到“程”功!

    奧比中光3D相機(jī)矩陣助力更強(qiáng)機(jī)器人開(kāi)發(fā)

    近日,奧比中光將視覺(jué)生態(tài)產(chǎn)品矩陣集成到新版本NVIDIA Isaac Sim平臺(tái),助力全球超過(guò)百萬(wàn)名機(jī)器人開(kāi)發(fā)者便捷地開(kāi)發(fā)、測(cè)試、仿真機(jī)器人
    的頭像 發(fā)表于 10-24 11:38 ?788次閱讀