SLAM+语音机器人DIY系列:(四)差分底盘设计——6.底盘里程计标

摘要                                            

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

1.stm32主控硬件设计python

2.stm32主控软件设计nginx

3.底盘通讯协议算法

4.底盘ROS驱动开发django

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

6.底盘里程计标centos



6.底盘里程计标                         

机器人底盘运行的精度是衡量底盘的重要指标。底盘精度受里程计的走直线偏差和转角偏差影响。所以,须要对里程计的走直线和转角进行标定,尽可能减少偏差。miiboo机器人底盘的ROS驱动中已经写好了相应的标定程序,跟里程计标定有关的文件主要有:网络

.../miiboo_bringup/launch/check_linear.launch为里程计走直线标定启动文件架构

.../miiboo_bringup/launch/check_angular.launch为里程计转角标定启动文件ide

.../miiboo_bringup/launch/minimal.launch为设置标定参数及底盘控制启动文件

下面是标定步骤过程。

第一步:

打开终端,给标定脚本赋予可执行权限

cd miiboo_bringup/scripts/
sudo chmod +x ./*

第二步:

链接好底盘DATA-uart2串口,启动底盘

roslaunch miiboo_bringup minimal.launch

第三步:

设定前进1米的目标,对走直线进行标定

roslaunch miiboo_bringup check_linear.launch

测量底盘中止时实际走的直线距离M,按下面的规则调整里程计直线参数speed_ratio

若是M > 1米,增大speed_ratio

若是M < 1米,减少speed_ratio

里程计的参数存放在miiboo_bringup/launch/minimal.launch文件中,如图53所示。

(图53)里程计待标定参数

修改好参数后,须要保存,而后从新启动一下底盘节点,这样参数才能生效。

roslaunch miiboo_bringup minimal.launch

重复第三步的操做,直到走直线的偏差达到咱们能接受的范围(好比1%的偏差),则进入下一步。

第四步:

设定旋转360度的目标,对转角进行标定

roslaunch miiboo_bringup check_angular.launch

测量底盘中止旋转时实际转过的角度A,按下面的规则调整里程计转角参数wheel_distance

若是A > 360度,减少wheel_distance

若是A < 360度,增大wheel_distance

上面已经讲过,里程计的参数存放在miiboo_bringup/launch/minimal.launch文件中,如图53所示。

修改好参数后,须要保存,而后从新启动一下底盘节点,这样参数才能生效。

roslaunch miiboo_bringup minimal.launch

重复第四步的操做,直到走转角的偏差达到咱们能接受的范围(好比1%的偏差),则标定完成。

固然,有兴趣的朋友能够阅读miiboo_bringup/scripts/中的标定脚本源码,结合航迹推演算法,理解里程计标定的整个原理。其实wheel_distance这个参数是编码脉冲值与电机轮胎位移值的一个比例系数,简单点说就是电机转过一个编码脉冲,这个时候电机轮胎走过多少距离;wheel_distance这个参数是左右两个轮子的间距。有了这个认识后,咱们能够在这两个参数的理论值附近对参数进行微调,标定起来会更快。

后记                                            

------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

相关文章
相关标签/搜索