[carla]关于odometry坐标中的角度坐标系 以及 到地图的映射问题

1.获取车辆的Odometry原始信息

在carla中,通过订阅/carla/ego_vecle/odometry 可以查看车辆的全局位置信息,例如:

> header: 
  seq: 118872
  stamp: 
    secs: 5946
    nsecs:   5720187
  frame_id: "map"
child_frame_id: "ego_vehicle"
pose: 
  pose: 
    position: 
      x: 96.5346984863
      y: -188.643692017
      z: 0.221679911017
    orientation: 
      x: 1.09737910971e-07
      y: 5.40849999846e-07
      z: 0.0368271997411
      w: 0.999321648599
  covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
twist: 
  twist: 
    linear: 
      x: -0.00358968405948
      y: -3.63046108104e-06
      z: 2.80475536936e-07
    angular: 
      x: 2.17012864219e-05
      y: -0.000262381265741
      z: -0.00483244467764
  covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

其中,pose.pose.position.x 和 pose.pose.position.y提供了全局x,y坐标,pose.pose.orientation提供了汽车的旋转角度。

1.1 全局坐标

全局坐标和GNSS传感器获得的经纬度坐标可以相互转换,统一地图内,两种坐标都可以用于车辆定位。

1.2 旋转角度

这里的旋转角度的坐标以N方向为零度,E为90度,W为-90度,S偏E侧为+180度,S偏W侧为-180度,如图所示:
Odometry坐标系
这里值得注意的是:CARLA的odometry坐标系与真实世界的坐标系不同。正常坐标系是上北下南,左西右东,而CARLA里面是上北下南,左东右西。

该角度的具体计算的方法为:

//导入tf/transform_datatypes.h库
#include <tf/transform_datatypes.h>

//使用tf::getYaw获取四元数中的偏航角,然后转换成角度
tf::getYaw(carla_odometry.pose.pose.orientation) * 180.0 / M_PI

计算出来与显示界面的Heading是相同的。
在这里插入图片描述

2. 坐标系变换

我们想要把Odometry坐标系变换成下面的角度坐标系:
在这里插入图片描述

首先,Odometry坐标系需要逆时针旋转90度,那么对应的角度应当减去90度:
θ 1 = θ 0 − 90 ° \theta_1=\theta_0 - 90° θ1=θ090°
然后,取值范围需要变换到0-360度,对于原角度位于[90°,180°]的,减去90°后已经是变换后的角度,对于[0,90°][-0,-180°]角度,减去90°后会变成负数,需要增加360°变成正数。

θ 2 = { θ 1 , θ 1 > = 0 θ 1 + 2 π , θ 1 < 0 \theta_2 = \left\{\begin{matrix} \theta_1, \theta_1 >= 0\\ \theta_1 + 2\pi , \theta_1 <0 \\ \end{matrix}\right. θ2={θ1,θ1>=0θ1+2π,θ1<0
变换过程如图所示:
在这里插入图片描述

3.关于小地图截取时的注意事项

carla的地图有时候 并不是 上北下南 左西右东的,例如Town02地图
在这里插入图片描述
实际上,图片的上方是东,下发是西,左边是南,右边是北。我们想要使得截取的小地图始终朝向车头方向,就要将图片往反方向旋转相同的角度。

在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值