Deal with changes in Rot3
parent
4c8c669d71
commit
1a47a334de
|
@ -205,10 +205,10 @@ PoseRTV PoseRTV::transformed_from(const Pose3& trans, ChartJacobian Dglobal,
|
|||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
Matrix PoseRTV::RRTMbn(const Vector& euler) {
|
||||
Matrix PoseRTV::RRTMbn(const Vector3& euler) {
|
||||
assert(euler.size() == 3);
|
||||
const double s1 = sin(euler(1-1)), c1 = cos(euler(1-1));
|
||||
const double t2 = tan(euler(2-1)), c2 = cos(euler(2-1));
|
||||
const double s1 = sin(euler.x()), c1 = cos(euler.x());
|
||||
const double t2 = tan(euler.y()), c2 = cos(euler.y());
|
||||
Matrix Ebn(3,3);
|
||||
Ebn << 1.0, s1 * t2, c1 * t2,
|
||||
0.0, c1, -s1,
|
||||
|
@ -222,11 +222,10 @@ Matrix PoseRTV::RRTMbn(const Rot3& att) {
|
|||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
Matrix PoseRTV::RRTMnb(const Vector& euler) {
|
||||
assert(euler.size() == 3);
|
||||
Matrix PoseRTV::RRTMnb(const Vector3& euler) {
|
||||
Matrix Enb(3,3);
|
||||
const double s1 = sin(euler(1-1)), c1 = cos(euler(1-1));
|
||||
const double s2 = sin(euler(2-1)), c2 = cos(euler(2-1));
|
||||
const double s1 = sin(euler.x()), c1 = cos(euler.x());
|
||||
const double s2 = sin(euler.y()), c2 = cos(euler.y());
|
||||
Enb << 1.0, 0.0, -s2,
|
||||
0.0, c1, s1*c2,
|
||||
0.0, -s1, c1*c2;
|
||||
|
|
|
@ -18,6 +18,7 @@ typedef Vector3 Velocity3;
|
|||
/**
|
||||
* Robot state for use with IMU measurements
|
||||
* - contains translation, translational velocity and rotation
|
||||
* TODO(frank): Alex should deprecate/move to project
|
||||
*/
|
||||
class GTSAM_UNSTABLE_EXPORT PoseRTV : public ProductLieGroup<Pose3,Velocity3> {
|
||||
protected:
|
||||
|
@ -145,13 +146,15 @@ public:
|
|||
|
||||
/// RRTMbn - Function computes the rotation rate transformation matrix from
|
||||
/// body axis rates to euler angle (global) rates
|
||||
static Matrix RRTMbn(const Vector& euler);
|
||||
/// TODO(frank): seems to ignore euler.z()
|
||||
static Matrix RRTMbn(const Vector3& euler);
|
||||
|
||||
static Matrix RRTMbn(const Rot3& att);
|
||||
|
||||
/// RRTMnb - Function computes the rotation rate transformation matrix from
|
||||
/// euler angle rates to body axis rates
|
||||
static Matrix RRTMnb(const Vector& euler);
|
||||
/// TODO(frank): seems to ignore euler.z()
|
||||
static Matrix RRTMnb(const Vector3& euler);
|
||||
|
||||
static Matrix RRTMnb(const Rot3& att);
|
||||
/// @}
|
||||
|
|
|
@ -101,7 +101,7 @@ Mechanization_bRn2 Mechanization_bRn2::integrate(const Vector3& u,
|
|||
|
||||
// convert to navigation frame
|
||||
Rot3 nRb = bRn_.inverse();
|
||||
Vector3 n_omega_bn = (nRb*b_omega_bn).vector();
|
||||
Vector3 n_omega_bn = nRb * b_omega_bn;
|
||||
|
||||
// integrate bRn using exponential map, assuming constant over dt
|
||||
Rot3 delta_nRn = Rot3::Rodrigues(n_omega_bn*dt);
|
||||
|
|
|
@ -42,7 +42,7 @@ public:
|
|||
/// gravity in the body frame
|
||||
Vector3 b_g(double g_e) const {
|
||||
Vector3 n_g(0, 0, g_e);
|
||||
return (bRn_ * n_g).vector();
|
||||
return bRn_ * n_g;
|
||||
}
|
||||
|
||||
const Rot3& bRn() const {return bRn_; }
|
||||
|
|
Loading…
Reference in New Issue