🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
ast::AccelerationTransform类 参考

#include <AccelerationTransform.hpp>

Public 成员函数

 AccelerationTransform ()=default
 
 AccelerationTransform (const Vector3d &translation, const Vector3d &velocity, const Vector3d &acceleration, const AccelerationRotation &rot)
 
 AccelerationTransform (const KinematicTransform &transform, const Vector3d &acceleration, const Vector3d &angvelDot)
 
_AST_DEF_ACCELERATIONTRANSFORM_PROPERTIES _AST_DEF_ACCELERATIONROTATION_PROPERTIES AccelerationTransform & compose (const AccelerationTransform &next)
 
AccelerationTransform composed (const AccelerationTransform &next) const
 
AccelerationTransform operator* (const AccelerationTransform &next) const
 
AccelerationTransform & operator*= (const AccelerationTransform &next)
 
void getInverse (AccelerationTransform &inversed) const
 
AccelerationTransform inverse () const
 
void setIdentity ()
 
void transformPosVelAcc (const Vector3d &position, const Vector3d &velocity, const Vector3d &acceleration, Vector3d &positionOut, Vector3d &velocityOut, Vector3d &accelerationOut) const
 
void transformPosVelAccInv (const Vector3d &position, const Vector3d &velocity, const Vector3d &acceleration, Vector3d &positionOut, Vector3d &velocityOut, Vector3d &accelerationOut) const
 

静态 Public 成员函数

static AccelerationTransform Identity ()
 

Protected 属性

Vector3d acceleration_ {}
 
Vector3d velocity_ {}
 
Vector3d translation_ {}
 
Rotation rotation_ {}
 
Vector3d angvel_ {}
 
Vector3d angvelDot_ {}
 

详细描述

加速度(二阶运动学)坐标系变换

在运动学坐标系变换的基础上,增加了坐标系旋转的角加速度和平移的加速度, 因此可以变换由位置、速度和加速度组成的二阶状态量,而不只是位置和速度。

注解
参考系约定与 KinematicTransform / AccelerationRotation 一致: 平移 t、平移速度 V、平移加速度 A 均取源坐标系分量; 角速度 ω、角加速度 α 表示本坐标系相对源坐标系(父坐标系)的量,其分量在源坐标系下分解, 且 α 为该分量的坐标时间导数。 其中 A 约定为平移 t 的坐标二阶导数。
警告
平动加速度为零、旋转角加速度为零的两个变换组合之后,其加速度一般并不为零: A = 2ω₁×(M₁ᵀV₂) + ω₁×(ω₁×τ),α = ω₁×(M₁ᵀω₂)(τ = M₁ᵀt₂)。 即内层坐标系一旦相对转动,外层的匀速平移在源坐标系下就表现为圆周运动。

构造及析构函数说明

◆ AccelerationTransform() [1/2]

A_ALWAYS_INLINE ast::AccelerationTransform::AccelerationTransform ( const Vector3d & translation,
const Vector3d & velocity,
const Vector3d & acceleration,
const AccelerationRotation & rot )

加速度变换构造函数

参数
translation平移(源坐标系分量)
velocity平移速度(源坐标系分量)
acceleration平移加速度(源坐标系分量)
rot加速度旋转

◆ AccelerationTransform() [2/2]

A_ALWAYS_INLINE ast::AccelerationTransform::AccelerationTransform ( const KinematicTransform & transform,
const Vector3d & acceleration,
const Vector3d & angvelDot )

由一阶变换与二阶增量构造加速度变换

参数
transform运动学变换
acceleration平移加速度(源坐标系分量)
angvelDot旋转角加速度

成员函数说明

◆ compose()

A_ALWAYS_INLINE AccelerationTransform & ast::AccelerationTransform::compose ( const AccelerationTransform & next)

组合下一个坐标系变换

警告
组合变换是先应用当前变换,再应用下一个变换。
参数
next下一个坐标系变换
返回
组合变换

◆ composed()

A_ALWAYS_INLINE AccelerationTransform ast::AccelerationTransform::composed ( const AccelerationTransform & next) const

组合下一个坐标系变换

警告
组合变换是先应用当前变换,再应用下一个变换。
参数
next下一个坐标系变换
返回
组合变换

记 τ = M₁ᵀ t₂,则平移与速度的合成与 KinematicTransform 一致, 加速度在此基础上多出三项:τ 与 M₁ᵀV₂ 都随中间系一起转动,其方向随时间变化,故求二阶导时不消去。 A = A₁ + M₁ᵀA₂ + 2ω₁×(M₁ᵀV₂) + ω₁×(ω₁×τ) + α₁×τ

◆ getInverse()

A_ALWAYS_INLINE void ast::AccelerationTransform::getInverse ( AccelerationTransform & inversed) const

获取逆变换

参数
inversed逆变换

与 KinematicTransform::getInverse 一致:把平移、速度、加速度取负后走正向变换。 也可参考 Transform::getInverse 用的 rotation_.transformVector()

◆ Identity()

A_ALWAYS_INLINE AccelerationTransform ast::AccelerationTransform::Identity ( )
static

获取单位加速度变换

返回
单位加速度变换

◆ inverse()

A_ALWAYS_INLINE AccelerationTransform ast::AccelerationTransform::inverse ( ) const

获取逆变换

返回
逆变换

◆ operator*()

A_ALWAYS_INLINE AccelerationTransform ast::AccelerationTransform::operator* ( const AccelerationTransform & next) const

组合下一个坐标系变换

警告
组合变换是先应用当前变换,再应用下一个变换。
参数
next下一个坐标系变换
返回
组合变换

◆ operator*=()

A_ALWAYS_INLINE AccelerationTransform & ast::AccelerationTransform::operator*= ( const AccelerationTransform & next)

组合下一个坐标系变换

警告
组合变换是先应用当前变换,再应用下一个变换。
参数
next下一个坐标系变换
返回
组合变换

◆ transformPosVelAcc()

A_ALWAYS_INLINE void ast::AccelerationTransform::transformPosVelAcc ( const Vector3d & position,
const Vector3d & velocity,
const Vector3d & acceleration,
Vector3d & positionOut,
Vector3d & velocityOut,
Vector3d & accelerationOut ) const

变换位置、速度和加速度

设 ρ = p − t 为点相对目标坐标系原点的位置,ρ̇、ρ̈ 分别为其在源坐标系下的 坐标导数和坐标二阶导数,则 positionOut = M ρ velocityOut = M ( ρ̇ − ω×ρ ) accelerationOut = M ( ρ̈ − 2ω×ρ̇ − ω̇×ρ + ω×(ω×ρ) )

参数
position位置(源坐标系分量)
velocity速度(源坐标系分量)
acceleration加速度(源坐标系分量)
positionOut变换后的位置
velocityOut变换后的速度
accelerationOut变换后的加速度

先进行坐标系平移(含速度和加速度),再进行加速度旋转。

◆ transformPosVelAccInv()

A_ALWAYS_INLINE void ast::AccelerationTransform::transformPosVelAccInv ( const Vector3d & position,
const Vector3d & velocity,
const Vector3d & acceleration,
Vector3d & positionOut,
Vector3d & velocityOut,
Vector3d & accelerationOut ) const

变换位置、速度和加速度(逆变换)

警告
注意:这里是逆变换,等价于 inverse().transformPosVelAcc(...);
参数
position位置(目标坐标系分量)
velocity速度(目标坐标系分量)
acceleration加速度(目标坐标系分量)
positionOut变换后的位置
velocityOut变换后的速度
accelerationOut变换后的加速度

逆变换是"先逆旋转,再把平移加回去",与正向的"先减平移,再旋转"次序相反


该类的文档由以下文件生成: