Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gmdong/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

Contributors

Languages

  • C 93.5%
  • Assembly 5.9%
  • Other 0.6%

AltStyle によって変換されたページ (->オリジナル) /