FhSim
3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
QuaternionRate.h
1
15
#pragma once
16
17
#include <Eigen/Dense>
18
19
namespace
Ship
20
{
21
24
constexpr
double
kQuaternionNormGain
= 2.0;
25
33
inline
Eigen::Vector4d
QuaternionRate
(
const
Eigen::Vector4d& q,
const
Eigen::Vector3d& omega,
double
gain)
34
{
35
const
double
norm = q.norm();
36
const
double
qw = q(0) / norm;
37
const
Eigen::Vector3d qVec = q.tail<3>() / norm;
38
39
Eigen::Matrix3d dyadic;
40
dyadic << 0, -qVec(2), qVec(1), qVec(2), 0, -qVec(0), -qVec(1), qVec(0), 0;
41
42
Eigen::Vector4d rate;
43
// The same expressions as the Ship used before, so that a unit quaternion gives the same bits.
44
rate(0) = (-0.5 * qVec.transpose() * omega)(0, 0);
45
rate.tail<3>() = 0.5 * (qw * Eigen::Matrix3d::Identity() - dyadic) * omega;
46
rate += gain * (1.0 - q.squaredNorm()) * q;
47
return
rate;
48
}
49
50
}
// namespace Ship
Ship
Simple waypoint object.
Definition
CableAttach.h:16
Ship::kQuaternionNormGain
constexpr double kQuaternionNormGain
Definition
QuaternionRate.h:24
Ship::QuaternionRate
Eigen::Vector4d QuaternionRate(const Eigen::Vector4d &q, const Eigen::Vector3d &omega, double gain)
Definition
QuaternionRate.h:33
webfhsim
reloadrepos
fhsim_maritime
src
ship
Ship
QuaternionRate.h
Generated on Sun Oct 25 2026 21:43:29 for FhSim by
1.9.8