-
2021-05-07 14:01:32
飞机机体坐标系为前右下。
绕X轴旋转的角度称为滚转角roll,用符号 ϕ \phi ϕ表示,旋转矩阵 R X ( ϕ ) R_X(\phi) RX(ϕ)为,
R X ( ϕ ) = [ 1 0 0 0 c o s ϕ − s i n ϕ 0 s i n ϕ c o s ϕ ] R_X(\phi)=\left[ \begin{matrix} 1 & 0 & 0 \\ 0 & cos\phi & -sin\phi \\ 0 & sin\phi & cos\phi \end{matrix} \right] RX(ϕ)=⎣⎡1000cosϕsinϕ0−sinϕcosϕ⎦⎤
绕Y轴旋转的角度称为俯仰角pitch,用符号 θ \theta θ表示,旋转矩阵 R Y ( θ ) R_Y(\theta) RY(θ)为,
R Y ( θ ) = [ c o s θ 0 s i n θ 0 1 0 − s i n θ 0 c o s θ ] R_Y(\theta)=\left[\begin{matrix} cos\theta & 0 & sin\theta \\ 0 & 1 & 0 \\ -sin\theta & 0 & cos\theta \end{matrix} \right] RY(θ)=⎣⎡cosθ0−sinθ010sinθ0cosθ⎦⎤
绕Z轴旋转的角度称为偏航角yaw,用符号 ψ \psi ψ表示,旋转矩阵 R Z ( ψ ) R_Z(\psi) RZ(ψ)为,
R Z ( ψ ) = [ c o s ψ − s i n ψ 0 s i n ψ c o s ψ 0 0 0 1 ] R_Z(\psi)=\left[\begin{matrix} cos\psi & -sin\psi & 0 \\ sin\psi & cos\psi & 0 \\ 0 & 0 & 1 \end{matrix} \right] RZ(ψ)=⎣⎡cosψsinψ0−sinψcosψ0001⎦⎤更多相关内容 -
导航、机体常用坐标系及变换
2016-11-01 16:27:57对需要用到大地坐标系、地心直角坐标系、站心坐标系、机体坐标系转换的,该文档能极大的答疑解惑,并有不同坐标系的转换方法 -
airsim机体坐标系下的机体速度的获取与recording函数修改
2021-12-27 22:47:04airsim官方提供的state不包含机体坐标系的速度等信息,但包含了局部坐标系下的速度和当前机体在初始点的四元数矩阵,因此可通过四元数解算得到机体坐标系下的速度vel_body 一般来说四元矩阵的表示如下所示: 因此...airsim局部坐标系转化机体坐标系
airsim官方提供的state不包含机体坐标系的速度等信息,但包含了局部坐标系下的速度和当前机体在初始点的四元数矩阵,因此可通过四元数解算得到机体坐标系下的速度vel_body
一般来说四元矩阵的表示如下所示:
因此构造得到的旋转矩阵如下所示:
但得到的是从机体坐标系到局部坐标系的旋转矩阵,我们想要得到的是从局部坐标系到机体坐标系的旋转矩阵
由于旋转的可逆性和旋转矩阵的本身性质(旋转矩阵的逆即为矩阵的转置)
因此,局部坐标系向机体坐标系转化的旋转矩阵为:
airsim代码示意:
airsim提供了getMultirotorState作为获取无人机飞行状态信息的api函数。
该函数能够获取无人机的参数信息:是否碰撞、无人机的状态(在simple飞行模式下为ue4构建的四旋翼飞行状态,以全局坐标系为基准)、GPS信息、时间戳、是否降落、遥控器状态等信息。class MultirotorState(MsgpackMixin): collision = CollisionInfo() # 碰撞信息 kinematics_estimated = KinematicsState() # 状态信息 gps_location = GeoPoint() # GPS 信息 timestamp = np.uint64(0) # 时间戳 landed_state = LandedState.Landed # 是否是降落状态 rc_data = RCData() # 遥控器数据 ready = False ready_message = "" can_arm = False
因此通过该api获取无人机的全局速度与四元数,构造上述旋转矩阵即可得到无人机的局部速度(全局)向机体坐标系的转化
fly_state = self.client.getMultirotorState() vel_x = fly_state.kinematics_estimated.linear_velocity.x_val vel_y = fly_state.kinematics_estimated.linear_velocity.y_val vel_z = fly_state.kinematics_estimated.linear_velocity.z_val x = fly_state.kinematics_estimated.orientation.x_val y = fly_state.kinematics_estimated.orientation.y_val z = fly_state.kinematics_estimated.orientation.z_val w = fly_state.kinematics_estimated.orientation.w_val vel_x_self = (1 - 2 * (y ** 2) - 2 * (z ** 2)) * vel_x + (2 * x * y - 2 * z * w) * vel_y + ( 2 * x * z + 2 * y * w) * vel_z vel_y_self = (2 * x * y + 2 * z * w) * vel_x + (1 - 2 * (x ** 2) - 2 * (z ** 2)) * vel_y + ( 2 * y * z - 2 * x * w) * vel_z vel_z_self = (2 * x * z - 2 * y * w) * vel_x + (2 * y * z + 2 * x * w) * vel_y + ( 1 - 2 * (x ** 2) - 2 * (y ** 2)) * vel_z
将该旋转矩阵应用至airsim recording函数,即可记录四旋翼飞行轨迹中的机体速度。
// MultirotorPawnSimApi.cpp //重构recording模块,记录机体坐标系飞行速度 std::string MultirotorPawnSimApi::getRecordFileLine(bool is_header_line) const { std::string common_line = PawnSimApi::getRecordFileLine(is_header_line); if (is_header_line) { return common_line + "Body_Vel_X\tBody_Vel_Y\tBody_Vel_Z\t"; } //构建从全局坐标系到机体坐标系的转换矩阵 const auto& state = vehicle_api_->getMultirotorState(); float vel_x = state.kinematics_estimated.twist.linear.x(); float vel_y = state.kinematics_estimated.twist.linear.y(); float vel_z = state.kinematics_estimated.twist.linear.z(); float x = state.kinematics_estimated.pose.orientation.x(); float y = state.kinematics_estimated.pose.orientation.y(); float z = state.kinematics_estimated.pose.orientation.z(); float w = state.kinematics_estimated.pose.orientation.w(); float vel_x_self = (1 - 2 * (y * y) - 2 * (z*z)) * vel_x + (2 * x * y + 2 * z * w) * vel_y + (2 * x * z - 2 * y * w) * vel_z; float vel_y_self = (2 * x * y - 2 * z * w) * vel_x + (1 - 2 * (x *x) - 2 * (z *z)) * vel_y + (2 * y * z + 2 * x * w) * vel_z; float vel_z_self = (2 * x * z + 2 * y * w) * vel_x + (2 * y * z - 2 * x * w) * vel_y + (1 - 2 * (x*x) - 2 * (y*y)) * vel_z; std::ostringstream ss; ss << common_line; ss << vel_x_self << "\t" << vel_y_self << "\t"<< vel_z_self << "\t"; return ss.str(); }
参考链接为:果然爱大佬的博客与官方源码
https://blog.csdn.net/weixin_44691296/article/details/119923403
-
导航坐标系:地心惯性坐标系、地心地固坐标系、当地水平坐标系、载体/机体坐标系
2021-05-11 10:08:33五、载体/机体坐标系 在实际应用中,加速度计的测量轴是由运动平台安装固定此器件的轴向决定的。这些坐标轴就形成了载体坐标系,定义如下: 坐标原点设在载体质心(这样可简化运动方程的推导); y轴指向载体前方,称为横...导航中的几种常用坐标系
- 地心惯性坐标系(ECI)
- 地心地固坐标系(ECEF)
- 当地水平坐标系(LLF)、东北天坐标系ENU
- 地平坐标系
- 载体/机体坐标系
机动目标跟踪/室内定位/导航/优化技术探讨:WX: ZB823618313
原创不易,路过的各位大佬请点个赞
一、 地心惯性坐标系(ECI)
在空间保持静止或匀速直线运动(无加速度)的坐标系称为惯性坐标系。所有惯性器件在测量轴方向产生的都是惯性系下的测量结果。此外,还需要在惯性系下完成卫星绕地球的位置和速度的估计。对于近地卫星,通常采用地心惯性(ECI)坐标系。
- 地球质心为坐标系原点;
- z z z轴沿着地球自转轴指向协议地极;
- x x x轴位于赤道平面内,并指向春分点;
- y y y轴符合右手笛卡儿坐标系。
ECI 坐标系的坐标轴利用上标 i i i表示为 x i x_i xi , y i y_i yi , z i z_i zi。
Fig. ECI和ECEF坐标系 二、 地心地固坐标系(ECEF)
地心地固坐标系(ECEF)与ECI坐标系有着相同的坐标原点和 z z z轴定义,但是ECEF坐标系是与地球保持同步旋转的(所以命名为地固)。定义为:
一般地球导航和跟踪中,惯性坐标系即为ECEF- 坐标原点与地球质心重合;
- z z z轴指向协议地极;
- x x x轴指向赤道与本初子午线(格林尼治子午线)的交点;
- y y y轴在赤道平面上与 x x x轴和 z z z轴构成右手笛卡儿坐标系。
ECI 坐标系的坐标轴利用上标 i i i表示为 x e x_e xe , y e y_e ye , z e z_e ze。地心地固坐标系是参与地球自转的,它相对惯性坐标系的转动角速度就等于地球自转角速度。
三、 当地水平坐标系(LLF)
又被称之为 地理坐标系
当地水平坐标系(LLF)用来描述运载器在近地运动中的姿态与速度。LLF坐标系也称为地理或导航坐标系。通常LLF定义如下:
- 坐标原点是惯性器件坐标系的中心(惯性器件的三轴交点);
- y y y轴水平指真北;
- z z z轴水平指东;
- z z z轴与 x x x轴、 y y y轴构成右手笛卡儿坐标系,方向与地球椭球面垂直。即指向天或地心
LLF也称为ENU坐标系,因为它的坐标轴分别指向正北、正东,和铅直向上。下图表示了该坐标系之间的关系。另一种常用LLF坐标系与ENU坐标系的z轴定义不同,它与x轴、y轴构成左手笛卡儿坐标系,z轴方向垂直于参考椭球面向下。因此,这种坐标系称为NED(北,东,地)坐标系。本书将采用ENU坐标系。
LLF坐标系的坐标轴利用上标 g g g表示为 x g x_g xg , y g y_g yg , z g z_g zg。
四、 地平坐标系
地平坐标系如图所示,
- 坐标原点取在运载体重心
- yh轴水平并指向航行方向
- zh轴与当地地垂线重合并指向天顶
- xh轴也是水平并与yh和zh轴构成右手直角坐标系。
- 其中Oxhyh平面就是当地水平面,Oyhzh平面就是运载体的纵向铅垂面。
在确定运载体姿态角时,采用地平坐标系更为直接和方便。
地平坐标系的坐标轴利用上标 h h h表示为 x h x_h xh , y h y_h yh , z h z_h zh。
五、载体/机体坐标系
在实际应用中,加速度计的测量轴是由运动平台安装固定此器件的轴向决定的。这些坐标轴就形成了载体坐标系,定义如下:
- 坐标原点设在载体质心(这样可简化运动方程的推导);
- y轴指向载体前方,称为横滚轴,横滚角以y轴为起始旋转轴而得到,符合右手定则;
- x轴与y轴夹角90°,指向载体横向,称为俯仰轴,俯仰角以x轴为起始旋转轴而得到,符合右手定则;
- z轴与x轴、y轴构成右手笛卡儿坐标系,指向载体垂直方向,称为偏航轴,偏航角以z轴为起始旋转轴而得到,符合右手定则。
即机体坐标系与载体固连,其坐标原点与飞机重心重合。
原创不易,路过的各位大佬请点个赞
-
地面坐标系与机体坐标系的转换和欧拉角
2020-02-24 17:45:09机体坐标系 原点O取在飞机质心处, Xb轴指向机头, ,Yb轴指向机身右方, Zb指向机身下方。 地面坐标系 在地面上选一点Og,使Xg轴在水平面内并指向某一方向,Zg轴垂直于地面并指向地心,Yg轴在水平面内垂直于Xg轴,是一个...大家在入门四旋翼飞行器数学模型时第一个遇到的就是坐标系的转换。这篇文章用尽量浅显的语言为大家讲解坐标系的转换的欧拉角。
机体坐标系
原点O取在飞机质心处, Xb轴指向机头, ,Yb轴指向机身右方, Zb指向机身下方。
地面坐标系
在地面上选一点Og,使Xg轴在水平面内并指向某一方向,Zg轴垂直于地面并指向地心,Yg轴在水平面内垂直于Xg轴,是一个右手坐标系。
欧拉角
机体坐标系与地面惯性坐标系之间的夹角就是飞机的姿态角,又称欧拉角。
(1)俯仰角θ\thetaθ: 机体轴与地平面(水平面)之间的夹角,飞机抬头为正。
(2)偏航角(方位角)ψ\psiψ:机体轴在水平面上的投影与地轴之间的夹角,以机头右偏为正。
(3)滚转角(倾斜角)ϕ\phiϕ:飞机对称面绕机体轴 转过的角度,右滚为正。飞机速度分量
坐标系转换
那么,三维坐标系的转换就有
可以的到分别绕三个轴的转换矩阵为
-
机体坐标系b系 和相机坐标系之间的转换关系
2021-08-01 23:39:50摄像机坐标系(c 系): 以光学系统的像方主点为原点O ; X轴平行于成像平面坐标系,右向为正; Y轴平行于成像平面坐标系的纵轴,下向为正; Z轴指向观察者,向下为正; 构成右手坐标系。 Body 坐标系: 机体系 一般是 ... -
无人机运动学控制中的坐标系,及惯性坐标系与机体坐标系之间的矩阵转换 欧拉角
2019-10-24 16:39:59一、无人机控制中的坐标系 无人机运动学中,有三种需要了解的坐标系 1.1、地球中心坐标系(ECEF) 地球中心坐标系,即坐标系原点位于地心。X轴通过格林尼治线和赤道线的交点,正方向为原点指向交点方向。 Z轴... -
机体坐标系的角速度分量
2019-09-02 11:28:34机体坐标系的三个角速度分量 , 是机体坐标系相对于地面坐标系的转动角速度在机体坐标系各轴上的分量。其中: 角速度p ,与机体轴x 重合一致; 角速度q, 与机体轴y 重合一致; 角速度r, 与机体轴 z重合一致... -
AirSim(五)---理解篇: Airsim世界坐标系、NED坐标系、机体坐标系以及控制相关API接口函数
2022-04-28 10:09:03坐标系 coordinate system(1) AirSim API的坐标系:NED 坐标系 with SI unit(2) Unreal Engine的坐标系(3)AirSim全局坐标系=NED坐标系=世界坐标系(4) AirSim的机体坐标系:Body Frame(5) AirSim APIs for Car... -
不同坐标系下角速度_惯性技术常用坐标系
2020-11-20 23:38:23使用陀螺仪或者加速度计,首先要理解的就是各个坐标系,尤其是惯性参考坐标系。整理下IMU系列的相关理论,首先从坐标系定义开始[1]。一. 惯性参考坐标系 经典力学认为,要选取一个绝对静止或者匀速直线运动的参考... -
ECEF坐标系
2021-02-01 02:38:05标签:ECEF(Earth-Centered, Earth-Fixed)地球为中心,符合地区,是一个笛卡尔坐标系,也称为“普通地表”系统, X,Y,Z表示坐标位置,(0,0,0)点表示地球质心。它的坐标轴International Reference Pole 和 ... -
bebop2机体坐标系和相机坐标系的关系确定吗?是怎么获得的呢?
2022-04-27 16:05:24bebop2的相机是鱼眼相机,那相机坐标系与机体坐标系之间的关系是否是确定的呢?如果是确定的,那是要通过标定获得他们之间的关系吗? -
4.建模坐标系与世界坐标系
2019-12-07 15:02:40♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,....1.建模坐标系 ...2.世界坐标系 ...3.建模坐标系相比世界坐标系的优势 ♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*... -
自动驾驶中的坐标系
2022-04-27 10:14:47自动驾驶中的坐标系0.引言1.相机传感器坐标系2.激光雷达坐标系3.车体坐标系4.世界坐标系4.1.地理坐标系4.2.投影坐标系4.2.1.投影方式4.2.2.通用横轴墨卡托UTM投影5.自动驾驶中的坐标定位 0.引言 总结于网络。重点在... -
组合导航中的几个坐标系
2020-12-23 15:28:38机体坐标系(b系) 1.地心惯性坐标系(i系) 惯性坐标系圆心一般取地心,X轴在地球赤道平面指向春分点,Z轴与地球极轴重合指向北极,Y轴与XZ两轴构成右手直角坐标系。 惯性元件陀螺仪和加速度计输出的角运动和线运动... -
常用坐标系及坐标系之间的变换
2018-05-31 10:36:37(主要是3个坐标系3个角)地理坐标系(n系)坐标系原点On取为飞行器质心。Xn轴向指向北,Yn轴正向指向天,Zn轴正向指向东。简单地说:XYZ就是北天东地理坐标系相对于地球坐标系的关系就是飞行器的地理位置,即经度λ... -
导航基础之坐标系整理——导航坐标系、地球坐标系、载体坐标系
2020-01-07 17:06:48概述 在三维空间中,无约束的物体具有6个自由度,即三个方向的位置和三个欧拉角。故在导航中,明确坐标系的定义是基础。 ...导航坐标系可以是地固坐标系、地理坐标系等等,通常使用的是当地水... -
无人机常用的几种坐标系及其变换
2020-01-29 13:58:07无人机常用的几种坐标系及其变换 坐标系 在无人机的导航、制导和控制中,经常需要用到以下几种坐标系: the geodetic coordinate system(地理坐标系), the earth-centered earth-fixed (ECEF) coordinate ... -
传感器坐标系与车身坐标系的转换关系
2018-09-25 22:30:36传感器坐标系与车身坐标系的转换 1.坐标系的定义 车身坐标系定义如下: 传感器坐标系定义如下: 将车身坐标系定义为O2XYZO_2XYZO2XYZ,传感器的坐标系定义为O3XYZO_3XYZO3XYZ,绕ZZZ轴旋转的角度为ψ\psi... -
坐标转换:将imu坐标系下的角速度、线速度转换到车体坐标系,参考Autoware
2021-03-04 11:18:56需求:获取geometry_msgs::TwistStamped格式的速度信息(角速度+线速度) 方法1:从底盘获取线速度,imu获取偏航角速度数据,然后组合数据发布信息。 方法2:通过融合定位输出的位姿(x,y,yaw),通过前后帧计算线... -
无人机导航中的各类坐标系
2020-12-21 09:39:04机体坐标系(body frame) 1. 无人机中NED坐标理解 1.1 机体坐标系 机体坐标系固连飞机,其原点 取在多旋翼的重心位置上。 x轴在多旋翼对称平面内指向机头(机头方向与多旋+字形或X字形相关)。 z轴在飞机对称平面内... -
mavros操作飞机时方向位置改为机体坐标系下指令
2021-05-17 16:58:37前面试了很多,看官网里的说明 用 /mavros/setpoint_raw/local"里的frame_id改为"base_link" 不行 又直接发...//Frame_body_ned=8这个参数从很多消息那都可以看到 加上这一句后再尝试,飞机就按照机体坐标系去飞行了 -
ROS中ENU坐标系与无人机中NED坐标系的转换关系理解
2020-08-04 12:24:19这个ENU坐标系和NED坐标系看到很多次了,之前一直不知道是什么 ... 摘自:... ROS中ENU坐标系与无人机中NED坐标系的转换关系理解 ...机体坐标系:机体坐标系固连飞机,其原点 取在多旋翼的重心位置上. -
大地坐标系(WGS-84)、地心地固坐标系(ECEF)与东北天坐标系(ENU)的相互转换C语言代码分享
2020-12-19 12:53:41WGS84//pcg为WGS-84坐标系结构体指针,pcc为ECEF坐标系结构体指针void ECEFToWGS(PWGS pcg, PECEF pcc){double B0, R, N;double B_, L_;double X = pcc->x;double Y = pcc->y;double Z = pcc->z;R = sqrt... -
飞航坐标系总结
2020-04-27 23:05:56Cook的书中对于飞航坐标系的几种定义,似乎与国内的一些教材有细微不同,在后面坐标变换,动力学方程的建立中经常要用到,因此要搞清楚。 地球坐标系 这个坐标系一般不用,但应该是我们脑海里出现的最直观的坐标系。... -
惯性导航原理(1):导航坐标系及相互转换
2022-06-23 19:31:35一、导航坐标系转换 坐标系介绍 1、惯性坐标系(地心惯性坐标系)i系 2、地球坐标系(地心地固坐标系)e系 3、WGS-84坐标系(常用)blh坐标系 4、当地水平地理坐标系g系(常用东北天ENU或者北东地NED) 5、平台坐标...