- Timestamp:
- Jul 5, 2016, 8:50:58 AM (8 years ago)
- Location:
- trunk/lib
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/FlairMeta/src/UavStateMachine.cpp
r38 r42 42 42 #include <stdio.h> 43 43 #include <TrajectoryGenerator1D.h> 44 #include <math.h> 44 45 45 46 using namespace std; … … 180 181 ComputeThrust(); // logs are added to uz, so it must be updated at last 181 182 183 //check nan problems 184 if(CheckIsNan(currentTorques.roll,"roll torque") 185 || CheckIsNan(currentTorques.pitch,"pitch torque") 186 || CheckIsNan(currentTorques.yaw,"yaw torque") 187 || CheckIsNan(currentThrust,"thrust")) { 188 189 if(failSafeMode) { 190 Warn("We are already in safe mode, the uav is going to crash!\n"); 191 } else { 192 Thread::Warn("switching back to safe mode\n"); 193 EnterFailSafeMode(); 194 needToComputeDefaultTorques = true;//should not be necessary, but put it to be sure to compute default thrust/torques 195 needToComputeDefaultThrust = true; 196 197 ComputeTorques(); 198 ComputeThrust(); 199 } 200 } 201 182 202 // Set torques for roll, pitch and yaw angles (value between -1 and 1). Set 183 203 // thrust (value between 0 and 1) … … 198 218 } 199 219 220 bool UavStateMachine::CheckIsNan(float value,std::string desc) { 221 if(isnan(value)) { 222 Warn("%s is not an number\n",desc.c_str()); 223 return true; 224 } else { 225 return false; 226 } 227 } 228 229 200 230 void UavStateMachine::ComputeOrientation(void) { 201 231 if (failSafeMode) { … … 254 284 // The Uav target altitude has reached its landing value (typically 0) 255 285 // but the real Uav altitude may not have reach this value yet because of 256 // command delay. Moreover, it may never exactly reach this value if the 286 // command delay. Moreover, it may never exactly reach this value if the 257 287 // ground is not perfectly leveled (critical case: there's a 258 288 // deep and narrow hole right in the sensor line of sight). That's why we … … 547 577 EnterFailSafeMode(); 548 578 Land(); 549 } 579 }/* 550 580 Time now=GetTime(); 551 581 if ((altitudeState==AltitudeState_t::Stopped) && (now-uav->GetAhrs()->lastUpdate>(Time)100*1000*1000)) { //100ms … … 553 583 Thread::Err("Critical sensor lost\n"); 554 584 EnterFailSafeMode(); 555 EmergencyLand(); 556 } 585 EmergencyLand(); 586 }*/ 557 587 } 558 588 -
trunk/lib/FlairMeta/src/UavStateMachine.h
r38 r42 261 261 void Run(void); 262 262 void StopMotors(void); 263 bool CheckIsNan(float value,std::string desc); 263 264 264 265 meta::Uav *uav; -
trunk/lib/FlairSensorActuator/src/Gps.cpp
r15 r42 216 216 result = nmea_parse(&parser, frame, frame_size, &info); 217 217 if (result != 1) { 218 Warn("unrecognized nmea sentence\n"); 219 Warn("%s\n", frame); 218 Warn("unrecognized nmea sentence: %s\n",frame); 220 219 } 221 220 -
trunk/lib/FlairSensorActuator/src/Mb800.cpp
r41 r42 53 53 Thread::Err("erreur Write (%s)\n", strerror(-written)); 54 54 } 55 /* 55 56 56 { 57 57 char to_send[] = "$PASHS,CPD,AFP,95.0\r\n"; … … 68 68 } 69 69 } 70 */ 70 71 71 if ((NMEAFlags & GGA) != 0) { 72 72 char to_send[] = "$PASHS,NME,GGA,A,ON,0.05\r\n"; … … 99 99 100 100 while (!ToBeStopped()) { 101 //Printf("loop\n");102 101 SleepMS(10); 103 size = 0; /*102 size = 0; 104 103 while (!ToBeStopped()) { 105 104 ssize_t read = serialport->Read(&response[size], 1); … … 111 110 break; 112 111 size++; 113 } */112 } 114 113 size++; 115 //parseFrame(response, size);114 parseFrame(response, size); 116 115 } 117 116 /** fin running loop **/ … … 122 121 char data = 0; 123 122 ssize_t read = 0; 124 Printf("sync\n"); 123 125 124 // attente fin trame 126 125 while (data != 0x0a && !ToBeStopped()) { 127 126 read = serialport->Read(&data, 1); 128 127 SleepMS(10); 129 Printf("%i %x\n",read,data); 128 130 129 if (read < 0) { 131 130 Thread::Err("erreur Read (%s)\n", strerror(-read)); -
trunk/lib/FlairSensorActuator/src/TargetController.cpp
r38 r42 39 39 TabWidget* tab=new TabWidget(main_tab->NewRow(),name); 40 40 setup_tab=new Tab(tab,"Reglages"); 41 SetPeriodMS(20);; //50Hz42 41 } 43 42 … … 115 114 116 115 void TargetController::Run() { 116 SetPeriodMS(20);; //50Hz 117 117 118 Message *message; 118 119
Note:
See TracChangeset
for help on using the changeset viewer.