ROS编程-ROS里的坐标系和单位
-
date_range 07/03/2019 info
ROS里有统一定义了一系列机器人系统常用的坐标系和单位。
如果是才刚开始接触ros,需要花点时间对这些单位做了解。
当然啦,下面这些只是约定,具体里面装进去什么东西还得看实际的代码。
geometry_msgs
Point(点)
# This contains the position of a point in free space
float64 x
float64 y
float64 z
Axis Orientation
In relation to a body the standard is:
- x forward
- y left
- z up
For short-range Cartesian representations of geographic locations, use the east north up [5] (ENU) convention:
- X east
- Y north
- Z up
Quaternion(四元数)
# This represents an orientation in free space in quaternion form.
float64 x
float64 y
float64 z
float64 w
四元数主要用来做姿态解算,物理意义上类似复数,比较难形象理解。
如果要判断一组四元数大概的姿态,可以速算成欧拉角。
Transform
# This represents the transform between two coordinate frames in free space.
Vector3 translation
Quaternion rotation
用作不同坐标系下的转换:
- translation设置坐标系A在坐标系B下的坐标原点
- rotation设置坐标系A相对于坐标系B的旋转角度,这里用四元数表示
Pose(姿态)
# A representation of pose in free space, composed of position and orientation.
Point position
Quaternion orientation
由点坐标和四元数组成的数据,标识物体在空间中的姿态。
PoseWithCovariance
# This represents a pose in free space with uncertainty.
Pose pose
# Row-major representation of the 6x6 covariance matrix
# The orientation parameters use a fixed-axis representation.
# In order, the parameters are:
# (x, y, z, rotation about X axis, rotation about Y axis, rotation about Z axis)
float64[36] covariance
多了个协方差矩阵,来标识不确定性(是用作卡尔曼滤波的R?)
Twist
# This expresses velocity in free space broken into its linear and angular parts.
Vector3 linear
Vector3 angular
标识线速度和角速度。
角速度的单位一般是rad(弧度),转角度 = rad*180/PI。
nav_msgs
Odometry(里程计)
# This represents an estimate of a position and velocity in free space.
# The pose in this message should be specified in the coordinate frame given by header.frame_id.
# The twist in this message should be specified in the coordinate frame given by the child_frame_id
Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist
里程计包两个信息,一方面是位置和姿态,一个是直线速度和角速度,同时配有frame-id和timestamp。
frame-id是用来指示坐标系的?
base_link坐标系
一般为表示机器人中心,为相对机器人的本体的坐标系,比如说雷达识别到前方xx米有障碍物,这个前方xx米就是相对机器人而言。
odom 坐标系
odom坐标系标识机器人相对运动原点的位置,一般来说都是连续的。
最简单通过IMU来估计的,也就是通过加速度计和陀螺仪。 所以这里的坐标一般只是用作短期的判断,比如说标识短时间自身运动轨迹和周围障碍物。
当然这类坐标系里也会有其他传感器和滤波器,输出修正后的数据。
map 坐标系
一般来说就是过gps后的坐标,用来匹配地图?。。不懂slam的东西。。。