机器人SLAM与自主导航(二)——必备条件

机器人SLAM与自主导航(二)——必备条件

总述

ROS中SLAMda和自主导航的相关功能包可以通用于各种移动机器人平台,但为达到最佳效果,对机器人的硬件仍然有以下三个要求。
1)导航功能包对差分、轮式机器人的效果号好,并且假设机器人可直接使用速度指令进行控制。

  • linear:机器人在xyz三轴方向上的线速度,单位是m/s。
  • angular:机器人在xyz三轴方向上的角速度,单位是rad/s。
    2)导航功能包要求机器人必须安装激光雷达等测距设备,可以获取环境深度信息。
    3)导航功能包以正方形和圆形的机器人为模板进行开发,对于其他外形的机器人,虽然可以正常使用,但是效果可能不佳。

一、传感器信息

1、环境深度信息
无论是SLAM还是自主导航,获取周围环境的深度信息都是至关重要的。要获取深度信息,首先要弄明白ROS中的深度信息是如何表示的。
针对激光雷达,ROS在sensor_msgs包中定义了专用数据结构——LaserScan,用于存储激光信息。LaserScan消息的具体定义如下。
在这里插入图片描述

  • angle_min:可检测范围的起始角度
  • angle_max:可检测范围的终止角度
  • angle_increment:相邻数据帧之间的角度步长
  • time_increment:采集相邻数据帧之间的时间步长,当传感器处于相对运动状态时进行补偿使用
  • scan_time:采集一帧数据所需要的时间
  • range_min:最近可检测深度的阈值
  • range_max:最远可检测深度的阈值
  • ranges:一帧深度数据的存储数组
    如果使用的机器人没有激光雷达,但配备有Kinect等RGB-D摄像头,也可以通过红外摄像头获取周围环境的深度信息。但是RGB-D摄像头获取的原始深度信息是三维点云数据,而ROS的很多功能包所需要的输入是激光二维数据,是否可以将三维数据转换为二维数据呢?
    将三维数据降维到二维数据的方法,即把大量数据拦腰斩断,只抽取其中的一行数据,重新封装为LaserScan消息,就可以获取到需要的二维激光雷达信息。这样做虽然损失了大量有效数据,但是刚好可以满足2D SLAM的需求。
    ROS中也提供了相应的功能包——depthimage_to_laserscan,将三维点云数据转换为二维激光雷达数据。
<!--depthimage_to_laserscan节点,将点云深度数据转换成激光数据-->
<node pkg="depthimage_to_laserscan" type="depthimage_to_laserscan" name="depthimage_to_laserscan" output="screen">
    <remap from="image" to="/kinect/depth/image_raw"/>
    <remap from="camera_info" to=/kinect/depth/camera_info"/>
    <remap froam="scan" to="/scan"/>
    <param name="output_frame_id" value="/camera_link"/>
</node>

2、里程计信息
里程计根据传感器获取的数据来估计机器人随时间发生的位置变化,在机器人平台中,较为常见的里程计是编码器,例如,机器人驱动轮配备的旋转编码器。当机器人移动时,借助旋转编码器可以测量出轮子旋转的圈数,如果知道轮子的周长,便可以计算出机器人单位时间内的速度以及一段时间内的移动距离。里程计根据速度对时间的积分求得位置这种方法对误差十分敏感,所以采取如精确的数据采集、设备标定、数据滤波等措施是十分必要的。
导航功能包要求机器人能够发布里程计nav_msgs/Odometry消息。nav_msgs/Odometry消息包含机器人在自由空间中的位置和速度估算值。

  • pose:机器人当前位置坐标,包括机器人的x、y、z三轴位置与方向参数,以及用于校正误差的协方差矩阵
  • twist:机器人当前的运动状态,包括x、y、z三轴的线速度与角速度,以及用于校正误差的协方差矩阵。
    注意:ROS中所有的坐标系都是右手坐标系。
    在这里插入图片描述
    在其数据结构中,除速度与位置的关键信息外,还包含用于滤波算法的协方差矩阵。在精度要求不高的机器人系统中,可以使用默认的协方差矩阵;而在精度要求较高的系统中,需要先对机器人精确建模后,再通过仿真、实验等方法确定该矩阵的具体数值。

二、仿真平台

1、创建仿真环境
2、加载机器人
3、真实机器人

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不是“耀”神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值