Jan 4, 2013

MRPT Matrix

MRPT 的Matrix和Vector是基於Eigen 這個函式庫來的。就MRPT網站上建議,直接用Eigen::Matrix<>而不要用MRPT自己的型別,因為都是從Eigen::Matrix<>改來的。差異如下圖:

只要是從Eigen::Matrix 來的都可以用他原本的function。用法可以參考Eigen的document


  1. mrpt::dynamicsize_vector < T > (範例)
    dynamicsize_vector下定義了兩個vector mrpt::vector_float 與 mrpt::vector_double。這兩種型別的長度可以是可變的。
  2. mrpt::math::CArrayNumeric < T,LEN >
    CArrayNumeric與dynamicsize_vector差別在長度宣告後就是固定的了。但是他支援較多的型態
  3. mrpt::math::CMatrixTemplateNumeric < T >
    aaa

Jan 2, 2013

在MRPT裡面畫圖 (Plot in MRPT)


MRPT的gui modules 提供了三個視窗class用來畫圖:

1. mrpt::gui::CDisplayWindow (範例)
    CDisplayWindow 提供的是顯示影像的功能,也可以在影像上面畫東西。



2. mrpt::gui::CDisplayWindowPlots
    CDisplayWindowPlots提供的是類似Matlab plot的函數功能。(範例)
#include <mrpt/base.h>
#include <mrpt/gui.h>
#include <vector>
#include <cmath>

using namespace mrpt;
using namespace mrpt::gui;
using namespace std;


int main ( void )
{
 CDisplayWindowPlots win("Plot Windows", 640, 480);
 vector<float> x, y, z; 
 int maxsize = 100;
 float dt = M_2PIf/100;

 for (int i = 0 ; i < maxsize ; i++)
 {
  x.push_back(-M_PIf+dt*i);
  y.push_back(sin(x[i]));
  z.push_back(cos(x[i]));
 }

 win.plot(x,y);
 win.hold_on();
 win.plot(x,z,"r:3");
 win.axis_fit(true);

 while(win.isOpen())
 {
  mrpt::system::sleep(100);
 }

}
3. mrpt::gui::CDisplayWindow3D
    CDisplayWindow3D 提供的OpenGL的3D場景畫圖。(範例)