一、ros导航的关键技术
1.全局地图
全局地图的实现,通常使用slam建图也称为(CML)的方式,即即时定位和地图构建、并发建图和定位。具体的slam建图的方法gmapping、hector_slam、cartographer、rgbdslam、ORB_SLAM ....。并且slam建图必须还要依靠自身的激光雷达或者摄像头。当然建好的地图保存需要使用到map_server这个包。
2.自身定位
自身定位,通常需要使用GPS,但是GPS并不使用与室内信号较弱的地方,比如地下、隧道、室内以及一些屏蔽GPS信号的地方。这时可以利用slam进行自身定位,除此之外,还有AMCL算法,ros还兼顾amcl包
3.路径规划
全局规划通常运用A*算法和Dijskstra算法计算最优路线,作为全局路线。局部规划算法通常是机器人为避免在路径中出现的障碍而诞生的一种算法,通常是dynamic window approach,被称为动态窗口算法
4.运动控制
5.环境感知
环境感知通常依赖于激光雷达,摄像头,编码器,激光雷达、摄像头可以感知外界环境的深度信息,编码器可以感知机器人电机的转速信息,进而可以获取速度信息并生成里程计信息。
机器人导航和无人驾驶类似,关键技术也是由上述5点组成,只不过机器人导航是基于室内的,无人驾驶基于室外的。所以环境感知层面会出现区别。
二、导航条件说明
硬件:
1.它是为差速驱动的轮式机器人设计的,它假设底盘受到理想的运动命令控制。通常命令的格式为:x速度分量,y速度分量,角速度分量。
2.它需要在地盘安装一个单线激光雷达,这个激光雷达用于构建地图和定位
3.导航功能包是为方形机器人设计的,所以近似的圆形的、方形的机器人的效果是最好的。它也可以应用到任何大小和形状的机器人身上,但是体型较大的机器人可能会很难通过较为狭窄的空间。
软件:
1.ros
2.仿真环境需要搭建,因为导航是基于仿真环境的
三、机器人系统仿真
ros代码写好之后,肯定需要测试,测试环境肯定需要多变,怎么适应不同且多样的环境。将未经验证的程序部署在机器人上面,安全吗。
仿真实现的内容在主要有三个:机器人的建模(urdf)、创建仿真环境(Gazebo)以及感知环境(Rviz)
优化rviz启动,通常关闭窗口,需要再次打开机器人组件,会麻烦,就需要save config as
urdf的优化xacro。其实就是类似前端封装组件