GUI.StartParserThread()
GV3::get<Vector<NUMTRACKERCAMPARAMETERS> >(" Camera.Parameters" , ATANCamera::mvDefaultParams, SILENT);
這是在main裡面第一個看不懂的東西,
根據Gvars的簡單範例,GV3::get("wurble")是把設定檔中wurble=10這行的10parse出來。
合理猜測,現在遇到的這行是把某個設定檔中的Camera.Parameters的值爬出來,指定給ATANCamera::mvDefaultParams。
在ATANCamera.h裡面,發現有這麼一個data member,不過順便看了一下註解後發現,好像沒什麼用
static const Vector<NUMTRACKERCAMPARAMETERS> mvDefaultParams;
重點應該是下面這個data member,註解說他才是真正儲存相機參數的變數
Vector<NUMTRACKERCAMPARAMETERS> mgvvCameraParams;
Init & Run CameraCalibrator
CameraCalibrator c;
c.Run();
CameraCalibrator這個class裡面有一個mCamera(ATANCamera mCamera),在建構子設定了這個成員的一些初始值,此外,訂閱影像也是在這邊開始。
CameraCalibrator::CameraCalibrator () :
mCamera(" Camera" ), mbDone(false ), mCurrentImage(CVD::ImageRef(752 , 480 )), mDoOptimize(false ), mNewImage(false )
{
ros::NodeHandle nh;
image_transport::ImageTransport it (nh);
mImageSub = it.subscribe (" image" , 1 , &CameraCalibrator::imageCallback, this );
}
Run的內容因為需要詳細分析,現在先不管,只要知道裡面有個while迴圈維持程式持續運行就好。