一,準(zhǔn)備工作
準(zhǔn)備工作詳情見(jiàn)前幾節(jié)內(nèi)容:

- 旭日X3派已燒錄好地平線提供的Ubuntu20.0.4或Linux系統(tǒng)鏡像;
- 旭日X3派已成功安裝TogetherROS;
- 旭日X3派已安裝F37 sensor;
- 和旭日X3派在同一網(wǎng)段(有線或者連接同一無(wú)線網(wǎng),IP地址前三段需保持一致)的PC;
- 小車(chē)硬件準(zhǔn)備。
二,啟動(dòng)官方例程
使用MobaXterm,SSH登錄,建立一個(gè)終端,輸入以下指令:
# 配置TogetherROS環(huán)境 source /opt/tros/setup.bash # 從TogetherROS的安裝路徑中拷貝出運(yùn)行示例需要的配置文件。 cp -r /opt/tros/lib/mono2d_body_detection/config/ . #啟動(dòng)launch文件 ros2 launch body_tracking hobot_body_tracking_without_gesture.launch.py
三,啟動(dòng)小車(chē)接收node控制程序
上面的人體識(shí)別程序全部使用官方教程。但小車(chē)控制程序,需要根據(jù)自己的小車(chē)進(jìn)行修改,需要另外一個(gè)接收消息的程序。我的小車(chē)和官方的不一樣,所以不能直接使用官方代碼了,原理官方有介紹:
下面是訂閱/cmd_vel話題的控制消息程序
from geometry_msgs.msg import Twist import rclpy from rclpy.node import Node from std_msgs.msg import String import Hobot.GPIO as GPIO import time import sys import os import serial import serial.tools.list_ports output_pin26 = 26 output_pin28 = 28 output_pin38 = 38 # BOARD 緙栫爜 38 output_pin40 = 40 GPIO.setmode(GPIO.BOARD) GPIO.setup(output_pin26, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(output_pin28, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(output_pin38, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(output_pin40, GPIO.OUT, initial=GPIO.LOW) uart_dev='/dev/ttyS3' baudrate = 115200 try: ser = serial.Serial(uart_dev, int(baudrate), timeout=1) # 1s timeout print("open serial sucess") except Exception as e: print("open serial failed!\n") class CmdNode(Node): def __init__(self,name): super().__init__(name) self.sub_cmd = self.create_subscription(Twist,"cmd_vel",self.recv_cmd_callback,6) def recv_cmd_callback(self,cmd): self.cmd_speed=cmd._linear._x #獲取平移運(yùn)動(dòng)的步長(zhǎng) self.cmd_angular=cmd._angular._z #獲取旋轉(zhuǎn)運(yùn)動(dòng)的步長(zhǎng) # print("get msg sucess") if(self.cmd_speed>0): GPIO.output(output_pin26, GPIO.HIGH) GPIO.output(output_pin28, GPIO.LOW) GPIO.output(output_pin38, GPIO.HIGH) GPIO.output(output_pin40, GPIO.LOW) print("111") elif(self.cmd_angular>0): GPIO.output(output_pin26, GPIO.LOW) GPIO.output(output_pin28, GPIO.LOW) GPIO.output(output_pin38, GPIO.HIGH) GPIO.output(output_pin40, GPIO.LOW) print("222") elif(self.cmd_angular<0): GPIO.output(output_pin26, GPIO.HIGH) GPIO.output(output_pin28, GPIO.LOW) GPIO.output(output_pin38, GPIO.LOW) GPIO.output(output_pin40, GPIO.LOW) print("333") else: GPIO.output(output_pin26, GPIO.LOW) GPIO.output(output_pin28, GPIO.LOW) GPIO.output(output_pin38, GPIO.LOW) GPIO.output(output_pin40, GPIO.LOW) print("444") def main(args=None): rclpy.init(args=args) #初始化庫(kù) sub_node = CmdNode("sub") #新建節(jié)點(diǎn)對(duì)象 rclpy.spin(sub_node) #spin循環(huán)節(jié)點(diǎn) rclpy.shutdown #關(guān)閉客戶端 if __name__ == '__main__': main() 好了,準(zhǔn)備好程序,另外新建一個(gè)終端,輸入指令 # 配置TogetherROS環(huán)境 source /opt/tros/setup.bash #啟動(dòng)訂閱消息程序 python3 /app/40pin_samples/zyd_ros_cmd_control.py
end
原作者:zhengyad
原鏈接:本文轉(zhuǎn)自地平線開(kāi)發(fā)者社區(qū)
-
嵌入式
+關(guān)注
關(guān)注
5141文章
19537瀏覽量
315139 -
人工智能
+關(guān)注
關(guān)注
1804文章
48726瀏覽量
246634 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8492瀏覽量
134118 -
AIoT
+關(guān)注
關(guān)注
8文章
1481瀏覽量
32052
發(fā)布評(píng)論請(qǐng)先 登錄
Arm攜手地平線推動(dòng)汽車(chē)智能化變革
地平線與博世達(dá)成戰(zhàn)略合作
地平線城區(qū)輔助駕駛系統(tǒng)HSD解讀
地平線推出L2城區(qū)輔助駕駛系統(tǒng)HSD
地平線與上汽集團(tuán)深化戰(zhàn)略合作
知行科技與地平線達(dá)成戰(zhàn)略合作
地平線SuperDrive相關(guān)問(wèn)答
地平線SuperDrive首發(fā)三大黑科技,決勝智能化競(jìng)爭(zhēng)下半場(chǎng)

地平線SuperDrive首發(fā)三大黑科技
光庭信息獲地平線堅(jiān)實(shí)后盾獎(jiǎng)
地平線榮獲比亞迪“最佳合作伙伴獎(jiǎng)”
智駕科技企業(yè)地平線登陸港交所
ETAS支持地平線征程6 AUTOSAR版本發(fā)布
地平線Journey 3的電源設(shè)計(jì)

評(píng)論