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

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

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

本文主要介绍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解析器结点中解放出来。下面就来一一讲解:

一、工程目录

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

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

下面看一下我写的配置:

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

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

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

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

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

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

写好底盘的代码后我们在我们的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!"则说明连接成功。

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

带GPS、4路编码器、4路电机输出、三路超声波、8路PWM输出、板载MPU9250、DHT22(温湿度检测)、OLED显示、外接按键输入接口、RGB_LED灯、电压检测、电机过流保护、5路串口输出、CAN总线接口、5V4A电压输出(给树莓派供电)、还引出了很多的IO口、资源够用、频率够快、目前底层驱动代码还在编写、可能要过一段时间才能写完、到时也会和大家分享、希望大家能多多关注、相互学习。

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

目前也开发好了4WD的底盘工程,有需要的可以留言

猜你喜欢

转载自blog.csdn.net/qq_36349536/article/details/82773064