台式电脑

怎么样做好玩的电脑(干货|要做出一个能用的好玩的机器人,这些知识点将助你一臂之力)

干货|要做出一个能用的好玩的机器人,这些知识点将助你一臂之力

机器人的功能

机器人总体上说是一个比较复杂的系统,要做出一个完成度比较高的机器人系统,需要解决三个核心问题:

1.我在哪里?

2.我要去哪里?

3.我怎么去?

根据以上特点,我们不难总结出机器人的基本功能:

干货|要做出一个能用的好玩的机器人,这些知识点将助你一臂之力

环境感知系统是指通过传感器采集到相关数据后,进行地图构建,有了地图,才能定位机器人,也就是在哪里?只有知道自己在哪里后,才能进行路径规划,怎么走以及走到哪里去。在走的过程中,还需要自主避障,碰到障碍物,得绕过去,不然撞上去,那就很危险了。电用完了,还能自己找到充电桩去充电。

人机交互系统是指机器人能听的懂你说的话,并给予回答,还能进行简单的交流。第二个就是还能看得见,摸得着。如果你摸机器人,机器人能感应到,并给出应答。

运动控制系统是指能到达想要到的地方去,碰到障碍物,可以绕的开,不会走冤枉路,走的路径是最短路径。

由于机器人是一个被动的物体,但上述描述都具有一定的主动性,这就需要一系列的传感器来采集数据,并根据这些数据进行一定的计算后做出决策,再根据决策结果,做出一定的动作行为,从而完成一系列行为。

干货|要做出一个能用的好玩的机器人,这些知识点将助你一臂之力

激光雷达、3D摄像头、超声波、红外主要用在地图构建上,惯性测量单元(InertialMeasurementUnit,IMU)可以直接测量载体相对于惯性空间的三轴加速度和三轴角速度(6-DoF),主要用在定位上,多传感器数据融合后,用于机器人导航,导航的关键是机器人定位和路径规划两大部分。

ROS系统架构

计算机使用的操作系统,英语称为OperatingSystem,缩写为OS。与计算机操作系统类似,机器人操作系统的出现也遵循这样一个规律:为了提高机器人设计和开发的效率,机器人操作系统英语称为RobotOperatingSystem,缩写为ROS。

ROS最早的原型是在美国斯坦福大学的人工智能实验室开发的,后来硅谷这家叫“柳树车库”的机器人公司与斯坦福大学合作,将ROS应用到公司开展的一个个人机器人PR2项目中。

ROS的系统架构是由摩根·奎格利(MorganQuigley)设计的,他当时还是美国斯坦福大学博士生,他的博士导师是中国知名度非常高的吴恩达(AndrewNg)。

目前有ROS和ROS2两个版本,其系统架构为:

干货|要做出一个能用的好玩的机器人,这些知识点将助你一臂之力

ROS和ROS2最大的区别就是通信机制的改变,ROS2采用了DDS机制,解决了ROS实时性的缺陷,因为这个缺陷很严重,以至于被诟病很久。ROS把任何一个进程都称为Node,Node之间通过TCP/UDP通信,对于不在同一台机器上的进程,这种机制很合适,但在同一台机器上的两个进程,有比这更好的通信机制,如共享内存、管道等,效率都比TCP/UDP高。

DDS(DataDistributionService)即数据分发服务。它是一个专门为实时系统设计的数据分发/订阅标准,目前已成为分布式实时系统中数据发布/订阅的标准解决方案。`

ROS中的SLAM算法

SLAM(SimultaneousLocalizationandMapping)是即时定位与地图构建技术。在ROS中实现机器人的SLAM和自主导航功能非常方便,目前有很多开源代码供使用。如gmapping、hector_slam、cartographer、rgbdslam、ORB_SLAM、move_base、amcl等。

怎么样做好玩的电脑(干货|要做出一个能用的好玩的机器人,这些知识点将助你一臂之力)

gmapping、hector_slam、cartographer、rgbdslam、ORB_SLAM这些算法主要用来进行地图构建。

gmapping集成了Rao-Blackwellized粒子滤波算法,可以创建并输出基于概率的二维栅格地图。

hector_slam基于高斯牛顿方法,需要里程计数据,只根据激光数据便可以构建地图。

cartographer是谷歌开源的框架,可以实现机器人在二维或者三维条件下的定位及建图功能。

rgbdslam是一种3DSLAM,目前还没有集成进ROS系统中。

ORB_SLAM是VSLAM中常用的算法,用于构建三维点云地图,在大范围中做闭环检测,并实时进行全局重定位。

导航的关键是机器人定位和路径规划两大部分,其架构为:

干货|要做出一个能用的好玩的机器人,这些知识点将助你一臂之力

move_base中的各种导航算法模块都是以插件的形式进行调用,这样可以很方便的替换不同的算法以适应不同的应用,其中global_planner用于全局路径规划、local_planner用于局部路径规划、golobal_costmap是全局代价地图用于描述全局环境信息、local_costmap是局部代价地图用于描述局部环境信息、recovery_behaviors是恢复策略用于机器人碰到障碍后自动进行逃离恢复。然后是amcl节点,amcl节点利用粒子滤波算法实现机器人的全局定位,为机器人导航提供全局位置信息。然后是map_server节点,map_server节点通过调用前面SLAM建图得到的地图为导航提供环境地图信息。

global_costmap和local_costmap,代价地图用于描述环境中的障碍物信息,代价地图利用激光雷达、声呐、红外测距等探测传感器的数据来生成,大致的原理是通过建立不同的图层Layer然后叠在一起,被填充的栅格点表示有障碍物。

自主定位即机器人在任意状态下都可以推算出自己在地图中所处的位置。ROS为开发者提供了一种自适应蒙特卡罗定位方法(AMCL),是一种概率统计方法。自适应主要体现在两个方面:通过判断粒子点的平均分突变来识别机器人绑架问题,并在全局重新撒点来解决机器人绑架问题;通过判断粒子点的聚集程度来确定位置估计是否准确,在估计比较准确的时候降低需要维护的粒子点数目,这样来降低算法的计算开销。

开发策略

整体开发策略是:第一期采用集成的方案,了解整体工作原理与架构;第二期自研SLAM方案;第三期优化方案。

第一期先购买机器人底盘和语音识别方案,自己团队仅开发上位机应用。售卖机器人底盘的公司比较多,价格一般在4W左右,如上海思岚、上海高仙、深圳镭神等。业界很多公司都提供语音识别的方案,如百度、阿里等。自己团队做硬件电路板设计和结构设计。

第二期基于ROS自研SLAM算法,由于ROS系统无法直接商用,需要对ROS进行修改,可以参考百度的Apollo平台,他们就是基于ROS平台,进行优化和修改,推出了自己的无人驾驶平台。

第三期开始进行优化,集成自己的SLAM算法,不断的打磨并推向市场。

相关新闻

返回顶部