Go to the documentation of this file.00001
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef OCRA_WBI_CONVERSIONS_H__
00028 #define OCRA_WBI_CONVERSIONS_H__
00029
00030 #include <iostream>
00031 #include <map>
00032 #include <vector>
00033
00034 #include <yarp/sig/Vector.h>
00035 #include <yarp/os/Log.h>
00036 #include <wbi/wbi.h>
00037 #include <yarpWholeBodyInterface/yarpWholeBodyInterface.h>
00038
00039 #include "ocra-icub/Utilities.h"
00040
00041 namespace ocra_icub
00042 {
00043
00044
00045 typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> MatrixXdRm;
00046
00047
00048 class OcraWbiConversions
00049 {
00050
00051 public:
00052 static bool eigenDispdToWbiFrame(const Eigen::Displacementd &disp, wbi::Frame &frame);
00053 static bool wbiFrameToEigenDispd(const wbi::Frame &frame, Eigen::Displacementd &disp);
00054 static bool wbiToOcraTwistVector(Eigen::Twistd &t_wbi, Eigen::Twistd &t_ocra);
00055 static bool ocraToWbiTwistVector(Eigen::Twistd &t_ocra, Eigen::Twistd &t_wbi);
00056 static bool wbiToOcraSegJacobian(const Eigen::MatrixXd &jac, Eigen::MatrixXd &J);
00057 static bool wbiToOcraCoMJacobian(const Eigen::MatrixXd &jac, Eigen::Matrix<double,3,Eigen::Dynamic> &J);
00058 static bool eigenRowMajorToColMajor(const MatrixXdRm &M_rm, Eigen::MatrixXd &M);
00059 static bool wbiToOcraMassMatrix(int qdof, const Eigen::MatrixXd &M_wbi, Eigen::MatrixXd &M_ocra);
00060 static bool wbiToOcraBodyVector(int qdof, const Eigen::VectorXd &v_wbi, Eigen::VectorXd &v_ocra);
00061 static bool eigenToYarpVector(const Eigen::VectorXd &eigenVector, yarp::sig::Vector &yarpVector);
00062 static const int DIM_TRANSLATION = 3;
00063 static const int DIM_ROTATION = 3;
00064 };
00065 }
00066 #endif //OCRA_WBI_CONVERSIONS_H