carla与ros坐标变换
一、概述
最近使用carla进行仿真测试,但是采集数据后发现一直无法跑通代码,再进行分析后,应该是carla坐标系跟ros中坐标系不一样导致的问题。查阅资料后明白了这个问题,将其进行整理。
二、具体分析
carla坐标系为左手坐标系,而ros中常用的是右手坐标系。由于从小接触的是右手坐标系,对这个坐标系比较熟悉,所以将carla中的坐标系变换到ros中常用的右手坐标系。
↑ Z(上)||Y(左)------o (左手坐标系)//X(前)
Z ↑||o------→ Y(右)//X(前)
两者相当于镜像操作。两者的旋转矩阵变换可以用矩阵M来表示。
对加速度和角速度的向量变化如下所示。
acc.y() = -acc.y();
acc.z() = -acc.z();
gyro.y() = -gyro.y();
gyro.z() = -gyro.z();
对四元数的变换如下所示。
Eigen::Quaterniond q_carla(w, x, y, z); // 左手系
Eigen::Quaterniond q_ros(w, x, -y, -z); // 转换为右手系
即可完成从左手坐标系到右手坐标系的变化。
三维环境下的左手和右手坐标系相互转换方法-北京鑫天视景科技有限公司-数据手套三维环境下的左手和右手坐标系相互转换方法,包括平移变换和旋转变换http://www.wiseglove.com/M/html/0281975631.html