色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

開發者說 | 地平線程序員奶爸帶你玩轉機器人開發平臺 —— 第二期 人體跟隨

地瓜機器人 ? 2022-08-01 15:12 ? 次閱讀

AI操控機器人系列第一期的手勢控制教程中,身為地平線資深程序員的奶爸,使用地平線發布的機器人開發平臺TogetherROS軟件棧,搭建了手勢操控機器人。
當孩子的小伙伴們還是帶個手套或者使用遙控器指揮機器人跑跑時,手勢控制這么AI的機器人讓小朋友得意了很長一段時間。(點擊一下,內容回顧)
可是好景不長,小朋友對待玩具都是喜新厭舊的,這就給我提了新的需求,小小年紀就展現了當產品經理的潛力。
“能不能讓機器人跟在我后面跑,就像咱們家狗狗那樣呢?”
為了體現老爸的厲害,這個人體跟隨機器人必須搞起(其實是機器人開發平臺里面豐富的算法讓我這么有底氣)


一、功能介紹


大家先看一下最終實現的功能。

pYYBAGLncKmAOX4hAKXEpOxiFbc273.gif


從跟隨效果來看,當人移動時,機器人能夠迅速跟隨人移動,得益于地平線旭日??X3派(以下簡稱X3派)上5Tops算力的BPU可以實現低延遲(30ms左右)、高幀率(滿幀30fps)、遠距離(>8m)、低系統負載(4核CPU只占用了單核<40%)的算法推理能力。

開始碼代碼前,先來簡單分析一下人體跟隨機器人需要具備哪些基本模塊。

傳感

對于人體跟隨這類基于視覺的AI算法應用,首先需要有視覺傳感器來捕捉圖像數據。

感知

獲取到傳感器發布的圖像后,通過視覺算法進行推理,檢測到人體,實現感知的能力。

交互

檢測到人體之后,需要定義并實現對應不同人體檢測結果的功能應用,如人體在機器人的右邊需要控制機器人向右轉動。

控制

根據“交互”模塊輸出的控制指令,實現對機器人的機械控制。

機器人本體

當然還需要一個具備運動能力的機器人本體,接收控制指令并控制電機運動,實現最終的機器人跟隨人體的效果。

地平線發布的機器人平臺TogetherROS軟件棧內置了豐富易用的機器人開發組件,包含搭建一個智能機器人應用(如人體跟隨機器人和第一期的機器人手勢控制)所涉及到的所有功能模塊,完全開源免費,并允許開發者二次開發,接下來開始搞起。


二、準備工作


準備搭建機器人人體跟隨應用案例的硬件設備和軟件包。

硬件
硬件包括:
①X3派

poYBAGLWJJeAVOHXAAZP6ysBK9A861.png

②F37 MIPI攝像頭

poYBAGLWJK-AWjStAADYCvQxdvQ924.png

③機器人

pYYBAGLWJL-AAZ8nAAOy91ERXgQ719.png

X3派和TogetherROS適配了本末雙足機器人和小R科技的麥輪小車。這邊為了讓孩子覺得機器人足夠高大上,就用本末的輪足機器人來介紹,沒有的同學也不用擔心,文章后面會介紹自己搭建機器人的方式。
④其他配件

a.USB Type C接口電源線。至少搭配5V@2A適配器,用于X3派供電

b.串口線,連接方式如下:

pYYBAGLWJPWAEurXAAzs72Tj73U694.png


c.TF存儲卡和讀卡器。旭日X3派開發板采用TF存儲卡作為系統啟動介質,推薦使用至少8GB容量、速率C10以上的TF存儲卡,以便滿足Ubuntu系統及更多應用功能包對存儲空間的需求。

安裝系統
參考旭日X3派的用戶手冊的安裝系統章節,安裝完成(或者已經安裝過)需要更新系統。


系統配置
配置X3派的無線網絡,參考X3派的用戶手冊的無線網絡章節。
無線網絡配置成功之后,查詢IP地址:

poYBAGLWJSWAYIuxAAE-d_Rnorg810.png


可以看到,X3派的無線網路分配的IP地址為192.168.1.147,下面開始使用這個地址和root賬號(密碼為root)通過ssh遠程連接到X3派,登錄成功后的狀態如下:

pYYBAGLWJW6AbRqeAABKldkb_58374.png


安裝TogetherROS

使用apt命令通過DEB包安裝TogetherROS。
登錄旭日X3派ssh root@192.168.1.147,執行命令sudo apt install hhp,安裝過程如下:

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


可以看到TogetherROS已安裝在/opt目錄下,說明安裝成功。至此,準備工作結束,下面開始使用這些硬件設備和軟件包搭建機器人人體跟隨App。


三、使用介紹


接下來開始搞各個功能模塊,再一步步組裝起來,分別驗證其功能。

安裝和測試F37攝像頭


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

pYYBAGLncDmAJP8yAALnPXxPfo4827.jpg


直接使用TogetherROS中的ROS package測試F37的功能。以下通過腳本啟動攝像頭采集,圖像編碼,web展示功能包,實現將F37攝像頭采集到的圖像進行編碼后,通過PC端web瀏覽器實時查看采集到的圖像。 登錄旭日X3派ssh root@192.168.1.147后,在終端(以下默認終端都是通過ssh登錄)中輸入以下命令啟動:

# 配置 TogetherROS 環境: source /opt/tros/local_setup.bash # 啟動腳本 ros2 launch websocket hobot_websocket.launch.py

啟動成功的終端狀態如下:

poYBAGLWJfaAFxFsAARi93E3Ohs054.png

攝像頭開始采集圖像并對外發布圖像消息。PC瀏覽器(chrome/firefox/edge)輸入X3派IP地址,即可查看F37實時采集到的圖像效果:

pYYBAGLWJnSAMOdcAIzwNeIUozQ567.png


說明F37攝像頭已安裝成功并能夠對外發布圖像消息。


測試人體檢測算法和交互功能
X3派上打開一個終端,啟動人體檢測和控制的腳本:

# 配置TogetherROS環境 source /opt/tros/setup.bash # 從TogetherROS的安裝路徑中拷貝出運行示例需要的配置文件。 cp -r /opt/tros/lib/mono2d_body_detection/config/ . #啟動launch文件 ros2 launch body_tracking hobot_body_tracking_without_gesture.launch.py


啟動成功后,當有人體出現在F37攝像頭前時,終端輸出如下信息

[body_tracking-5] [INFO] [1657615485.941625685] [TrackingManager]: track_id: 1, frame_ts: 485910, tracking_sta(0:INITING, 1:TRACKING, 2:LOST): 1, gesture: 0, y pixel to robot: 2, present_rect: 540 6 954 542 [body_tracking-5] [INFO] [1657615485.941724902] [TrackingManager]: UpdateTrackAngle: frame_ts: 485910, track_id: 1, angel_with_robot: 45 [body_tracking-5] [INFO] [1657615485.942362166] [TrackingManager]: rotate direction: 0, step: 0.500000 [body_tracking-5] [WARN] [1657615485.942528139] [RobotCmdVelNode]: RobotCtl, angular: 0 0 -0.5, linear: 0 0 0, pub twist ts: 1657615485942515

以上log顯示機器人在跟隨目標編號為1(track_id: 1)的人體(tracking_sta: 1),人體不在機器人的正前方,和機器人之間的角度為45度,跟隨交互模塊控制機器人以0.5r/s的速度向人體方向轉動(rotate direction: 0, step: 0.500000)。 在PC端瀏覽器上會實時渲染顯示攝像頭采集到的圖像,人體、人頭、人臉和人手檢測框和目標編號結果,人體骨骼關鍵點以及實時的性能統計數據,如下圖:

poYBAGLncEKADTwoAAnzU7BwwSc434.png


其中瀏覽器下方顯示的fps為實時的AI推理輸出的幀率,和F37攝像頭采集圖像的幀率30fps一致。ai_delay(單位為毫秒)為28,表示的是單幀推理的延遲,從傳感Node發布圖像數據開始,經過感知算法Node推理后,發布包含人體檢測結果的AI msg的耗時。 板端使用top命令查看系統資源占用如下圖所示,其中mono2d_body_detection為人體檢測算法推理進程,此時CPU使用率為38.9%。

poYBAGLncDuAP3w5AABLAKlTJ4s704.png


經過以上測試,說明在X3派上,TogetherROS的人體檢測算法運行成功,并且算法可以實現低延遲(30ms)、高幀率(滿幀30fps)、遠距離(>8m)、低系統負載(單核CPU占用<40%)的算法推理效果,體現了X3 BPU強大的算力。

人體檢測算法測試完成后,接著測試人體跟隨功能。X3派上另起一個終端,執行如下命令查詢X3派上的話題列表:

# 配置TogetherROS環境 source /opt/tros/setup.bash ros2 topic list

輸出如下:

poYBAGLncDuAFBlYAAAhtbbxoTU827.png


其中/cmd_vel話題是人體跟隨控制節點發布的控制命令消息。在當前終端執行ros2 topic echo /cmd_vel命令查詢X3派上的話題信息,當人體出現在F37攝像頭前并且偏離正前方時,終端輸出如下:

pYYBAGLncDuAUKH6AAA1GPQKees162.png


可以看到,此時人體跟隨控制節點發布發布出的/cmd_vel話題的angular z數據為-0.5,表示以0.5r/s的速度轉動。 說明人體識別算法和交互功能的軟件包已安裝成功,并能夠通過/cmd_vel話題對外發布機器人運動控制消息。


將X3派安裝到機器人上


將X3派安裝到機器人上,并測試在X3派上通過發布/cmd_vel話題控制機器人運動的功能。連接了F37攝像頭的X3派直接固定在機器人上,并將機器人的USB控制接口插到X3派上。 安裝效果如下:

poYBAGLWJyCAZ8c9ABvTNz07oIM337.png


對于支持使用ROS開發的機器人,一般會提供一個基于ROS開發的機器人運動控制Node,功能為訂閱/cmd_vel話題的控制消息(ROS2中定義的用于機器人控制的消息,消息類型為geometry_msgs/msg/Twist),根據控制協議,通過USB等接口向機器人發送運動控制指令,實現控制機器人運動的目的。

本文使用的本末雙足機器人使用的是USB接口,并提供了運行在X3派上的運動控制package,package訂閱到/cmd_vel話題的控制消息后,通過USB向機器人下發控制指令,實現對機器人的控制。 在X3派上啟動本末雙足機器人運行控制Node。打開一個終端,執行如下命令:

# 配置TogetherROS環境 source /opt/tros/setup.bash #啟動本末機器人運動控制package ros2 run diablo_sdk ros_bridge_example

執行成功后終端中輸出如下信息:

pYYBAGLWJzWAAtpgAABABX_Q0O4707.png


X3派上重新打開一個終端,通過發布/cmd_vel話題消息控制機器人以0.3r/s的速度轉動:

# 配置TogetherROS環境 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}}'

執行成功后終端中輸出如下信息:

pYYBAGLWJ0yAazCoAABOxcXYJpk135.png


機器人收到控制指令后轉動的效果如下:

pYYBAGLncMSAAPs6AJdMVZZd3zI596.gif


說明機器人能夠按照發布的控制命令消息正確的實現運動。


對于其他機器人應該怎么安裝
如果手里是其他的移動機器人,例如有一個使用樹莓派或者Jetson Nano作為上位機的機器人,也可以將X3派安裝在機器人上,代替樹莓派或者Jetson Nano,實現控制機器人運動。 安裝方法如下:
①編譯可以運行在X3派上的運動控制package;

a.X3派上安裝ROS2軟件系統構建和編譯工具:

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

b.將原先運行在樹莓派或者Jetson Nano上的機器人運動控制ROS2 package源碼拷貝到X3派上;

c.在X3派上,package源碼工程所在路徑下,直接使用source /opt/tros/setup.bash; colcon build命令編譯package;

d.如果原先運動控制package是基于ROS1開發,源碼需要適配到ROS2。只需要適配"cmd_vel"話題消息的訂閱和處理,如果原先的ROS1 package中有其他功能,可以先不關注。

②安裝

a.將X3派固定在機器人上,如果空間有限,可以將原先的樹莓派或者Jetson Nano拆除;

b.使用USB Type C給X3派供電,如果機器人上無Type C供電輸出,也可以使用移動電源(輸出至少5V&直流 2A)給X3派供電;

c.將機器人的USB控制接口插到X3派上。

③測試

a.X3派上啟動新編譯的機器人運動控制package;

b.X3派上重新打開一個終端,通過發布/cmd_vel話題消息控制機器人以0.3r/s的速度轉動:

# 配置TogetherROS環境 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}}'

如果機器人正常轉動,說明X3派安裝成功。


四、完整的機器人人體跟隨效果


下面開始測試完整的機器人人體跟隨功能。

X3派上打開一個終端,啟動人體檢測和控制腳本

# 配置TogetherROS環境 source /opt/tros/setup.bash # 從TogetherROS的安裝路徑中拷貝出運行示例需要的配置文件。 cp -r /opt/tros/lib/mono2d_body_detection/config/ . #啟動launch文件 ros2 launch body_tracking hobot_body_tracking_without_gesture.launch.py

X3派上打開一個終端,啟動機器人運動控制Node

# 配置TogetherROS環境 source /opt/tros/setup.bash #啟動本末機器人運動控制Node ros2 run diablo_sdk ros_bridge_example

機器人跟隨人移動

pYYBAGLncKmAOX4hAKXEpOxiFbc273.gif



五、原理分析


第4章節中,在X3派的兩個終端中分別啟動了hobot_body_tracking_without_gesture.launch.py腳本和運動控制Node,實現了機器人跟隨人體的效果,本章節對實現的原理進行分析。


App運行時的Node和Topic信息
對于一個基于ROS開發的App,首先會想到這個App在運行時有哪些Node,這些Node發布和訂閱了哪些Topic,以及這些Node之間的關聯。
在X3派上使用ros2的命令行工具查詢設備上運行的Node和Topic信息:

root@ubuntu:~# source /opt/tros/setup.bash root@ubuntu:~# ros2 node list /ai_msg_sub_node /hobot_codec1658324595406906403 /horizon_tracking_RobotCmdVel /mipi_cam /mono2d_body_det /ros_bridge_example /tracking_strategy_parameter_node /transform_listener_impl_5594bf54a0 /websocket root@ubuntu:~# ros2 topic list /cmd_vel /hbmem_img080a1309022201080401012021072312 /hobot_mono2d_body_detection /image_jpeg /image_raw /imu/data_raw /odom /parameter_events /quat_odom /raw_odom /rosout /tf /tf_static

查詢到X3派上運行著多個Node,這些ROS2 Node之間是基于pub&sub機制通信,通過topic將這些Node串聯起來形成一個pipeline。
此App運行時Node以及Topic信息比較多,看不出Node之間的關聯。可以在PC端通過rqt(PC端需要安裝ROS2 Foxy版本,rqt,以及PC需要和X3派處于同一網段)的Node Graph功能可以可視化的展示X3派上運行的Node,Node發布和訂閱的topic,以及Node之間的連接關系,如下圖(其中橢圓形框內為Node名,矩形框內為topic名)

pYYBAGLncFOAT1amAAD6DFad10s980.png


可以看到,整個graph(pipeline)以mipi_cam Node(圖像采集和發布)為起點,websocket Node(序列化圖片和AI結果,用于可視化展示)和ros_bridge_example Node(機器人運動控制)為終點,起點和終點之間連接著多個Node。這些Node中ros_bridge_example Node是通過ros2 run diablo_sdk ros_bridge_example命令啟動,其余Node都是通過hobot_body_tracking_without_gesture.launch.py腳本啟動。


注意:/ai_msg_sub_node節點訂閱到的/hobot_mono2d_body_detection話題消息實際是由/horizon_tracking_RobotCmdVel節點處理,導致顯示的graph不連續,屬于設計上的待完善點

App的Node介紹
對于復雜的包含多個Node的應用,ROS2提供了使用啟動腳本通過launch批量啟動Node的功能。
機器人跟隨人體App使用hobot_body_tracking_without_gesture.launch.py腳本來啟動這些Node,腳本內容如下:

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, # 啟動圖片發布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'] ), # 啟動jpeg圖片編碼&發布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'] ), # 啟動單目rgb人體、人頭、人臉、人手框和人體關鍵點檢測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'] ), # 啟動web展示pkg Node( package='websocket', executable='websocket', output='screen', parameters=[ {"image_topic": "/image_jpeg"}, {"image_type": "mjpeg"}, {"smart_topic": "/hobot_mono2d_body_detection"} ], arguments=['--ros-args', '--log-level', 'error'] ), # 啟動人體跟隨pkg Node( package='body_tracking', executable='body_tracking', output='screen', parameters=[ {"ai_msg_sub_topic_name": "/hobot_mono2d_body_detection"}, {"activate_wakeup_gesture": 0}, {"img_width": 960}, {"img_height": 544}, {"track_serial_lost_num_thr": 30}, {"move_step": 0.5}, {"rotate_step": 0.5}, {"activate_robot_move_thr": 5} ], arguments=['--ros-args', '--log-level', 'info'] ) ])

腳本中指定了多個Node,其中每個Node中的package配置項表示Node名,可以看到腳本中配置的Node名和5.1章節中查出來的一致。

在第1章節,分析了機器人人體跟隨App所需要具備的功能模塊,下面按照這些功能模塊對Node進行分析。

傳感

使用了TogetherROS中的Hobot Sensor組件中的mipi_cam Node,同時指定了Node的參數

"out_format":發布圖片的格式為"nv12"

"image_width":圖片分辨率寬為960

"image_height":圖片分辨率高為544

"io_method":發布出來的圖片傳輸方式為"shared_mem",即共享內存方式,對應消息的topic為"hbmem_img"

"video_device":指定了使用的MIPI攝像頭類型為"F37",表示F37攝像頭

參數指定了使用F37攝像頭,發布的圖片格式和分辨率可以直接用于算法推理,其中通過共享內存方式發布圖片,可以極大地降低系統負載和傳輸延遲。

感知

使用了TogetherROS中的Boxs算法倉庫中的人體檢測和跟蹤算法,訂閱Hobot Sensor(mipi_cam Node)發布的圖像消息,利用BPU處理器進行AI推理,發布包含人體、人頭、人臉、人手框和人體骨骼關鍵點檢測結果的AI msg,并通過多目標跟蹤(multi-target tracking,即MOT)功能,實現檢測框的跟蹤和目標編號分配。
Node對應package名為'mono2d_body_detection',同時指定了Node的參數:

"ai_msg_pub_topic_name":發布包含人體檢測框信息的AI感知結果的topic名為"/hobot_mono2d_body_detection"


人體檢測和跟蹤算法推理Node(Mono2dBodyDetNode)主要包含三部分邏輯獨立的功能:

Node初始化和啟動

配置算法使用的模型信息,創建消息的發布者和訂閱者,啟動目標跟蹤算法引擎;
訂閱消息和算法推理

在注冊的圖像消息回調中,處理圖像數據并用于算法模型推理,回調中不等待算法推理完成;
推理結果的處理和發布

算法推理完成后,通過注冊的回調PostProcess輸出推理結果,回調中對檢測結果按照時間順序排序(NodeOutputManage)以及進行多目標跟蹤算法(HobotMot)處理后,發布算法推理結果消息。

Node的設計和流程邏輯如下圖:

pYYBAGLncFSAanoIAAFVIFVMYMo497.png

交互

人體跟隨策略Node訂閱人體檢測和跟蹤算法發布的包含人體信息的AI msg,根據人體框和機器人的位置關系,發布前進、后退、左轉、右轉的控制消息,實現控制機器人運動。 Node發布的運動控制消息為ROS2中定義的消息,topic為“/cmd_vel”,消息類型為“geometry_msgs/msg/Twist”,Node對應package名為'body_tracking',同時指定了Node的參數:

"ai_msg_sub_topic_name": 訂閱包含人體檢測信息的topic名為"/hobot_mono2d_body_detection"

"activate_wakeup_gesture": 喚醒手勢開關,值為0表示不啟用喚醒手勢。一般在人較多,環境復雜的場景,通過啟用喚醒手勢避免誤觸發人體跟隨功能。

"img_width": 人體檢測模型輸入圖片像素的寬

"img_height": 人體檢測模型輸入圖片像素的高

"track_serial_lost_num_thr": 人體連續消失幀數閾值,值為30,表示當跟隨的人體連續消失30幀之后會重新選擇跟隨的人體

"move_step": 平移運動的步長(速度),0.5表示移動速度為0.5m/s,值越大速度越快

"rotate_step": 旋轉運動的步長(速度),0.5表示旋轉速度為0.5r/s,值越大速度越快

"activate_robot_move_thr": 激活機器人移動的閾值,單位為像素。當人體檢測框的y像素值小于閾值(具體畫面的上邊界)時,激活機器人移動。


人體跟隨策略選擇第一次出現的人體作為跟隨人體,如果有多個人體同時出現,選擇最大寬度的人體檢測框作為跟隨人體;已有跟隨人的情況下,其他的人體檢測結果都無效。 Node輸出的log中tracking_sta關鍵字表示跟隨的狀態,0表示未找到跟隨人,1表示已有跟隨人,2表示跟隨人消失。Node啟動后,未找到跟隨人的情況下,輸出log中tracking_sta值為0;當有跟隨人時,輸出log中tracking_sta值為1,同時通過track_id關鍵字輸出跟隨人的編號;只有當跟隨人消失,即連續track_serial_lost_num_thr幀(配置為30幀,對于輸出頻率為30fps的F37攝像頭,為1秒)未檢測到跟隨人,判斷跟隨人消失,開始重新選擇跟隨人,跟隨人消失時輸出log中tracking_sta值為2。

如果需要啟用喚醒手勢避免誤觸發,喚醒手勢使用方法詳見人體跟隨策略的代碼倉庫。

控制

機器人運動控制Node訂閱人體跟隨策略Node發布的topic為“/cmd_vel”的控制消息,根據控制協議,通過USB總線向機器人下位機發布運動控制指令。對于不同類型的機器人,控制協議不同,對應于不同的運動控制Node。本文使用的是本末雙足機器人,對應的運動控制Node啟動方法為ros2 run diablo_sdk ros_bridge_example。此Node單獨啟動,不在啟動腳本中。


App的系統設計
根據5.1和5.2章節的介紹,已經知道了機器人人體跟隨App啟動了哪些Node,這些Node的功能,Node之間的關系,以及使用這些Node如何實現通過人體跟隨機器人的目標。下面進行理論總結,介紹此App的系統設計。對于一個復雜的機器人系統,一般在機器人上配置上位機和下位機兩種處理器,機器人上位機的計算能力較強,執行復雜的機器人上層應用,同時能夠最大程度屏蔽不同類型機器人的底層差異;機器人下位機一般使用低成本的MCU處理器,對機器人本體上的各類傳感器和硬件進行數據采集/控制。

人體跟隨App由兩部分組成,分別為機器人和PC端,其中機器人部分又分為上位機和下位機。詳細組成如下圖:

pYYBAGLncFeAXt1NAAVYQ-dL3Vw539.png


機器人上位機為X3派,運行著多個ROS2 Node,除了5.2章節介紹的傳感、感知、交互和控制功能,還有JPEG圖像編碼和WEB展示功能,將攝像頭發布的圖片編碼壓縮,以及將人體檢測和跟蹤算法發布的AI數據序列化后使用websocket協議發布,實現跨設備在PC端渲染展示和調試(機器人下位機屬于機器人本體的一部分,詳細說明略)。

從App的系統設計圖中可以看出,搭載了X3派和TogetherROS的機器人,利用芯片的AI加速能力和TogetherROS中豐富的算法、機器人開發組件,可以實現快速開發智能機器人應用的目標。


六、FAQ


如何復現App效果?
復現App效果涉及到兩部分:
(1)機器人人體跟隨App
參考第2章準備工作,在X3派上安裝TogetherROS。
(2)本末雙足機器人和機器人運動控制package
獲取方法詳見產品信息:https://developer.horizon.ai/forumDetail/94246984227025410
除了本末雙足機器人,X3派和TogetherROS還適配了小R科技的麥輪小車,也可以使用小R小車直接體驗App效果。


沒有機器人的情況下可以體驗App效果嗎?
可以體驗。 在沒有機器人的情況下,可以使用此App控制gazebo仿真環境下的虛擬機器人運動。


如何將App適配到自己的機器人上?
本文以本末雙足機器人為例介紹人體跟隨App的效果,App本身不依賴于任何形態的機器人,App發布的運動控制消息為ROS2中定義的消息(topic為“/cmd_vel”,消息類型為“geometry_msgs/msg/Twist”,具體說明參考第5章的原理分析)。
如下圖,可以將App的組成劃分成紅色和藍色虛線框兩個部分:

poYBAGLncFyAStjfAAZg7t204hs705.png


(1)紅色虛線框部分
這部分功能不依賴于機器人,即可以直接移植到任意形態的機器人上。
移植方法為將X3派安裝在機器人上,按照第2章節的準備工作,在X3派上安裝攝像頭傳感器和TogetherROS。
(2)藍色虛線框部分
這部分功能依賴于機器人,需要針對性的適配。根據機器人的狀態不同,對應不同的適配方法。
狀態1,原先機器人上有上位機和下位機,如原先使用樹莓派或者Jetson Nano作為上位機,并且上位機上有機器人運動控制Node。需要在X3派上重新編譯機器人運動控制Node。
狀態2,原先機器人上只有下位機。需要開發機器人運動控制Node后(開發參考components/xrrobot · develop · HHP / app / xr_robot · GitLab (horizon.ai)),在X3派上編譯機器人運動控制Node。


App支持哪些攝像頭?
App對于攝像頭類型沒有要求,地平線機器人平臺支持MIPI和USB兩類攝像頭。對于MIPI攝像頭,支持F37和GC4663兩種型號。


如何調整機器人的運動速度?
修改App啟動腳本hobot_body_tracking_without_gesture.launch.py中人體跟隨策略body_tracking Node中的move_step和rotate_step參數,可以控制機器人的平移和旋轉速度:

# 啟動人體跟隨pkg Node( package='body_tracking', executable='body_tracking', output='screen', parameters=[ {"ai_msg_sub_topic_name": "/hobot_mono2d_body_detection"}, {"activate_wakeup_gesture": 0}, {"img_width": 960}, {"img_height": 544}, {"track_serial_lost_num_thr": 30}, {"move_step": 0.5}, {"rotate_step": 0.5}, {"activate_robot_move_thr": 5} ], arguments=['--ros-args', '--log-level', 'info'] )

可以開發一個python的Node擴展App功能嗎?
可以,ROS2支持跨設備、跨平臺、跨語言,TogetherROS完全兼容ROS2 Foxy版本,因此也支持這些特性。
例如根據檢出的人體骨骼關鍵點,開發交互Node,控制人形機器人模仿人的肢體動作。訂閱hobot_mono2d_body_detection話題消息(包含人體骨骼關鍵點信息),使用命令可以查詢到話題的詳細信息:

# ros2 topic info /hobot_mono2d_body_detection Type: ai_msgs/msg/PerceptionTargets Publisher count: 1 Subscription count: 1

消息類型為ai_msgs/msg/PerceptionTargets,因此需要從ai_msgs.msg中import PerceptionTargets消息package。
完整的python代碼示例:

import rclpy from rclpy.node import Node from ai_msgs.msg import PerceptionTargets class MinimalSubscriber(Node): def __init__(self): super().__init__('minimal_subscriber') self.subscription = self.create_subscription( PerceptionTargets, 'hobot_mono2d_body_detection', self.listener_callback, 10) self.subscription # prevent unused variable warning def listener_callback(self, msg): self.get_logger().info('I heard: "%s"\n' % msg) def main(args=None): rclpy.init(args=args) minimal_subscriber = MinimalSubscriber() rclpy.spin(minimal_subscriber) # Destroy the node explicitly # (optional - otherwise it will be done automatically # when the garbage collector destroys the node object) minimal_subscriber.destroy_node() rclpy.shutdown() if __name__ == '__main__': main()

使用python開發完Node后,直接在X3派上編譯并運行。運行并輸出訂閱到的消息:

如何開發一個自己的算法Node擴展App功能?
TogetherROS提供的Hobot DNN簡化板端AI模型推理與部署,釋放BPU算力,降低AI使用門檻。同時內置了常用的檢測、分類和分割算法的模型后處理,幫助用戶快速在X3派上集成部署自己的算法。

本文轉自地平線開發者社區

原作者:zhuk

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5090

    文章

    19176

    瀏覽量

    306895
  • AI
    AI
    +關注

    關注

    87

    文章

    31490

    瀏覽量

    269899
  • 人工智能
    +關注

    關注

    1794

    文章

    47642

    瀏覽量

    239650
  • 地平線
    +關注

    關注

    0

    文章

    354

    瀏覽量

    14994
收藏 人收藏

    評論

    相關推薦

    燧原技術伙伴培育計劃第二期開啟

    新的里程碑,第二期ETP培訓于昨日在上海正式開課,來自中電金信、恒生電子、清昴智能、超聚變、卡姆派樂、思跡信息、先進編譯實驗室、億芯智算、燧弘華創等10家企業的近30位技術專家和工程師參與其中。
    的頭像 發表于 01-10 15:25 ?249次閱讀

    阿里云升級通義靈碼AI程序員,全面上線

    和JetBrains IDEs兩大主流開發環境,這意味著開發者可以在自己熟悉的開發平臺上,無縫接入并使用這款AI工具。 除了支持主流開發環境
    的頭像 發表于 01-09 11:16 ?276次閱讀

    ROSCon China 2024 | RDK第一本教材來了!地瓜機器人與古月居發布新書《ROS 2智能機器人開發實踐》

    手古月居共同推出首本基于RDK機器人開發者套件的教材——《ROS 2智能機器人開發實踐》。該書由地平線創始
    發表于 12-10 10:56 ?256次閱讀

    鴻蒙機器人與鴻蒙開發板聯動演示

    鴻蒙機器人與鴻蒙開發板聯動演示,機器人的角色為迎賓機器人開發板負責人賓客出現監聽
    發表于 12-02 14:55

    今晚直播!OpenHarmony應用開發精品課程第二期來啦~

    原文標題:今晚直播!OpenHarmony應用開發精品課程第二期來啦
    的頭像 發表于 11-20 15:24 ?203次閱讀

    智駕科技企業地平線登陸港交所

    近日,智駕科技企業地平線地平線機器人-W,股票代碼:9660.HK)在香港交易所主板成功掛牌上市,募資總額高達54.07億港元,成為港股今年最大的科技IPO。
    的頭像 發表于 10-28 16:37 ?320次閱讀

    第五屆長沙·中國1024程序員節開幕

    場精彩活動將輪番上演。超200名海內外技術人員圍繞人工智能、數據技術等前沿領域展開深入研討。 本屆1024程序員節中機器人與具身智能、大模型等主題引發熱烈討論;程序員開發者如何利用生
    的頭像 發表于 10-25 15:42 ?228次閱讀

    中國自動駕駛第一股的地平線機器人正式上市

    10月24日,被譽為“中國自動駕駛領域的領頭羊”的地平線機器人在港交所成功上市。   據公告,地平線機器人每股定價3.99港元,共發行13.55億股,每手交易包含600股,所得款
    的頭像 發表于 10-25 11:05 ?829次閱讀

    華為原生鴻蒙之夜官宣1024程序員節彩蛋:與鴻蒙開發者共碼未來

    歷史性突破!會上,華為終端BG CEO何剛向所有鴻蒙開發者致以誠摯的敬意,同時官宣在10月24日程序員節,華為將舉辦以“共碼未來,待到山花爛漫時”為主題的致敬鴻蒙開發者專屬活動,希望更多開發者
    的頭像 發表于 10-23 15:01 ?229次閱讀
    華為原生鴻蒙之夜官宣1024<b class='flag-5'>程序員</b>節彩蛋:與鴻蒙<b class='flag-5'>開發者</b>共碼未來

    兆易創新亮相2024地平線地瓜機器人開發者

    日前,以“加速智能生長”為主題的“2024地瓜機器人開發者日暨新品發布”活動在深圳成功舉辦。兆易創新作為地瓜機器人優質生態合作伙伴,受邀出席大會。中央市場部王霄受邀參加議程中的DUP教育生態聯盟研討會并做了《“兆易創新+地瓜
    的頭像 發表于 10-17 09:47 ?472次閱讀

    必易微受邀參加美的集團第二期電控硬件專項訓練營

    必易微系統應用總監文鵬先生受邀參加美的集團第二期電控硬件專項訓練營,面向訓練營全體學員深入講授《SSR 反激拓撲及 PWM IC 工作原理》的專題課程,分享其豐富的專業知識與經驗。
    的頭像 發表于 09-25 11:06 ?410次閱讀

    地平線助力鑒智機器人多款中階方案斬獲定點合作

    近日,智能駕駛系統供應商鑒智機器人基于地平線征程6E打造的多款中階方案獲得頭部車企與Tier-1定點,并已正式啟動量產交付開發
    的頭像 發表于 07-30 09:20 ?691次閱讀
    <b class='flag-5'>地平線</b>助力鑒智<b class='flag-5'>機器人</b>多款中階方案斬獲定點合作

    ROS讓機器人開發更便捷,基于RK3568J+Debian系統發布!

    。 ROS系統主要特點有哪些 (1) 提供豐富的機器人算法庫 機器人的各種控制以及通信離不開算法庫的支持,ROS系統提供豐富且功能強大的機器人算法庫,如坐標變換、運動控制等。機器人
    發表于 07-09 11:38

    “千帆杯”第二期十萬大獎花落誰家?TOP10名單出爐!

    千帆杯AI原生應用開發挑戰賽第二期賽題“賀歲靈感模型”已于2月28日圓滿結束。經過嚴格的自動評估和人工復審后,現已決出TOP10選手!
    的頭像 發表于 03-08 10:21 ?440次閱讀
    “千帆杯”<b class='flag-5'>第二期</b>十萬大獎花落誰家?TOP10名單出爐!

    華為宣布HarmonyOS NEXT鴻蒙星河版開發者預覽面向開發者開放申請

    華為宣布HarmonyOS NEXT鴻蒙星河版開發者預覽面向開發者開放申請,這意味著鴻蒙生態進入第二階段,將加速千行百業的應用鴻蒙化。
    的頭像 發表于 01-29 16:42 ?1464次閱讀
    華為宣布HarmonyOS NEXT鴻蒙星河版<b class='flag-5'>開發者</b>預覽面向<b class='flag-5'>開發者</b>開放申請
    主站蜘蛛池模板: 伊人香蕉在线播放视频免费 | 色翁荡息又大又硬又粗又爽电影 | 无人区日本电影在线观看 | 日本少妇内射视频播放舔 | 久久re视频这里精品一本到99 | 神马影院在线eecss伦理片 | 96.8在线收听 | 9277在线观看免费高清完整版 | 欧美日韩亚洲成人 | 国产亚洲国际精品福利 | 中文在线无码高潮潮喷在线 | 伊人精品国产 | 麻豆文化传媒一区二区 | 两个洞一起插哦!好刺激 | 国产亚洲视频在线观看 | 不用播放器的黄 | 国产色欲一区二区精品久久呦 | 久久精品免费看网站 | 亚洲第一成年人网站 | 亚洲欧美中文字幕网站大全 | 国产高清视频青青青在线 | AV无码久久无遮挡国产麻豆 | 永久免费观看视频 | 欧洲精品不卡1卡2卡三卡四卡 | GOGOGO高清在线播放免费 | 一本色道久久综合亚洲精品加 | 少妇第一次交换 | 在线观看中文 | 国产成人免费不卡在线观看 | 无颜之月5集全免费看无删除 | 伊人影院中文字幕 | 日本超A大片在线观看 | 丰满女朋友在线观看中文 | 免费观看久久 | 国产精品AV视频一二三区 | 美女张开腿露尿口给男人亲 | 亚洲.日韩.欧美另类 | 丝袜足控免费网站xx91 | 久久国产高清字幕中文 | 啪啪后入内射日韩 | 国产一区二区三区在线看片 |