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

本文介绍了一种在ROS系统中,通过订阅Twist/cmd_vel消息并利用USB转串口通信,实现实时用灯带反馈小车运行状态的方法。此方案依赖于pyserial模块,通过解析接收到的消息,将小车的线性和角速度信息转换为灯带显示,直观反映小车运动状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过几天的摸索终于实现了:
在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.youkuaiyun.com/as472780551/article/details/79126927);

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值