Skip to content

基于STM32F103的移动底座与ROS通信,包括ROS串口节点、STM32串口收发

Notifications You must be signed in to change notification settings

chrismolony/stm32-ros

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

STM32通过串口与ROS通信

概述

机器人移动底座通过串口与ROS主控系统交互通信,ROS主控系统通过发布速度、角速度等信息控制移动底座按既定要求运动;移动底座通过串口实时上传机器人位置、运动角度等信息到ROS主控系统。

数据接收

移动底座接收ROS主控系统发布过来的运动控制命令,包括线速度、角速度等信息,并附带CRC校验,数据包总长度为15字节。校验算法为将有效数据取异或,即从第三个字节开始取异或。

数据上传

移动底座实时上传机器人运动参数,包括位置、速度、角速度、偏航角等信息。

x-position: 机器人实时x坐标位置y-position: 机器人实时y 坐标位置 x-velocity: 机器人 实时x坐标方向速度y-velocity:机器人实时y坐标方向速度 angular velocity: 机器人当前角速度 pose angular: 机器人当前偏航角度 数据上传的总长度为27字节

使用

  • STM32 将STM32的串口3 与运行ROS系统的串口进行连接 波特率设置为:
 115200  8bits 1stop no parity

将STM32的串口1连接到电脑的一个串口,进行调试信息的观察,建议使用putty连接 串口模式设置:

 9600 8bits 1stop even parity 
  • ROS 节点 ROS 节点文件名为 my_serial_node ,将源文件解压放置~/catkin_ws/src 目录下,回到 ~/catkin_ws 目录下进行编译,该节点需要使用 serial库 直接clone serial 至本地,并与 my_serial_node 放置在同一级目录即可,回到 ~/catkin_ws$ 进行编译:
 $catkin_make 

之后会生成节点 my_serial_node

测试

如果提示串口打不开,需要修改一下串口权限

 $sudo chmod a+x /dev/ttyUSB0

这里不一定是ttyUSB0 , 使用时修改为自己电脑对应的串口 测试时开三个terminal,分别运行

 $roscore  
 $rosrun my_serial_node my_serial_node
 $rosrun turtlesim turtle_teleop_key

此时可以通过键盘方向键发送运动命令,可以在终端窗口观察到信息的发布 如果想查看底层获取的信息可以修改源码添加打印信息,也可以开一个终端,输入一下命令查看:

 $rostopic echo /odom 

备注

本次设计的代码使用键盘模拟发布 cmd_vel 消息,在实际使用时可以用导航功能包代替。移动底座只是手动添加了一些里程计信息,实际使用时可以从移动底座实时获取。 文章链接 详解stm32串口到底如何与ROS实现信息交互

About

基于STM32F103的移动底座与ROS通信,包括ROS串口节点、STM32串口收发

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages