Navigation Stack
首先看看整个导航的包是怎么样的
tf Transform
首先不同坐标系之间的tf变换要明确,详细可以参考博客《ROS学习笔记之——ROS之tf变换》以及
Sensor Information
导航包中采用了来自sensors的信息来进行避障(avoid obstacles)。并且假设这些传感器发布的数据是sensor_msgs/LaserScan或者sensor_msgs/PointCloud
关于具体消息的定义,可以参考:
- http://docs.ros.org/en/api/sensor_msgs/html/msg/LaserScan.html
- http://docs.ros.org/en/melodic/api/sensor_msgs/html/msg/PointCloud.html
下面补充一下在ROS中发布sensor的消息流的相关知识
Publishing Sensor Streams over ROS
机器人导航的过程中,需要各种sensors来提供定位、避障等功能。如 lasers, cameras, sonar, infrared, bump sensors(碰撞传感器)等等。然而,ros中的导航只接收数据格式为sensor_msgs/LaserScan或者sensor_msgs/PointCloud形式的消息。
sensor_msgs/LaserScan以及sensor_msgs/PointCloud消息都带有tf帧以及时间这两个独立的信息。这些信息都存储在header中。一共有三种类型的header
#Standard metadata for higher-level flow data types
#sequence ID: consecutively increasing ID
uint32 seq
#Two-integer timestamp that is expressed as:
# * stamp.secs: seconds (stamp_secs) since epoch
# * stamp.nsecs: nanoseconds since stamp_secs
# time-handling sugar is provided by the client library
time stamp
#Frame this data is associated with
# 0: no frame
# 1: global frame
string frame_id
seq field为从给定发布服务器发送消息时自动增加的标识符相对应。
运动规划
运动规划(Motion Planning)是一个过程,用来寻找从起始状态到目标状态的移动步骤。运动规划常常需要在运动受到约束的条件下找到最优解。
参考资料
http://moorerobots.com/blog/post/3
http://wiki.ros.org/navigation/Tutorials/RobotSetup