Example #1
0
    void apply_increment(Pose &obj, const double increment[SE3Type::num_parameters-1], const Adl&){
        Eigen::Matrix3d R = obj.rotationMatrix();

        v::apply_rotation(R, Eigen::Vector3d(increment[0], increment[1], increment[2]));
        obj.data[0] = R(2, 1); 
        obj.data[1] = R(0, 2);
        obj.data[2] = R(1, 0);

        for (size_t i=3; i<6;  ++i){
            obj.data[i] += increment[i]; 
        }

    }
Example #2
0
    template<int I> void apply_small_increment(Pose &obj, double d, v::numeric_tag<I>, const Adl&){
        if (I < 3){
            Eigen::Matrix<double, 3, 3> R = obj.rotationMatrix();

            if      (I == 0) v::apply_small_rotation_x(R, d);
            else if (I == 1) v::apply_small_rotation_y(R, d);
            else if (I == 2) v::apply_small_rotation_z(R, d);

            obj.data[0] = R(2, 1); 
            obj.data[1] = R(0, 2);
            obj.data[2] = R(1, 0);
        }
        else{
            obj.data[I] += d;
        }
    }