ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)

时间:2024-04-06 18:50:57

本人电子信息工程专业,致力于图像开发两年,因为现在导师要求做一个智能机器人,因此要从底层开始设计

也希望能给那些想要自己动手制作小车的朋友一点参考。

本文主要介绍ROS下使用rosserial和STM32(ST库)进行通信,移植网上各位大神的代码,实现自己想要的功能

主要参考:https://www.baidu.com/link?url=HHBcr34K6SbLnst52P-4mSGPKxvCAQXGwGbHb5C_cp97Oe8f8cDQ8My__1_I3D-B0MezdtSdFuXy8awy6odoeqcmc8YiFrvOT8nCAFGr-YqwF1TCLtuqvRBkzquqXlP0&wd=&eqid=b7c144b80000b29c000000065ba1fb47

STM32工程中集成了ros_lib让STM32像arduino一样操作,让广大机友从写stm32解析器结点中解放出来。下面就来一一讲解:

一、工程目录

ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)

1是延时函数; 2是串口配置;3是定义写的数据类型;4是读的数据类型;5、6是ros_lib自带的无需修改;7则是把STM32串口和ros_lib结合起来的桥梁;

本文配置的串口是串口1波特率是57600,大家可以根据自己的实际需求来更改对应的串口即可,要保证配置好的串口是可以手发正常的;

下面看一下我写的配置:

ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)

 

ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)

当配置好这个了之后我们就可以开始主函数代码了:

引入自己写的头文件、F1的头文件和ROS的头文件

ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)

先定义一个nh、和我们要发布和订阅的主题名称。写法和我们在ubuntu上写ROS程序没有太大的差别

ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)

然后就是等待连接和进行订阅和发布:

ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)

然后我们在一个大循环中使用系统时钟进行主题的定时发布和订阅:

ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)

感觉使用这种方法的好处是不用一直去对串口数据进行处理,但是不好的就是速度没有直接使用串口那么快。

写好底盘的代码后我们在我们的Ubuntu(ROS系统)中使用:git clone https://github.com/ros-drivers/rosserial.git  下载rosserial的包然后使用catkin_make进行编译,编译完成后先运行roscore  然后再运行rosrun rosserial_python serial_node.py /dev/ttyUSB0

如果出现  "robot_Star Connected!"则说明连接成功。

附上我自己做的板子,支持大功率电机和电调两种控制,因为我自己的机子使用的是电调驱动的

ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)

工程代码下载:https://download.csdn.net/download/qq_36349536/10676733