SLAM+语音机器人DIY系列:(四)差分底盘设计——5.底盘PID控制参数整定

摘要                                            

运动底盘是移动机器人的重要组成部分,不像激光雷达、IMU、麦克风、音响、摄像头这些通用部件能够直接买到,很难买到通用的底盘。一方面是由于底盘的尺寸结构和参数是要与具体机器人匹配的;另外一方面是由于底盘包含软硬件整套解决方案,是不少机器人公司的核心技术,通常不会随便公开。出于强烈的求知欲与学习热情,我想本身DIY一整套两轮差分底盘,而且将完整的设计过程公开出去供你们学习。说干就干,本章节主要内容:html

1.stm32主控硬件设计python

2.stm32主控软件设计nginx

3.底盘通讯协议django

4.底盘ROS驱动开发ubuntu

5.底盘PID控制参数整定centos

6.底盘里程计标网络



5.底盘PID控制参数整定            

咱们的miiboo机器人底盘的stm32控制板中已经内置了整定好的PID参数,若是选用咱们提供的控制板和电机,通常状况下是不须要整定PID的。架构

对于想体验一下PID参数整定过程或将咱们的miiboo机器人底盘的stm32控制板应用到其余地方的朋友,这里给出了整定PID的整个操做过程和思路,方便你们学习和更深层次的研究。首先,对PID三个参数定性的分析,先有个感性的认识,如图49ide

(图49PID参数定性分析工具

其次,因为咱们的miiboo机器人底盘的stm32控制板中采用的是增量式PID,因此这里对增量式PID参数的特殊性进行一些说明,如图50

(图50)离散域位置式PID与增量式PID数学表达式

位置型PID的参数整定过程通常是,先整定KP,而后整定KI,最后整定KD;对比位置型PID与增量型PID的数学表达式,能够发现位置型KP和增量型KI同样,位置型KI和增量型KD同样,位置型KD和增量型KP同样,如图51。这样,增量型PID应该先整定KI,而后整定KD,最后整定KP。这一点须要特别注意,弄错顺序的话会发现整定规律彻底不适用的。

(图51)增量式PID参数特殊性说明

在机器人上进行具体PID整定操做以前,先对整定原理作一些讲解。下面的表述是针对增量型PID的,即KI为比例参数、KD为积分参数、KP为微分参数。这里使用试凑法对miiboo机器人底盘的增量PID参数进行整定:

1步:

首先只整定比例部分。比例系数KI由小变大,观察相应的系统响应,直到获得反应快,超调小的响应曲线。系统若无静差或静差已小到容许范围内,而且响应效果良好,那么只须用比例调节器便可。

2步:

若稳态偏差不能知足设计要求,则需加入积分控制。整定时先置KD为较小值,并将经第1步整定获得的KI减少些( 如缩小为原值的0.8),而后增大KD,并使系统在保持良好动态响应的状况下,消除稳态偏差。这种调整可根据响应曲线的状态,反复改变KIKD,以期获得满意的控制过程。

3步:

若使用比例-积分调节器消除了稳态偏差,但动态过程仍不能满意,则可加入微分环节。在第2步整定的基础上,逐步增大KP,同时相应地改变KIKD,逐步试凑以得到满意的调节效果。

原理了解后,就要到实际的miiboo机器人上进行整定了,首先须要将底盘的DATA-uart2DEBUG-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_plotROS提供的绘图工具,关于这些的具体使用方法将在miiboo机器人SLAM导航中作更详细的展开。

最后,就是经过观察速度曲线,按照试凑法的步骤,在底盘调试节点的终端中输入相应的kpkikd参数,不断重复这个过程直到速度曲线达到一个比较满意的形状。rqt_plot速度曲线的样子如图52所示。

(图52rqt_plot速度曲线

后记              

------SLAM+语音机器人DIY系列【目录】快速导览------

第1章:Linux基础

1.Linux简介

2.安装Linux发行版ubuntu系统

3.Linux命令行基础操做

第2章:ROS入门

1.ROS是什么

2.ROS系统总体架构

3.在ubuntu16.04中安装ROS kinetic

4.如何编写ROS的第一个程序hello_world

5.编写简单的消息发布器和订阅器

6.编写简单的service和client

7.理解tf的原理

8.理解roslaunch在大型项目中的做用

9.熟练使用rviz

10.在实际机器人上运行ROS高级功能预览

第3章:感知与大脑

1.ydlidar-x4激光雷达

2.带自校准九轴数据融合IMU惯性传感器

3.轮式里程计与运动控制

4.音响麦克风与摄像头

5.机器人大脑嵌入式主板性能对比

6.作一个能走路和对话的机器人

第4章:差分底盘设计

1.stm32主控硬件设计

2.stm32主控软件设计

3.底盘通讯协议

4.底盘ROS驱动开发

5.底盘PID控制参数整定

6.底盘里程计标

第5章:树莓派3开发环境搭建

1.安装系统ubuntu_mate_16.04

2.安装ros-kinetic

3.装机后一些实用软件安装和系统设置

4.PC端与robot端ROS网络通讯

5.Android手机端与robot端ROS网络通讯

6.树莓派USB与tty串口号绑定

7.开机自启动ROS节点

第6章:SLAM建图与自主避障导航

1.在机器人上使用传感器

2.google-cartographer机器人SLAM建图

3.ros-navigation机器人自主避障导航

4.多目标点导航及任务调度

5.机器人巡航与现场监控

第7章:语音交互与天然语言处理

1.语音交互相关技术

2.机器人语音交互实现

3.天然语言处理云计算引擎

第8章:高阶拓展

1.miiboo机器人安卓手机APP开发

2.centos7下部署Django(nginx+uwsgi+django+python3)

----------------文章将持续更新,敬请关注-----------------

 

若是你们对博文的相关类容感兴趣,或有什么技术疑问,欢迎加入下面的《SLAM+语音机器人DIY》QQ技术交流群,一块儿讨论学习^_^

关于咱们:

视频教程:

 

https://www.bilibili.com/video/av61448040

相关文章
相关标签/搜索