目录
PoseWithCovariance pose(带有不确定性的位姿)
TwistWithCovariance twist(带有不确定性的速度)
????????自动驾驶感知融合有几类常用的传感器,里程计与惯性测量单元是其中很典型的元件,在ROS中定义了对应的消息类型:Odom和IMU。消息的定义主要是定义数据类型,一般形式为:【数据类型 + 变量名称】。针对ROS中消息结构的接口说明可以参考:Index of /en/api (ros.org)
?
#zhang@zhang:~$ rosmsg info 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
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内置消息中除基本数据类型之外,基本都会包含header消息头,header包含seq、stamp以及frame_id,分别表示序列号、时间戳和帧id。seq一般从0开始,每次增加1,表示消息序列id;stamp为时间戳,表示ros消息产生的时间。frame_id表示消息发布者,这里的frame常表示坐标系,例如gps、imu和lidar等【 该段上述内容参考:ROS传感器之GPS简介-有驾 (yoojia.com)】。这里把frame_id理解成所属坐标系的id就好了,例如当前坐标系的id是“base_link”。另外需要注意的是Odom消息中的位姿pose是在frameId所属坐标系指定。
区别于frame_id,child_frame_id指的是子坐标系,需要注意的是Odom消息中的位姿twist是在frameId所属坐标系指定。习惯使用odom作为frame_id,而base_link作为child_frame_id。
geometry_msgs/Point position:用于表示空间三维坐标位移
geometry_msgs/Quaternion orientation:用于表示空间三维坐标的方向,即四元数
float64[36] covariance:即协方差数组,以行优先顺序的6x6协方差矩阵,具体顺序为:(x,?y,?z,?rotation?about?X?axis,?rotation?about?Y?axis,?rotation?about?Z?axis)
? geometry_msgs/Twist twist:表示速度,包括线速度和角速度
? ? geometry_msgs/Vector3 linear:线速度
? ? geometry_msgs/Vector3 angular:角速度
? float64[36] covariance:即协方差数组,以行优先顺序的6x6协方差矩阵,具体顺序为:(x,?y,?z,?rotation?about?X?axis,?rotation?about?Y?axis,?rotation?about?Z?axis)
#zhang@zhang:~$ rosmsg info sensor_msgs/Imu
std_msgs/Header header
uint32 seq
time stamp
string frame_id
geometry_msgs/Quaternion orientation
float64 x
float64 y
float64 z
float64 w
float64[9] orientation_covariance
geometry_msgs/Vector3 angular_velocity
float64 x
float64 y
float64 z
float64[9] angular_velocity_covariance
geometry_msgs/Vector3 linear_acceleration
float64 x
float64 y
float64 z
float64[9] linear_acceleration_covariance
geometry_msgs/Vector3 angular_velocity:表示三维空间中的角加速度向量
float64[9] angular_velocity_covariance:角加速度协方差矩阵
geometry_msgs/Vector3 linear_acceleration:表示三维空间中的线加速度向量
float64[9] linear_acceleration_covariance:线加速度协方差矩阵
orientation是由linear_acceleration和angular_velocity计算而得,但并不是所有IMU设备都直接提供orientation,如果没有提供,将orientation各项置为0,orientation_covariance各项置为-1.这里协方差表示各个数据的误差,一般由器件厂商给出。
参考文献