00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <iostream>
00021 #include <string>
00022 #include "uvsim/navigation/Ins.h"
00023 #include "uvsim/navigation/GeoMag.h"
00024 #include "uvsim/utilities/utilities.h"
00025 #include "uvsim/visualization/Frame.h"
00026 #include <osg/PositionAttitudeTransform>
00027
00028 int main()
00029 {
00030
00031 const static double refreshRate = 0.05;
00032 const static int freq = 500;
00033
00034
00035 vector<double> freqCutMb(3), freqCutFb(3), freqCutWb(3);
00036
00037
00038 freqCutMb(0) = 1;
00039 freqCutMb(1) = 1;
00040 freqCutMb(2) = 1;
00041
00042
00043 freqCutFb(0) = 350;
00044 freqCutFb(1) = 350;
00045 freqCutFb(2) = 150;
00046
00047
00048 freqCutWb(0) = 120;
00049 freqCutWb(1) = 120;
00050 freqCutWb(2) = 120;
00051
00052
00053 float dec, dip, ti, gv;
00054
00055
00056 float alt, glat, glon, time;
00057 alt = 184.7;
00058 glat = 40.41194444;
00059 glon = -86.93361111;
00060 time = 2009.7;
00061
00062
00063 uvsim::Imu6DofSensor imu("/dev/rfcomm0", freqCutMb, freqCutFb, freqCutWb);
00064 uvsim::Ins ins(std::string(DATADIR)+="/data/Ins15g.dat",
00065 std::string(DATADIR)+="/data/Gyro.dat",
00066 std::string(DATADIR)+="/data/Mag.dat",freq,&imu);
00067 ins.initializeStatic(alt,glat,glon);
00068
00069
00070 osg::Vec3 center(0,0,0), eye(0,20,-10), up(0,0,-1);
00071 vector<double> pos(3);
00072 osgViewer::Viewer *viewer = new osgViewer::Viewer;
00073 viewer->setUpViewInWindow(0,0,300,300);
00074
00075
00076 osg::Group *root = new osg::Group;
00077 uvsim::Frame *frame = new uvsim::Frame(5);
00078 osg::PositionAttitudeTransform *frameTrans = new osg::PositionAttitudeTransform;
00079 frameTrans->addChild(frame->root);
00080 root->addChild(frameTrans);
00081
00082 viewer->setSceneData(root);
00083 viewer->realize();
00084
00085
00086 for (int i=0; !viewer->done(); i++)
00087 {
00088
00089 if ((i % int(freq*refreshRate)) == 0)
00090 {
00091
00092 uvsim::clear();
00093 ins.print();
00094
00095
00096 vector<double> quat = ins.getQuat();
00097 frameTrans->setAttitude(osg::Quat(quat(1),quat(2),quat(3),quat(0)));
00098 pos = ins.getGeo().getCartesian();
00099
00100
00101
00102 viewer->getCamera()->setViewMatrixAsLookAt(eye, center, up);
00103 viewer->frame();
00104 }
00105
00106
00107 ins.update();
00108 }
00109 ins.stop();
00110 return(0);
00111 }
00112
00113