ROS kinetic SLAM机器人导航需要用到数据信息

硬件要求
1. 差分轮式机器人,可使用Twist速度指令控制
linear : XYZ方向上的线速度,单位是m/s;
angular : XYZ方向上的角速度,单位是rad/s;
2. 机器人必须安装激光雷达等测距设备,可以获取环境深度信息。

kinetic@vm:~$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y

  float64 z

深度信息
kinetic@vm:~$ rosmsg show sensor_msgs/LaserScan 
std_msgs/Header header
    uint32 seq
    time stamp
    string frame_id
float32 angle_min // 可检测范围的起始角度;
float32 angle_max // 可检测范围的终止角度,与 angle_min 组成激光雷达的可检测范围;
float32 angle_increment // 相邻数据帧之间的角度步长;
float32 time_increment // 采集到相邻数据帧之间的时间步长,当传感器处于相对运动状态时进行补偿使用;
float32 scan_time // 采集一帧数据所需要的时间;
float32 range_min // 最近可检测深度的阈值;
float32 range_max // 最远可检测深度的阈值;
float32[] ranges // 一帧深度数据的存储数组

float32[] intensities // 激光雷达每个激光点的强度信息,通过强度信息可以感知障碍物的反光属性

三维点云转二维信息的功能包 : depthimage_to_laserscan

里程计信息
pose : 机器人当前位置坐标,包括机器人的 XYZ 三轴位置与方向参数,以及用于校正误差的协方差矩阵。

twist : 机器人当前的运动状态,包括 XYZ 三轴的线速度与角速度,以及用于校正误差的协方差矩阵。
kinetic@vm:~$ rosmsg show nav_msgs/Odometry 
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance pose
  geometry_msgs/Pose pose
    geometry_msgs/Point position        // XYZ三维方向上的坐标位置
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation    // 机器人的姿态位置,以四元素的形式进行描述
      float64 x
      float64 y
      float64 z
      float64 w
  float64[36] covariance    // 协方差矩阵,帮助我们去做里程计的位置估算,一般通过编码器计算里程计是用不到该参数的。使用到卡尔曼滤波就会用到。
geometry_msgs/TwistWithCovariance twist
  geometry_msgs/Twist twist
    geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z

  float64[36] covariance

坐标系方向(右手)

ROS kinetic SLAM机器人导航需要用到数据信息_第1张图片

仿真环境
kinetic@vm:~$ roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch





你可能感兴趣的:(ROS)