【地平线旭日X3派试用体验】复现《人体跟随》小车(第五节)

一,准备工作准备工作详情见前几节内容:
旭日x3派已烧录好地平线提供的ubuntu20.0.4或linux系统镜像;旭日x3派已成功安装togetherros;旭日x3派已安装f37 sensor;和旭日x3派在同一网段(有线或者连接同一无线网,ip地址前三段需保持一致)的pc;小车硬件准备。二,启动官方例程使用mobaxterm,ssh登录,建立一个终端,输入以下指令:
# 配置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
三,启动小车接收node控制程序上面的人体识别程序全部使用官方教程。但小车控制程序,需要根据自己的小车进行修改,需要另外一个接收消息的程序。我的小车和官方的不一样,所以不能直接使用官方代码了,原理官方有介绍:
下面是订阅/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 #获取平移运动的步长 self.cmd_angular=cmd._angular._z #获取旋转运动的步长 # 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) #初始化库 sub_node = cmdnode(sub) #新建节点对象 rclpy.spin(sub_node) #spin循环节点 rclpy.shutdown #关闭客户端 if __name__ == '__main__': main() 好了,准备好程序,另外新建一个终端,输入指令 # 配置togetherros环境 source /opt/tros/setup.bash #启动订阅消息程序 python3 /app/40pin_samples/zyd_ros_cmd_control.py
end
原作者:zhengyad
原链接:本文转自地平线开发者社区

物联网在报警行业上的应用方案分析
循环系统:从制造业到用户体验
数字钱包Edge的隐私性问题探讨
特斯拉在中国大陆建成逾 490 个超级充电站 覆盖中国 250 多个城市
数字货币共识算法的优缺点分析
【地平线旭日X3派试用体验】复现《人体跟随》小车(第五节)
雷军的小米招股书公开信说,小米是互联网公司
人工智能可为病人、医院做哪些事情
整流与逆变有何区别
集成光学新赛道上的新“跨越”
什么是压电MEMS传感器
多相DC-DC转换的优缺点 何时使用多相DC-DC转换?
主流的数据中心网络结构介绍
如何设计可靠性更高、尺寸更小、成本更低的高电压系统解决方案
可编程逻辑现在是怎样的发展趋势
全球股市哀鸿一片,科创板 2 5只个股却全线上涨!
栅极驱动器在太阳能收集设计中的应用
英特佩斯:深耕汽车电子测量市场
我国今年前5月新增人工智能相关企业近11万家
华为荣耀积极布局VR,VR市场迎来真正的玩家?