inline Pose Pose::operator*(const Pose& other) const { // Convention: Pose * PoseOther // x' = (Pose * PoseOther).map(x) // x' = Pose.map(PoseOther.map(x)) // x' = R * (Rother * x + Tother) + T // x' = R * Rother * x + (R * Tother + T) Quaterniond orientation = (m_orientation * other.orientation()); Vector3d position = m_orientation * other.position() + m_position; return Pose(orientation, position); }
double get_heading(const Pose &p) { return p.orientation(); }