经过几天的摸索终于实现了:
在ros系统下,订阅Twist/cmd_vel 消息,经过USB转串口通信,实现了通过灯带实时反映小车(差速)运行状态的功能。
通信部分主要依赖pyserial模块的功能实现。
#!/usr/bin/env python
#coding=utf-8
import rospy
import serial
from geometry_msgs.msg import Twist
import roslib;roslib.load_manifest('ros_bringup')
import time
ser = serial.Serial(port='/dev/tty*', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=2,rtscts=True,dsrdtr=True)
ser.isOpen()
res=ser.readall()
def cmdcallback(msg):
#rospy.Publisher('/cmd_vel',Twist)
rospy.loginfo("Received a /cmd_vel message!")
rospy.loginfo("Linear Components: [%f, %f, %f]"%(msg.linear.x, msg.linear.y, msg.linear.z))
rospy.loginfo("Angular Components: [%f, %f, %f]"%(msg.angular.x, msg.angular.y, msg.angular.z))
#####
数据处理过程省略
#####
ser.write(data)
s = ser.read(1)
print(s)
def LED():
rospy.init_node('cmd_vel_listener')
rospy.Subscriber("/cmd_vel",Twist,cmdcallback)
rospy.spin()
if __name__=="__main__":
LED()
总体架构就是这样,其中也参考了(https://blog.csdn.net/as472780551/article/details/79126927);