ros系统下通过pyserial模块实现串口通讯(Python)

经过几天的摸索终于实现了:
在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);

猜你喜欢

转载自blog.csdn.net/ailianda/article/details/84498861