坐标系
1.判定坐标系:大拇指指向 Z 轴,看四指环绕方向,如果是 X 指向 Y,就是右手系。右手大拇指指向z轴方向,其余四指由x轴握向y轴方向,如果成功,那么判定为右手系。左手大拇指指向z轴方向,其余四指由x轴握向y轴方向,如果成功,那么判定为左手系。左手系无法通过三轴旋转变成右手系,只能通过换轴的方法转换2.旋转正方向的判断欧拉角是一种表示姿态(物体相对于另一个坐标系的方向和方位)的三个角度的集合,而姿态则描述了物体在空间中的方向,可以通过欧拉角、方向余弦矩阵、四元数等多种方式表示,其中欧拉角是其中一种直观但存在奇异点(例如在俯仰角接近90度时)的表示方法
坐标系-Coordinate
时间和空间
1.map坐标系 :绝对坐标表示车体相对于地球或者相对于地图的绝对位置和姿态(位姿)世界坐标系 经纬度, 纬度、 经度和高度横轴墨卡托(The Universal Transverse Mercator, UTM) 坐标 通过投影将坐标位置投影至地面, 通常称之为局部坐标系或者大地坐标系投影后采取地面上一点作为参考点, 即局部坐标系原点。 通常采用东北天(East-North-Up, ENU) 表达坐标系方向, 即 X 轴在当地水平面内分别指向东, Y 轴指向北, Z 轴指向天东北天局部坐标系采用三维直角坐标系来描述地球表面2.车体坐标系 vehicle car ego 智能网联汽车主要关注车辆前方, 通常的定义中都是以车辆前方为正方向车辆坐标原点:是以汽车簧载质量上的点为原点 OriginX 轴平行于汽车纵向对称平面且其正方向水平向前,Y 轴垂直于汽车纵向对称平面且其正方向指向汽车左侧,Z轴竖直朝上GB/T 12673-2019 车辆后方为 X 轴, Y 轴向右, Z 轴朝上
3.传感器坐标系车载传感器相对于车体的位姿以及目标物相对车体的位姿WYT@ca1c293 激光雷达-毫米波雷达-相机-超声波IMU及组合导航V2X相机:相机坐标系, 还有图像坐标系, 图像坐标是 2D 的坐标, 而相机坐标是 3D 坐标, 由相机坐标映射到图像坐标的关系通常被称为相机内参V2X: 加速度其中方向定义为“前/右/下” NED(n系北东地 – b系前右下)、ENU(n系东北天 – b系右前上)的姿态角(欧拉角)与姿态旋转矩阵的关 导航方位角(Bearing):从北方向开始,顺时针旋转为正(即北偏东为正)。例如,北为0°,东为90°,南为180°,西为270°。车体坐标系中,yaw角向左横摆为正。注意,这里车体坐标系的yaw角是绕车体Z轴旋转,向左转为正,即逆时针方向
坐标系标准
ISO 8855: 2011
平台惯性制导系统
捷联惯性制导系统
平台惯性制导系统的精度要高于捷联惯性制导系统
捷联惯导系统(Strapdown Inertial Navigation System,SINS)是一种自主式导航系统,由惯性测量单元和导航计算机构成 载体系在导航系中的姿态捷联制导将陀螺仪直接连接载体,利用姿态变化测量载体运动,而平台制导通过反向力矩保持稳定捷联式惯导的核心差异在于取消了实体机电平台,通过数学算法实现惯性测量单元(IMU)与载体坐标系的实时解耦
机电式陀螺仪和光电类陀螺仪两大类 MEMS陀螺仪IMU 坐标系(body frame,简称 b 系),
导航坐标系(navigation frame,简称 n 系)
载体坐标系(vechile frame,简称 v 系),ROS 坐标系 Apollo 坐标系系统ENU 表达 East, North, Up, 中文通常表达为东北天。 ENU 表示东向为 x 轴, 北向为 y 轴, 天向为 z 轴
组合导航的重要功能是输出车辆在世界坐标系下的位置和姿态
车体坐标系常见定义
名称 车辆前方 车辆左侧 车辆上方 参考系统
前左上 x 轴正方向 y 轴正方向 z 轴正方向 ROS,GB/T 40429-2021
右前上 y 轴正方向 x 轴负方向 z 轴正方向 Apollo
华测 HCG-630
组合导航设备输出数据要求【强制】GPSWeek: 自 1980/1/6 至当前星期数(格林尼治时间);【强制】GPSTime:本周日 0:00:00 至当前的秒数;【强制】Latitude:纬度(-90° 至 90°);【强制】Longitude:经度(-180° 至 180°);【强制】Altitude:高度,单位(米);【强制】Heading(Yaw): 航向角,0 至 359.99,北偏东顺时针为正(如果不是需自行转换)(IMU 原始值和校正值至少输出一个);【强制】Pitch:俯仰角(-90 至 90),车头上扬为正 (IMU 原始值和校正值至少输出一个);【强制】Roll:横滚角(-180 至 180),车身右倾为正(IMU 原始值和校正值至少输出一个);【强制】Gyro X/Y/Z:陀螺仪 X 、Y、Z 轴,单位 °/s;【强制】Acc X/Y/Z:加速度 X、Y、Z 轴 (IMU 原始值和校正值至少输出一个);【强制】Ve、Vn、Vu:东向、北向、天向速度,单位 m/s;【强制】SolutionStatus: 系统状态,参考 Solution Status 定义,至少能区分是否是组合导航;【强制】PositionType:卫星状态,参考 Position or Velocity Type, 至少包含不定向、RTK浮点解、稳定解;
IMU全称inertial measurement unit,即惯性测量单元
航向角, 角度范围 0° ~360°
俯仰角, 角度范围 -90° ~90° ; 故在俯仰角较大的场合下不适合采用欧拉角法
横滚角, 角度范围 -180° ~180°华测坐标系定义为 X轴向右、Y轴向前、Z轴向上
Novatel坐标系定义为 X轴向右、Y轴向前、Z轴向上parser 中负责各种厂商 gnss 数据解析,新惯导接入需要新增一个 parser 类型全局位姿变换关系,这也是定位模块localization主要的任务
旋转
描述坐标系{B}相对于参考坐标系{A}的姿态有两种方式。绕固定坐标系旋转 绕自身坐标轴旋转
一种是 绕固定(参考)坐标轴旋转:假设开始两个坐标系重合,先将{B}绕{A}的X轴旋转γ,然后绕{A}的Y轴旋转β,最后绕{A}的Z轴旋转α,就能旋转到当前姿态。可以称其为X-Y-Z fixed angles 或RPY角(Roll, Pitch, Yaw)
一种是 绕自身坐标轴旋转假设开始两个坐标系重合,先将{B}绕自身的Z轴旋转α,然后绕Y轴旋转β,最后绕X轴旋转γ,就能旋转到当前姿态。称其为Z-Y-X欧拉角,由于是绕自身坐标轴进行旋转enum RotSeq{zyx, zyz, zxy, zxz, yxz, yxy, yzx, yzy, xyz, xyx, xzy,xzx};如ADAMS软件里就默认 Body 3-1-3次序,即Z-X-Z欧拉角,而VREP中则按照X-Y-Z欧拉角旋转。静态坐标变换是指两坐标系之间的变换关系是固定的一种坐标变换,常用于表示汽车上两位置固定坐标系之间的变换关系,例如各个传感器之间的坐标变换。
数据
src/novatel_oem7_msgs/msg/INSPVA.msg float64 rollfloat64 pitchfloat64 azimuth heading yaw •诺瓦泰 Novatel
• 和芯ᱏ通 Unicorecomm
• 天宝 Trimble
• 莱卡 LeicaRTK+IMU RTK 接收机的成本从小几万到了两三百 + RTK 的服务费RTK-天线 小口径的航空天线IMU 对于震动\温度 敏感
高精度地图
代码
tf::Transform transform;//这里transform为一个类 (in radians)
transform.setRPY(roll,pitch,yaw)
z90_deg_rotaion.setRPY(0.0, 0.0, pi/2);//setRPY是类Quaternion的一个成员函数 (in radians)setRPY (const tfScalar &roll, const tfScalar &pitch, const tfScalar &yaw)Set the quaternion using fixed axis RPY.tf::Transform ros_ori = z90_deg_rotaion * transform ROS 中关于欧拉角旋转的函数:setRPY、setEuler、setEulerZYX(欧拉角可以分为绕定轴和绕动轴的变换方式,当没有指定Euler时, 默认是按定轴转动,矩阵依次左乘。若函数的名字中有Euler,则表示为绕动轴转动的方式,矩阵依次右乘setRPY();这个函数采用固定轴的旋转方式,先绕定轴x旋转(横滚),然后再绕定轴y(俯仰),最后绕定轴z(偏航)R = R(z)R(y)R(x)的顺setEuler这种方式是绕着动轴转动,先绕Y轴,在绕变换后的X轴,再绕变换后的Z轴旋转 这是绕定轴YXZ矩阵依次右乘,即:R = R(y)R(x)R(z) 的顺序setEulerZYX与2相同,此种旋转变换也是绕动轴旋转,只不过次序为ZYX,矩阵也是右乘,即R = R(z) R(y)R(x)
代码二
from scipy.spatial.transform import Rotation as R
Rotation.from_euler()时需特别注意欧拉角的旋转顺序和内旋/外旋的区别:坐标系定义
ENU(东北天):
X轴指向东,Y轴指向北,Z轴指向天
绕X轴旋转为pitch角,绕Y轴为roll角,绕Z轴为yaw角
欧拉角旋转顺序:Z-X-Y
NED(北东地):
X轴指向北,Y轴指向东,Z轴指向地
绕X轴旋转为roll角,绕Y轴为pitch角,绕Z轴为yaw角
欧拉角旋转顺序:Z-Y-X
Rotation.from_euler()参数说明
seq:指定旋转轴顺序,取值范围为'X'/'Y'/'Z'(内旋)或'x'/'y'/'z'(外旋)
angles:旋转角度,需与旋转顺序匹配(如Z-X-Y对应yaw、pitch、roll)
developer.apollo.auto/Apollo-Homepage-Document/Apollo_Doc_CN_6_0/数据格式/定位模块/apollo_localization_pose
MSF定位模块 多传感器融合 定位模块利用来自 GPS,LiDAR 和 IMU 设备的信息来评估自动驾驶车辆的位置 fusion_status
RTK 定位ENU坐标系下的x轴姿态值(四元数)euler_angles ENU坐标系下的姿态(欧拉角)https://developer.apollo.auto/Apollo-Homepage-Document/Apollo_Doc_CN_6_0/%E6%95%B0%E6%8D%AE%E6%A0%BC%E5%BC%8F/%E5%AE%9A%E4%BD%8D%E6%A8%A1%E5%9D%97/apollo_localization_pose/ 将 GPS 和 IMU 数据组合成一个完整的定位消息:整合来自 GPS 和 IMU 的定位信息,构建出一个包含位置信息、方向、线速度、线加速度、角速度和欧拉角的完整定位消息
https://github.com/ApolloAuto/apollo/blob/master/docs/05_Localization/coordination_cn.md
参考
https://docs.ros.org/en/melodic/api/novatel_msgs/html/msg/INSPVAX.html
https://github.com/novatel/novatel_oem7_driver/blob/humble/src/novatel_oem7_msgs/msg/INSPVA.msg