2.6 ROS小车STM32底层控制代码
经过之前几篇文章,我相信大家一定对下面这些模块都已经有些了解了。今天,我们将编写ROS小车STM32单片机底层控制的最后一篇文章。我们将一起按照之前的软件流程,将所有的代码整合到一个工程中去。
在公众号:小白学移动机器人,发送:ROS小车底层,即可获得源码工程文件。
相信大家对配置代码都很清楚了,这里直接描述软件执行流程,以及部分代码展示
注意:该工程文件中的STM32与ROS通信的程序和前面写的文章提供的程序,有一点出入,之前是为了方便理解。大家调用的时候注意即可。
2.6.1 软件执行流程
实际上大家都知道,我们的程序中,除了main.c的while外,还有串口1接收中断服务函数,外部触发中断服务函数。他们分别执行了一些软件流程。
(1)while中的流程功能:完成向ROS发送左右轮速、航向角、控制位;调试;获取MPU6050的yaw值。
(2)串口1中断服务函数流程功能:接收从ROS发送过来的,对左右电机的控制数据、控制位。
(3)外部触发中断服务函数流程功能:程序灯、yaw温漂累积、电池电压测量(可以没有)、电机测速、电机PID速度控制、设置PWM
整体的软件流程就是这个样子,感觉已经描述的十分清楚了,具体的看代码。
2.6.2 代码
(1)主程序以及串口1的中断服务函数
#include
(2)外部中断服务函数
#include
2.6.3 总结
ROS小车的底层控制代码就到这里了,之后还会做优化,可能会更新。如果有不懂的地方,都可以找小编解答。系列文章中,可能一些地方代码的使用并不是很好,也希望大家多多指正。
之后就是ROS层的文章了,希望大家提前完成linux系统的安装。网上的linux系统安装的教程十分多并且详细,这里就不在重复了。Linux系统镜像以及参考教程的。在公众号:小白学移动机器人,发送:系统镜像,即可获得下面镜像以及教程。 树莓派(Ubuntu mate 16.04)、PC(Ubuntu 16.04)的镜像文件,以及TX2刷机的参考教程。
下面陆续会有ROS安装、ROS小车模型文件编写、ROS小车启动文件编写、建图算法安装与测试、导航算法安装与测试。敬请期待。