Changeset 122 in flair-src for trunk/demos/SimpleFleet/uav/src
- Timestamp:
- Jan 6, 2017, 1:56:26 PM (8 years ago)
- Location:
- trunk/demos/SimpleFleet/uav/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/demos/SimpleFleet/uav/src/SimpleFleet.cpp
r104 r122 50 50 51 51 52 SimpleFleet::SimpleFleet(flair::meta::Uav* uav,string broadcast,TargetController *controller): UavStateMachine(uav,controller), behaviourMode(BehaviourMode_t::Default), vrpnLost(false) { 53 uav->SetupVRPNAutoIP(uav->ObjectName()); 54 55 circle=new TrajectoryGenerator2DCircle(uav->GetVrpnClient()->GetLayout()->NewRow(),"circle"); 56 uav->GetVrpnObject()->xPlot()->AddCurve(circle->Matrix()->Element(0,0),0,0,255); 57 uav->GetVrpnObject()->yPlot()->AddCurve(circle->Matrix()->Element(0,1),0,0,255); 58 uav->GetVrpnObject()->VxPlot()->AddCurve(circle->Matrix()->Element(1,0),0,0,255); 59 uav->GetVrpnObject()->VyPlot()->AddCurve(circle->Matrix()->Element(1,1),0,0,255); 60 61 xCircleCenter=new DoubleSpinBox(uav->GetVrpnClient()->GetLayout()->NewRow(),"x circle center"," m",-5,5,0.1,1,0); 62 yCircleCenter=new DoubleSpinBox(uav->GetVrpnClient()->GetLayout()->NewRow(),"y circle center"," m",-5,5,0.1,1,0); 63 yDisplacement=new DoubleSpinBox(uav->GetVrpnClient()->GetLayout()->NewRow(),"y displacement"," m",0,2,0.1,1,0); 52 SimpleFleet::SimpleFleet(string broadcast,TargetController *controller): UavStateMachine(controller), behaviourMode(BehaviourMode_t::Default), vrpnLost(false) { 53 Uav* uav=GetUav(); 54 55 VrpnClient* vrpnclient=new VrpnClient("vrpn", uav->GetDefaultVrpnAddress(),10000, 80); 56 uavVrpn = new MetaVrpnObject(uav->ObjectName()); 57 getFrameworkManager()->AddDeviceToLog(uavVrpn); 58 uav->GetAhrs()->YawPlot()->AddCurve(uavVrpn->State()->Element(2),DataPlot::Green); 59 60 circle=new TrajectoryGenerator2DCircle(vrpnclient->GetLayout()->NewRow(),"circle"); 61 uavVrpn->xPlot()->AddCurve(circle->Matrix()->Element(0,0),0,0,255); 62 uavVrpn->yPlot()->AddCurve(circle->Matrix()->Element(0,1),0,0,255); 63 uavVrpn->VxPlot()->AddCurve(circle->Matrix()->Element(1,0),0,0,255); 64 uavVrpn->VyPlot()->AddCurve(circle->Matrix()->Element(1,1),0,0,255); 65 66 xCircleCenter=new DoubleSpinBox(vrpnclient->GetLayout()->NewRow(),"x circle center"," m",-5,5,0.1,1,0); 67 yCircleCenter=new DoubleSpinBox(vrpnclient->GetLayout()->NewRow(),"y circle center"," m",-5,5,0.1,1,0); 68 yDisplacement=new DoubleSpinBox(vrpnclient->GetLayout()->NewRow(),"y displacement"," m",0,2,0.1,1,0); 64 69 65 70 //parent->AddDeviceToLog(Uz()); … … 101 106 //get yaw from vrpn 102 107 Euler vrpnEuler; 103 GetUav()->GetVrpnObject()->GetEuler(vrpnEuler);108 uavVrpn->GetEuler(vrpnEuler); 104 109 105 110 //get roll, pitch and w from imu … … 120 125 Vector3D uav_pos,uav_vel; 121 126 122 GetUav()->GetVrpnObject()->GetPosition(uav_pos);123 GetUav()->GetVrpnObject()->GetSpeed(uav_vel);127 uavVrpn->GetPosition(uav_pos); 128 uavVrpn->GetSpeed(uav_vel); 124 129 //z and dz must be in uav's frame 125 130 z=-uav_pos.z; … … 154 159 Euler vrpn_euler; // in VRPN coordinate system 155 160 156 GetUav()->GetVrpnObject()->GetPosition(uav_pos);157 GetUav()->GetVrpnObject()->GetSpeed(uav_vel);158 GetUav()->GetVrpnObject()->GetEuler(vrpn_euler);161 uavVrpn->GetPosition(uav_pos); 162 uavVrpn->GetSpeed(uav_vel); 163 uavVrpn->GetEuler(vrpn_euler); 159 164 160 165 uav_pos.To2Dxy(uav_2Dpos); … … 294 299 void SimpleFleet::ExtraSecurityCheck(void) { 295 300 if (!vrpnLost && behaviourMode!=BehaviourMode_t::Default) { 296 if (! GetUav()->GetVrpnObject()->IsTracked(500)) {301 if (!uavVrpn->IsTracked(500)) { 297 302 Thread::Err("Optitrack, uav lost\n"); 298 303 vrpnLost=true; … … 322 327 circle->SetCenter(target_2Dpos); 323 328 324 GetUav()->GetVrpnObject()->GetPosition(uav_pos);329 uavVrpn->GetPosition(uav_pos); 325 330 uav_pos.To2Dxy(uav_2Dpos); 326 331 circle->StartTraj(uav_2Dpos,1); … … 347 352 } 348 353 349 GetUav()->GetVrpnObject()->GetEuler(vrpn_euler);354 uavVrpn->GetEuler(vrpn_euler); 350 355 yaw_hold=vrpn_euler.yaw; 351 356 352 GetUav()->GetVrpnObject()->GetPosition(vrpn_pos);357 uavVrpn->GetPosition(vrpn_pos); 353 358 vrpn_pos.To2Dxy(pos_hold); 354 359 -
trunk/demos/SimpleFleet/uav/src/SimpleFleet.h
r38 r122 26 26 class TrajectoryGenerator2DCircle; 27 27 } 28 namespace meta { 29 class MetaVrpnObject; 30 } 28 31 namespace gui { 29 32 class DoubleSpinBox; … … 34 37 class SimpleFleet : public flair::meta::UavStateMachine { 35 38 public: 36 SimpleFleet( flair::meta::Uav* uav,std::string broadcast,flair::sensor::TargetController *controller);39 SimpleFleet(std::string broadcast,flair::sensor::TargetController *controller); 37 40 ~SimpleFleet(); 38 41 … … 75 78 flair::gui::DoubleSpinBox *xCircleCenter,*yCircleCenter,*yDisplacement; 76 79 flair::core::AhrsData *customReferenceOrientation,*customOrientation; 80 flair::meta::MetaVrpnObject *uavVrpn; 77 81 }; 78 82 -
trunk/demos/SimpleFleet/uav/src/main.cpp
r38 r122 46 46 manager->SetupUserInterface(xml_file); 47 47 48 Uav* drone=CreateUav( manager,name,uav_type);48 Uav* drone=CreateUav(name,uav_type); 49 49 TargetEthController *controller=new TargetEthController(manager,"Dualshock3",ds3port); 50 SimpleFleet* demo=new SimpleFleet( drone,broadcast,controller);50 SimpleFleet* demo=new SimpleFleet(broadcast,controller); 51 51 52 52 demo->Start();
Note:
See TracChangeset
for help on using the changeset viewer.