移动机器人认知

移动机器人到底是由哪些部分组成的呢,接下来我们就一起认识一下它。

我们先来看一款我们后续内容将要频繁提到的移动机器人——LIMO。LIMO来自松灵机器人,是全球首款集四种运动模态于一体的ROS开发平台,能够实现四轮差速、阿克曼、履带、麦克纳姆轮四种运动模式,最大程度支持我们的机器人创意设计。LIMO采用Jetson Nano作为主控系统,ROS作为核心软件环境,支持SLAM、自主导航、图像识别等多种应用,同时还配套有专业的模拟沙盘。

图2-1 LIMO

图2-2 LIMO配套沙盘场景

接下来我们就以LIMO为示例平台,开启移动机器人的认知学习。本篇内容共分为两个小节,主要带领大家了解移动机器人的定义与组成结构,并以LIMO机器人为例,介绍移动机器人的操作方法和运动模态,帮助大家建立对移动机器人的整体认知。

1.2.1机器人的定义与组成

机器人的定义

  • 诞生:1920年捷克斯洛伐克作家卡雷尔恰佩克在他的科幻小说《罗萨姆的机器人万能公司》中,根据Robota(捷克文,原意为“劳役、苦工”)和Robotnik(波兰文,原意为“工人”),创造出“机器人”这个词。
  • 百度百科:机器人(Robot)是自动执行工作的机器装置。它既可以接受人类指挥,又可以运行预先编排的程序,也可以根据以人工智能技术制定的原则纲领行动。它的任务是协助或取代人类工作,例如生产业、建筑业,或是危险的工作。
  • 美国机器人协会(RIA):机器人是用以搬运材料、零件、工具的可编程序的多功能操作器或是通过可改变程序动作来完成各种作业的特殊机械装置。

机器人的四大组成部分

从控制的角度来讲,机器人可以划分为图中四大组成部分,分别是:传感系统、执行机构、驱动系统和控制系统。

图2-3 机器人四大组成部分

机器人的四大组成部分相互依赖,互相连接,组成了一个完整的机器人控制回路。

图2-4 机器人的控制回路

如果把机器人比作一个人的话,执行机构就是人体的手和脚,完成具体动作的执行,同时也会和外部环境产生关系。

驱动系统类似人体的肌肉和骨骼,为身体提供源源不断的动力。

传感系统是人体的感官和神经,完成内部与外部的信息采集,并且反馈给大脑做处理。

控制系统就是大脑,实现各种任务和信息的处理,下发控制命令。

随着机器人软硬件的日新月异,这四大组成部分也在不断进化和优化,共同推进着机器人向智能化迈进。

  • 执行机构:人体的手和脚,完成具体动作的执行。
  • 驱动系统:人体的肌肉和骨骼,是整个身体运动的动力来源。
  • 传感系统:人体的感官和神经,主要完成信号的输入和反馈,包括内部传感系统和外部传感系统。
  • 控制系统:人体的大脑,实现任务及信息的处理,输出控制命令信号。

接下来我们以LIMO机器人为例,具体看下在这样一个典型的移动机器人中,这四大组成部分是如何配合工作的。

图2-5 LIMO机器人

如图2-5是LIMO的外观,第一眼看上去是一款设计非常精美的小车,在以Jetson Nano为核心的控制器上,装备了多种传感器和执行器,能够完成自主导航、图像识别、路径跟踪等多种功能。

那LIMO的执行器是什么呢?没错就是底盘上的四个电机以及连接的四个轮子。                      

LIMO使用的是轮毂电机,也就是电机的定子和转子都集成在了轮子内部,节省了一般小车中电机需要占据的空间,而且加减速控制性能也更加突出。

不仅如此,LIMO的底盘还设置了特殊传动装置的切换开关,比如我们可以通过四个轮子单独的旋转运动,实现小车前进后退转弯,如果想要模拟真实汽车的阿克曼运动方式,直接拔起前边两个红色插销,就可以实现类似这样的阿克曼运动方式,通过前轮的平行转向实现小车的转弯。如果是在室外,可以把轮胎更换为履带,实现更好的越野性能,如果想要让小车像螃蟹一样横着走,还可以使用麦克纳姆轮来做全向运动。所以在一辆LIMO小车上,我们可以动态切换四种运动模式,这都是依赖小车本身执行机构的特殊设计实现的。

图2-6 四种运动模态

为了驱动LIMO四种运动模态以及装备的多种传感器,驱动系统功不可没。

图2-7 驱动系统板

如图2-7所示,这块驱动板卡安装在LIMO的底盘之中,通过丰富的接口连接到小车的各种设备之上。这块板卡以MCU为核心,也就是我们常说的嵌入式系统或者单片机,我们写的驱动程序运行在其中,再通过一级一级的信号转换,通过接插件与外界产生联系。

里程计

小车为了检测自身与外部信息,传感器系统必不可少。我们先来看一个LIMO机器人的内部传感器,也是移动机器人普遍使用的传感器——里程计。

类似于汽车记录行驶公里数的码表,可以通过轮子的旋转圈数记录里程,机器人一般也会在轮子或者电机上安装一个传感器,通过检测轮子的旋转速度,再对时间积分,得到机器人的实时位置和速度,这项功能所使用的设备就叫做里程计,而实现这种功能的设备也并不是唯一的。

比如大家在某些小车上,会看到电机旁边安装有一个码盘,上边有不少开缝,电机旋转带动码盘旋转,光电管发射的光线就会以某种频率穿过缝隙,被接收端采集到,通过这个采样频率我们就可以计算得到电机的旋转速度,从而得到机器人走了多远、旋转了多少度等自身状态信息。

LIMO采用的里程计是另外一种,叫做霍尔传感器。如图2-8所示,这是一个轮毂电机,里边有电机的线圈,这个绿色的电路板就是一个霍尔传感器,当电机旋转时,霍尔传感器跟随运动,通过感应周边磁场产生的信号,也可以测量出电机的旋转速度,继而得到机器人的状态信息。

 

图2-8 霍尔传感器

无论是光电码盘还是霍尔传感器,都是根据采样单位时间内产生的脉冲数计算出轮子旋转的圈数,再通过轮子的周长计算出机器人的运动速度,速度对时间积分后,就得到里程信息啦,这就是里程计的基本原理。

不过里程计也有一个问题,那就是每次测量会有误差,不断积分后,误差必然会被放大,也就是我们常说的里程计累积误差,这个问题我们在后续的内容中,会给大家介绍解决办法。

机器人里程计测距原理:                                                                                                             

  • 根据单位时间内产生的脉冲数计算电机/轮子的旋转圈数                                                   
  • 根据轮子的周长计算机器人的运动速度                                                                             
  • 根据机器人的运动速度积分计算里程                                                                                 

外部传感器

有了机器人自身的状态信息,外部环境信息该如何获取呢?LIMO装备了两个重要的外部传感器。

一个是三维相机,类似于人眼一样,三维相机不仅可以看到外部环境的颜色信息,还可以获取每一个障碍物距离自身的深度信息,原理和人眼的双目定位不同,三维相机有三个“眼睛” ,其中一个“眼睛”是普通的摄像头,用于获取一幅图像的颜色信息,另外两个眼睛,一个负责发射红外光,不是一个点,而是一个面,还有一个负责接收反射回来的红外光,这一去一回,就拿到了一幅深度图像,有了彩色图像和深度图像,接下来把两个图像重叠到一起,就可以知道每个像素点的颜色和深度信息,这就是配准的过程。通过这一系列复杂的采集和配准过程,最终我们就拿到了完整的环境信息,我们把它叫做三维点云,每一个点都是由RGB颜色值和XYZ坐标值组成。未来的三维建图、物体识别,都依赖于这些信息。

 

图2-9 三维相机

三维相机虽然信息丰富,但是检测角度和精度都有限,所以移动机器人一般都会配置一台激光雷达,激光雷达的原理相对简单,一个激光头发射激光,另外一个接收头接收反射光,然后通过光的飞行时间就可以测距了,如图2-10所示,这里还有一个电机,带动发射和接收头匀速旋转,这一边转一边检测,就可以得到360度范围内很多个点的距离,从而我们就拿到了在雷达所在平面中的障碍物深度信息,未来的SLAM地图构建和自主导航,都建立在这个数据的基础之上。

 

图2-10 激光雷达

 

以上我们看到的驱动系统、传感系统,最终都会连接到控制系统,也就是Jetson Nano控制板卡。这块板卡的核心集成了一个四核的CPU,可以满足一些基础软件的运行,同时还有一个128核的GPU,基本的图像处理和机器学习也不在话下。为了方便操作,LIMO后部还有一个触摸屏幕,即使没有笔记本电脑,我们一样可以控制机器人。

 

图2-11 Jetson Nano控制板卡

如图2-12所示,从屏幕中我们可以看到,主控板上运行的是以Linux为核心的Ubuntu系统,未来我们需要进一步开发的机器人应用,都会从以这个系统为平台展开,这也是我们后续操作的核心,后续的内容会重点讲解,这里大家先明确LIMO机器人的四大组成部分别是什么即可。

 

图2-12 触摸屏幕

我们再通过图2-13来明确LIMO机器人中控制板卡与外接设备之间的联系。

图2-13 控制板卡与外接设备之间的联系

运动控制器作为驱动系统的核心,负责控制电机和舵机,其中电机是驱动小车运动的,舵机是在阿克曼模式下驱动前轮转向的;另外还需要连接内部传感器里程计和IMU,完成对机器人自身状态的检测。

机器人控制系统是LIMO的大脑,运行之后我们会学习的自主导航、地图构建、图像识别等功能,同时也会兼具一小部分传感器驱动的任务,通过USB采集外部相机和雷达的信息。这个控制系统大脑和运动控制器之间的通讯连接,是通过串口来完成的。

为了方便机器人的操控,未来我们还会在机器人之外,使用我们自己的笔记本连接机器人进行编码和控制。

在整个这个大框架中,虚线框中的应用功能都是基于ROS环境进行开发实现,运动控制器中的功能是基于嵌入式开发来实现,从这张图中,大家也可以更好的理解ROS开发与嵌入式开发的关系,两者各司其职,一个偏向于上层应用,另一个偏向于底层控制,共同实现机器人的智能化功能。

1.2.2移动机器人操作方法

系统启动

以上我们在机器人静态情况下分析了四大组成部分的设备和原理,接下来我们就让机器人动起来,一起来认识下移动机器人的运动模式和传感器数据。

首先我们要启动LIMO机器人。按下机器人一侧的电源开关,进入启动过程,稍后可以看到开关周边的绿灯亮起,此时正在启动;当机器人后侧的屏幕显示桌面环境时,说明启动成功。

图2-14 长按开关,启动机器人

图2-15 上电成功,开关亮绿灯

图2-16 启动成功,屏幕显示桌面

在使用过程中请及时关注电量指示灯,当电量低时,电源指示灯会闪红色并蜂鸣报警,就需要及时充电。

图2-17 电量过低,红色指示灯闪烁,请及时充电

接下来我们打开LIMO机器人的手机App,扫描并且连接对应的蓝牙。

图2-18 手机遥控APP

接下来就可以使用手机App控制机器人运动了,左边控制杆可以控制LIMO前进后退,右边控制杆是控制LIMO左转右转,中间进度条显示当前的实时速度。

如果我们切换了机器人的运动模态,在手机App中,也需要选择上边对应的控制方式,比如阿克曼运动、四轮差速运动、麦克纳姆全向运动。

  • ackerMann:需要手动将LIMO小车切换阿克曼模式,主要用于校准零点、控制前进后退以及转动角度;                                                                                                                 
  • Mailun:需要手动将LIMO小车切换麦轮模式,主要控制前进后退、转换方向以及原地旋转。                                                                                                                                   

遥控运动

接下来我们一起来试一下差速运动。确认下机器人两端的插销都处于插入状态,车轮使用的是普通橡胶轮胎,前边的车灯显示为橙色,如图2-19所示。然后在手机App上选择差速模式,然后就可以通过两个模拟摇杆控制机器人运动了,左边控制前进后退、右边控制左转右转,原地转个圈也没有问题。

图2-19 四轮差速

除了四轮差速之外,在一些越障能力要求比较高的场景中,也可以使用履带差速。

此时还是保持机器人两端的插销都处于插入状态,在普通轮的外侧加装附带的履带配件,前边的车灯依然显示为橙色,如图2-20所示。手机App的设置和四轮差速运动一样,还是选择差速模式,左摇杆控制前进后退,右摇杆控制差速转向。

图2-20 履带差速

我们在马路上常见的汽车使用的是阿克曼运动模式,通过两个前轮的平行转向实现转弯,在LIMO机器人上也可以实现。这种模式下还是使用普通橡胶轮,但是需要将机器人两端的插销都拔起来,注意拔起来之后要旋转一下锁定住,前边的车灯会变成绿色,如图2-21所示。

在手机APP中切换为阿克曼模式,左摇杆还是控制前进后退,右摇杆拨动试一下,可以明显看到机器人的两个前轮会围绕轴心平行向左或者向右旋转,同时控制左摇杆,就可以实现转弯运动了。

图2-21 阿克曼运动

以上三种运动模态都只能让机器人有一个向前的线速度,如果想实现类似螃蟹一样横着走的效果,就需要切换到全向运动模态。

我们将机器人的四个轮子换成麦克纳姆轮,注意将机器人两端的插销恢复到未拔起的状态,前边的车灯显示为蓝色,如图2-22所示。手机App上选择麦轮模式,此时左摇杆就支持左右摇动了,可以看到机器人出现了横向的运动效果,如果想要控制机器人差速转向,继续使用右摇杆左右转动,此时的运动原理和四轮差速是相同的。

图2-22 全向运动

传感器数据

接下来我们再来了解下移动机器人的传感器数据。

首先我们需要启动LIMO机器人的ROS可视化上位机,很快就可以看到小车已经在界面中出现了,同时我们还可以看到小车的摄像头颜色信息,以及三维点云信息,大家可以用鼠标拖拽一下,体验这种三维数据的效果。

图2-23 传感器数据

周围绿色不断跳动的点,就是激光雷达看到的障碍物距离,当机器人运动时,这些点会不断体现障碍物的距离信息。同时我们也可以看到,如果机器人运动的话,上位机中的代表机器人位置的坐标系也会更新和运动,这就是机器人里程计计算得到的位置,比如里程计发现机器人走了1m,这个坐标系也会运动1米。

这样的可视化上位机,是ROS中的重要功能,不仅可以让我们直观的看到机器人各种各样的一些信息,更可以方便我们未来对机器人功能的调试。

以上就是本篇“移动机器人认知”的全部内容,感谢大家的阅读。