rosserial、ros_lib移植到STM32讲解

7 篇文章 1 订阅
5 篇文章 0 订阅

这边博客主要是对前面两篇博客的一个补充(ROS使用STM32F407ZGT6作为底盘控制器、ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)),再次说明一下本文的主要参考:

1、https://blog.csdn.net/ykevin0510/article/details/72725633?locationNum=7&fps=1

2、rosserial的详细介绍:http://wiki.ros.org/rosserial

3、rosserial_client的介绍:http://wiki.ros.org/rosserial_client

4、rosserial_client的教程程:http://wiki.ros.org/rosserial_client/Tutorials

5、rosserial协议的介绍:http://wiki.ros.org/rosserial/Overview/Protocol

下面我们开始进入正文:

首先看一下整个工程的文件目录:

Bsp文件夹主要放一些配置文件,包括串口、延时、收发的数据定义

Driver文件夹下主要放外设的驱动代码,包括ADC、LED、IMU、OLED、Encoder、Servo等等、如下图:

RosLibs文件夹下主要放ros_lib的文件,如下图:

然后其他的文件就是STM32开发的依赖,这个不做过多讲解。如果不会新建STM32工程的请参考正点原子的库函数教程,本文的知识就是参考了正点原子的库函数教程,可能很多同学会喜欢使用HAL库来进行开发,HAL库可以使用STM32Cube进行图形化配置和初始化IO,但是我个人感觉看代码的话没有那么容易明白,可能之后也会学习吧,如果使用HAL库的话推荐学习的资料是硬石科技录制的视频教程,这些资料在(哔哩哔哩)bilibili上面都有的,我们先看一下STM32Cube图形化的图片

上面可能废话有点多下面就主要讲解移植中需要注意的问题吧:

首先我们要先确认我们的串口程序可以进行正常收发,可以直接使用正点原子的串口,使用串口助手进行测试:

然后就是配置我们的STM32系统时钟,因为要和ROS进行通信,那么他们的时钟上就要保持同步否则就会出现(与设备不同步,正在重启的错误),本文使用的是SysTick心跳用中断进行计数,然后把当前的计数值返回如下图:

配置完了这些就到了配置和ros_lib相关的部分了

首先我们找到STM32Hardware.h文件然后进行如下修改:

这里主要是把我们写好的串口程序给替换掉就可以了

然后就是箭头部分就是我们上面系统时钟所写的millis()函数

到这里的话就参不多配置完成了,这里主要是讲解,大家有需要的还是直接下载ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)这个工程师完全可以使用的,希望我写的博客可以给大家一些帮助。

最近建立了一个DIY交流群,欢迎大家进群交流:

  • 9
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值