30#define _AST_DEF_ACCELERATIONTRANSFORM_PROPERTIES\
31 _AST_DEF_KINEMATICTRANSFORM_PROPERTIES\
32 const Vector3d& acceleration() const { return acceleration_; }\
33 Vector3d& acceleration() { return acceleration_; }\
34 const Vector3d& getAcceleration() const { return acceleration_; }\
35 Vector3d& getAcceleration() { return acceleration_; }\
36 void setAcceleration(const Vector3d& acceleration) { acceleration_ = acceleration; }\
37 const KinematicTransform& kinematicTransform() const { return reinterpret_cast<const KinematicTransform&>(velocity_); }\
38 KinematicTransform& kinematicTransform() { return reinterpret_cast<KinematicTransform&>(velocity_); }\
39 const KinematicTransform& getKinematicTransform() const { return kinematicTransform(); }\
40 KinematicTransform& getKinematicTransform() { return kinematicTransform(); }\
41 void setKinematicTransform(const KinematicTransform& transform) { kinematicTransform() = transform; }\
73 const Vector3d& angvelDot);
79 _AST_DEF_ACCELERATIONTRANSFORM_PROPERTIES
80 _AST_DEF_ACCELERATIONROTATION_PROPERTIES
118 acceleration_ = Vector3d::Zero();
119 velocity_ = Vector3d::Zero();
120 translation_ = Vector3d::Zero();
121 rotation_ = Rotation::Identity();
122 angvel_ = Vector3d::Zero();
123 angvelDot_ = Vector3d::Zero();
138 void transformPosVelAcc(
139 const Vector3d& position,
140 const Vector3d& velocity,
141 const Vector3d& acceleration,
142 Vector3d& positionOut,
143 Vector3d& velocityOut,
144 Vector3d& accelerationOut)
const;
154 void transformPosVelAccInv(
155 const Vector3d& position,
156 const Vector3d& velocity,
157 const Vector3d& acceleration,
158 Vector3d& positionOut,
159 Vector3d& velocityOut,
160 Vector3d& accelerationOut)
const;
163 Vector3d acceleration_{};
164 Vector3d velocity_{};
165 Vector3d translation_{};
168 Vector3d angvelDot_{};
171A_ALWAYS_INLINE AccelerationTransform::AccelerationTransform(
const Vector3d &translation,
const Vector3d &velocity,
const Vector3d &acceleration,
const AccelerationRotation &rot)
172 : acceleration_(acceleration)
173 , velocity_(velocity)
174 , translation_(translation)
175 , rotation_(rot.rotation())
176 , angvel_(rot.rotationRate())
177 , angvelDot_(rot.rotationRateDot())
182 : acceleration_(acceleration)
183 , velocity_(transform.velocity())
184 , translation_(transform.translation())
185 , rotation_(transform.rotation())
186 , angvel_(transform.rotationRate())
187 , angvelDot_(angvelDot)
207 Vector3d angvel1 = this->rotationRate();
208 Vector3d angvelDot1 = this->rotationRateDot();
209 Vector3d tau = next.translation() * mat1;
210 Vector3d velocity2 = next.velocity() * mat1;
211 Vector3d acceleration2 = next.acceleration() * mat1;
213 Vector3d translation = this->translation() + tau;
214 Vector3d velocity = this->velocity() + velocity2 + angvel1.cross(tau);
215 Vector3d acceleration = this->acceleration() + acceleration2
216 + angvel1.cross(velocity2) * 2.0
217 + angvel1.cross(angvel1.cross(tau))
218 + angvelDot1.cross(tau);
221 .
composed(next.accelerationRotation());
254 -this->translation(),
256 -this->acceleration(),
257 inversed.translation(),
261 inversed.setAccelerationRotation(inversedRotation);
272 const Vector3d &position,
const Vector3d &velocity,
const Vector3d &acceleration,
273 Vector3d &positionOut, Vector3d &velocityOut, Vector3d &accelerationOut)
const
278 this->accelerationRotation().transformVecVelAcc(
279 position - this->translation(),
280 velocity - this->velocity(),
281 acceleration - this->acceleration(),
288 const Vector3d &position,
const Vector3d &velocity,
const Vector3d &acceleration,
289 Vector3d &positionOut, Vector3d &velocityOut, Vector3d &accelerationOut)
const
294 this->accelerationRotation().transformVecVelAccInv(
302 positionOut += this->translation();
303 velocityOut += this->velocity();
304 accelerationOut += this->acceleration();
加速度(二阶运动学)坐标系旋转
定义 AccelerationRotation.hpp:51
void transformVecVelAcc(const Vector3d &position, const Vector3d &velocity, const Vector3d &acceleration, Vector3d &positionOut, Vector3d &velocityOut, Vector3d &accelerationOut) const
变换位置、速度和加速度
定义 AccelerationRotation.hpp:227
void getInverse(AccelerationRotation &inversed) const
获取逆旋转
定义 AccelerationRotation.hpp:209
AccelerationRotation composed(const AccelerationRotation &next) const
组合下一个坐标系旋转
定义 AccelerationRotation.hpp:177
static AccelerationRotation Identity()
获取单位加速度旋转
定义 AccelerationRotation.hpp:151