SLAM+语音机器人DIY系列:(三)感知与大脑——1.ydlidar-x4激光雷达

摘要                                              

在个人想象中机器人首先应该能自由的走来走去,而后应该能流利的与主人对话。朝着这个理想,我准备设计一个能自由行走,而且能够与人语音对话的机器人。实现的关键是让机器人能经过传感器感知周围环境,并经过机器人大脑处理并输出反馈和执行动做。本章节涉及到的传感器有激光雷达、IMU、轮式里程计、麦克风、音响、摄像头,和用于处理信息的嵌入式主板。关于传感器的ROS驱动程序开发和在机器人上的使用在后面的章节会展开,本章节重点对机器人传感器和嵌入式主板进行讲解,主要内容:html

1.ydlidar-x4激光雷达python

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

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

4.音响麦克风与摄像头django

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

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



1.ydlidar-x4激光雷达                  

在移动机器人中,获取机器人周围障碍物和环境的轮廓形状是很是重要的。使用激光雷达正是为了实现这个目的。利用扫描获得的障碍物信息,机器人就能够利用SLAM创建地图、并进行避障和自主导航。考虑到成本,推荐你们选用低成本的2D激光雷达,这里推荐的ydlidar-x4激光雷达正是一款极低成本的2D激光雷达,做为学习性能足够用了。网络

1.1.硬件概述                  

(图1ydlidar-x4激光雷达实物架构

雷达主体由激光测距模组和电机构成,雷达主体须要链接转接板,用于实现外部供电和UARTUSB,如图1ide

(图2ydlidar-x4激光雷达性能参数

测距频率是指每秒钟测距的次数(即激光测距模组的采样率),测距频率默认为5KHz;扫描频率是指电机每秒钟转过的圈数,扫描频率默认为8Hz;测距范围是指落在此距离范围的障碍物才能被测量,测距范围为0.12~10m;扫描角度为0~360度,也就是可以360度全方位扫描;测距分辨率就是测距精度;角度分辨率就是两个相邻扫描点之间的夹角。ydlidar-x4激光雷达性能参数,如图2

关于激光雷达的性能参数对SLAM建图与避障导航的影响,这里作一个简短的分析。

扫描频率:

扫描频率越高,电机转动一圈的时间约短,扫描获取1帧雷达数据的时间越短,这样可使SLAM建图和避障导航实时性更好。简单点说就是机器人运动速度很快时,扫描到的点云数据连续性也比较好,这有利于SLAM算法创建稳定的地图,有利于避障导航算法及时发现并避开障碍物。

测距范围:

小于测距范围最小值的区域就是雷达的测量盲区,处于盲区中的障碍物没法被探测,因此,盲区固然是越小越好以保证机器人不发生碰撞;大于测距范围最大值的区域就是雷达超量程的区域,在超量程的区域的障碍物没法被探测或者能够探测但偏差很大,因此,在比较开阔的环境下应该采用远距离量程的雷达。

扫描角度:

大部分雷达都是0~360度全方位扫描的,因此就没什么太大的区别了,其实就是机器人不用转动身体的状况下就能一次性扫描出四周的障碍物信息。

测距分辨率:

测距分辨率也就是测距精度,测距精度越高固然有利于SLAM建图和避障导航,可是测距精度越越高的雷达成本固然也越高,如今国产低成本的雷达广泛为厘米级(cm)的精度,差一点的雷达5cm左右的精度,稍微好一点的雷达2cm左右的精度,若是要达到毫米级(mm)的精度成本就很是高了。

角度分辨率:

角度分辨率决定了两个相邻点云之间的夹角,因为雷达是经过旋转进行扫描的,随着距离增长点云会愈来愈稀疏。若是角度分辨率比较低,在扫描远距离物理时只能获得很是稀疏的几个点云,这样的点云基本上没有什么用处了。

角度分辨率 = 360 /(测距频率 / 扫描频率)  

从上面的角度分辨率计算公式来看,通常测距频率为常数值(由激光模组特性决定),那么经过下降扫描频率能够提高角度分辨率,但同时扫描频率下降会影响雷达的实时性,因此这是一个权衡的过程,根据实际状况作选择。

1.2.工做原理                 

激光雷达之因此流行,得益于它可以精确的测距。主流的激光雷达基于两种原理:一种是三角测距法,另外一种是飞行时间(TOF)测距法。其实很好理解,就是利用了最基本的数学与物理知识。

(图3)三角测距原理

三角测距原理如图3,激光器发射一束激光,被物体A反射后,照射到图像传感器的A,这样就造成了一个三角形,经过解算能够求出物体A到激光器的距离。激光束被不一样距离的物体反射后,造成不一样的三角形。咱们不难发现随物体距离不断变远,反射激光在图像传感器上的位置变化会愈来愈小,也就是愈来愈难以分辨。这正是三角测距的一大缺点,物体距离越远,测距偏差越大。

(图4TOF测距原理

飞行时间(TOF)测距原理如图4,激光器发出激光时,计时器开始计时,接收器接收到反射回来的激光时,计时器中止计时,获得激光传播的时间后,经过光速必定这个条件,很容易计算出激光器到障碍物的距离。因为光速传播太快了,要获取精确的传播时间太难了。因此这种激光雷达天然而然成本也会高不少,可是测距精度很高。

1.3.在机器人中使用ydlidar-x4激光雷达  

5在机器人中使用ydlidar-x4激光雷达

ydlidar-x4激光雷达经过串口与机器人相链接,机器人中经过运行雷达ROS驱动,来实现读取串口的雷达数据和将雷达数据发布到/scan这个主题,这样机器人上的其它节点就能够经过订阅/scan主题来获取激光雷达数据了。关于雷达ROS驱动在机器人上的具体使用,将在后面的章节中具体讲解。

后记                

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

相关文章
相关标签/搜索