![7571d4eed73ac848f772eafd2051fe5a.png](https://i-blog.csdnimg.cn/blog_migrate/22cb343d023f76e4eef7d9a521b03c79.jpeg)
运动底盘是移动机器人的重要组成部分,不像激光雷达、IMU、麦克风、音响、摄像头这些通用部件可以直接买到,很难买到通用的底盘。一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的;另一方面是因为底盘包含软硬件整套解决方案,是很多机器人公司的核心技术,一般不会随便公开。出于强烈的求知欲与学习热情,我想自己DIY一整套两轮差分底盘,并且将完整的设计过程公开出去供大家学习。说干就干,本章节主要内容:
1.stm32主控硬件设计
2.stm32主控软件设计
3.底盘通信协议
4.底盘ROS驱动开发
5.底盘PID控制参数整定
6.底盘里程计标定
5.底盘PID控制参数整定
我们的miiboo机器人底盘的stm32控制板中已经内置了整定好的PID参数,如果选用我们提供的控制板和电机,一般情况下是不需要整定PID的。
对于想体验一下PID参数整定过程或将我们的miiboo机器人底盘的stm32控制板应用到其他地方的朋友,这里给出了整定PID的整个操作过程和思路,方便大家学习和更深层次的研究。首先,对PID三个参数定性的分析,先有个感性的认识,如图49。
![4a1d42d5e986baf8c3898cef4c2332dd.png](https://i-blog.csdnimg.cn/blog_migrate/18b422ff0739c7fe1df4495421301f0b.jpeg)
其次,由于我们的miiboo机器人底盘的stm32控制板中采用的是增量式PID,所以这里对增量式PID参数的特殊性进行一些说明,如图50。
![b266b66c2b0031fb61f4703b1fc46302.png](https://i-blog.csdnimg.cn/blog_migrate/ebb56bd2c0eed82d40ae692a7e017406.jpeg)
位置型PID的参数整定过程一般是,先整定KP,然后整定KI,最后整定KD;对比位置型PID与增量型PID的数学表达式,可以发现位置型KP和增量型KI一样,位置型KI和增量型KD一样,位置型KD和增量型KP一样,如图51。这样,增量型PID应该先整定KI,然后整定KD,最后整定KP。这一点需要特别注意,弄错顺序的话会发现整定规律完全不适用的。
![69a22dec81d2b2ae41f099a418de072d.png](https://i-blog.csdnimg.cn/blog_migrate/0fa0139da515fbfbd4f0efeb8b806ebe.png)
在机器人上进行具体PID整定操作之前,先对整定原理做一些讲解。下面的表述是针对增量型PID的,即KI为比例参数、KD为积分参数、KP为微分参数。这里使用试凑法对miiboo机器人底盘的增量PID参数进行整定:
第1步:
首先只整定比例部分。比例系数KI由小变大,观察相应的系统响应,直到得到反应快,超调小的响应曲线。系统若无静差或静差已小到允许范围内,并且响应效果良好,那么只须用比例调节器即可。
第2步:
若稳态误差不能满足设计要求,则需加入积分控制。整定时先置KD为较小值,并将经第1步整定得到的KI减小些( 如缩小为原值的0.8倍 ),然后增大KD,并使系统在保持良好动态响应的情况下,消除稳态误差。这种调整可根据响应曲线的状态,反复改变KI及KD,以期得到满意的控制过程。
第3步:
若使用比例-积分调节器消除了稳态误差,但动态过程仍不能满意,则可加入微分环节。在第2步整定的基础上,逐步增大KP,同时相应地改变KI和KD,逐步试凑以获得满意的调节效果。
原理了解后,就要到实际的miiboo机器人上进行整定了,首先需要将底盘的DATA-uart2与DEBUG-uart1串口连接到机器人的主板树莓派3中,并确保被树莓派识别的串口设备号为底盘驱动设置的值,如果串口号不匹配需要先进行匹配,关于这部分内容将在miiboo机器人SLAM导航中做更详细的展开。然后,需要启动底盘控制节点、底盘调试节点、键盘控制节点。
#打开终端,启动底盘控制节点
roslaunch miiboo_bringup minimal.launch
#再打开一个终端,启动底盘调试节点,按提示输入命令
roslaunch miiboo_bringup pid_set.launch
#再打开一个终端,键盘控制节点
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
#再打开一个终端,用rqt_plot对底盘速度曲线进行绘制,指定曲线数据来源的topic
rosrun rqt_plot rqt_plot
键盘控制节点teleop_twist_keyboard需要通过apt-get命令来安装,rqt_plot是ROS提供的绘图工具,关于这些的具体使用方法将在miiboo机器人SLAM导航中做更详细的展开。
最后,就是通过观察速度曲线,按照试凑法的步骤,在底盘调试节点的终端中输入相应的kp、ki、kd参数,不断重复这个过程直到速度曲线达到一个比较满意的形状。rqt_plot速度曲线的样子如图52所示。
![c3d06a17a8625df673b2ebcee4f221fa.png](https://i-blog.csdnimg.cn/blog_migrate/98f7e857bb28434edb13f33ae3c2ce0f.jpeg)
![22cd490213ec26edc3b132272d820033.png](https://i-blog.csdnimg.cn/blog_migrate/eb7f93555da28514d56b75d281aba250.jpeg)
![ce10a0d6d460da2270cd43ed5baee906.png](https://i-blog.csdnimg.cn/blog_migrate/77cf2be858851143b541879dec17b33c.jpeg)
![aac6fb8782c365da73d0619897a89362.png](https://i-blog.csdnimg.cn/blog_migrate/ecc924d5e9817a4719caf21ef1fc0909.jpeg)
![0d0ceac58b37176dc58570c4565b37d8.png](https://i-blog.csdnimg.cn/blog_migrate/030cedee667f78100056a19623a2a78e.jpeg)
![26d435cb122d7853605795957326266a.png](https://i-blog.csdnimg.cn/blog_migrate/a10f1b265d860cd5299a2835d35cdc57.png)
https://b23.tv/av48918514
![6b05b1405a8b6247a83eb8e7c128111f.png](https://i-blog.csdnimg.cn/blog_migrate/075f20e61991dbf18d886eb3b09815af.jpeg)
https://b23.tv/av49401644
![b80a4aaf308689b9b6328445c3ad40ee.png](https://i-blog.csdnimg.cn/blog_migrate/8586993215436838ac4d49712a7d11b8.png)
https://www.bilibili.com/video/av61448040