|
27 | 27 | #include "HEAR_ROS_BRIDGE/ROSUnit_ControlOutputSubscriber.hpp" |
28 | 28 |
|
29 | 29 | #define MRFT_POS_X |
30 | | -#define MRFT_POS_Y |
31 | | -#define MRFT_POS_Z |
32 | | - |
| 30 | +//#define MRFT_POS_Y |
| 31 | +//#define MRFT_POS_Z |
| 32 | +////////////////////////////////////// increase relay amplitude in Y |
33 | 33 | #define MRFT_SLAM |
34 | 34 | //#define KF |
35 | 35 |
|
@@ -244,33 +244,34 @@ int main(int argc, char** argv) { |
244 | 244 |
|
245 | 245 | //*************Setting Flight Elements************* |
246 | 246 |
|
247 | | - ((UpdateController*)update_controller_pid_x)->pid_data.kp = 0.583430204; //0.8786*0.5; //0.51639 * 0.8; |
| 247 | + ((UpdateController*)update_controller_pid_x)->pid_data.kp = 9.28; //0.583430204; //0.8786*0.5; //0.51639 * 0.8; |
248 | 248 | ((UpdateController*)update_controller_pid_x)->pid_data.ki = 0.0; |
249 | | - ((UpdateController*)update_controller_pid_x)->pid_data.kd = 0.211996855; //0.3441*0.5; //0.21192 * 0.8; |
| 249 | + ((UpdateController*)update_controller_pid_x)->pid_data.kd = 3.37; //0.211996855; //0.3441*0.5; //0.21192 * 0.8; |
250 | 250 | ((UpdateController*)update_controller_pid_x)->pid_data.kdd = 0.0; |
251 | 251 | ((UpdateController*)update_controller_pid_x)->pid_data.anti_windup = 0; |
252 | 252 | ((UpdateController*)update_controller_pid_x)->pid_data.en_pv_derivation = 1; |
253 | 253 | ((UpdateController*)update_controller_pid_x)->pid_data.dt = (float)1.0/120.0; |
254 | 254 | ((UpdateController*)update_controller_pid_x)->pid_data.id = block_id::PID_X; |
255 | 255 |
|
256 | | - ((UpdateController*)update_controller_pid_y)->pid_data.kp = 0.592289033;// 0.6673*0.75;// 0.6714;// 0.51639 * 0.8; |
| 256 | + ((UpdateController*)update_controller_pid_y)->pid_data.kp = 9.5; //0.592289033;// 0.6673*0.75;// 0.6714;// 0.51639 * 0.8; |
257 | 257 | ((UpdateController*)update_controller_pid_y)->pid_data.ki = 0.0; |
258 | | - ((UpdateController*)update_controller_pid_y)->pid_data.kd = 0.215215824;// 0.2583*0.75; //-0.2440;// * 0.8; |
| 258 | + ((UpdateController*)update_controller_pid_y)->pid_data.kd = 3.45; //0.215215824;// 0.2583*0.75; //-0.2440;// * 0.8; |
259 | 259 | ((UpdateController*)update_controller_pid_y)->pid_data.kdd = 0.0; |
260 | 260 | ((UpdateController*)update_controller_pid_y)->pid_data.anti_windup = 0; |
261 | 261 | ((UpdateController*)update_controller_pid_y)->pid_data.en_pv_derivation = 1; |
262 | 262 | ((UpdateController*)update_controller_pid_y)->pid_data.dt = (float)1.0/120.0; |
263 | 263 | ((UpdateController*)update_controller_pid_y)->pid_data.id = block_id::PID_Y; |
264 | 264 |
|
265 | | - ((UpdateController*)update_controller_pid_z)->pid_data.kp = 0.613969957; // 1.2414*0.75; |
| 265 | + ((UpdateController*)update_controller_pid_z)->pid_data.kp = 21.5; //0.613969957; // 1.2414*0.75; |
266 | 266 | ((UpdateController*)update_controller_pid_z)->pid_data.ki = 0.0; |
267 | | - ((UpdateController*)update_controller_pid_z)->pid_data.kd = 0.214920534; // 0.3316*0.75; |
| 267 | + ((UpdateController*)update_controller_pid_z)->pid_data.kd = 6.8; //0.214920534; // 0.3316*0.75; |
268 | 268 | ((UpdateController*)update_controller_pid_z)->pid_data.kdd = 0.0; |
269 | 269 | ((UpdateController*)update_controller_pid_z)->pid_data.anti_windup = 0; |
270 | 270 | ((UpdateController*)update_controller_pid_z)->pid_data.en_pv_derivation = 1; |
271 | 271 | ((UpdateController*)update_controller_pid_z)->pid_data.dt = (float)1.0/120.0; |
272 | 272 | ((UpdateController*)update_controller_pid_z)->pid_data.id = block_id::PID_Z; |
273 | 273 |
|
| 274 | + |
274 | 275 | ((UpdateController*)update_controller_pid_roll)->pid_data.kp = 0.4991; //0.225*0.8; //0.172195; //0.3302; //0.286708; //0.225 * 0.8; |
275 | 276 | ((UpdateController*)update_controller_pid_roll)->pid_data.ki = 0.0; |
276 | 277 | ((UpdateController*)update_controller_pid_roll)->pid_data.kd = 0.0750; //0.04*0.8; //0.042464; //0.0931; //0.056559; //0.04 * 0.8; |
@@ -309,52 +310,52 @@ int main(int argc, char** argv) { |
309 | 310 |
|
310 | 311 | #ifdef MRFT_POS_X |
311 | 312 | ((UpdateController*)update_controller_mrft_x)->mrft_data.beta = -0.735; |
312 | | - ((UpdateController*)update_controller_mrft_x)->mrft_data.relay_amp = 0.07; |
| 313 | + ((UpdateController*)update_controller_mrft_x)->mrft_data.relay_amp = 1.5; |
313 | 314 | ((UpdateController*)update_controller_mrft_x)->mrft_data.bias = 0.0; |
314 | | - ((UpdateController*)update_controller_mrft_x)->mrft_data.num_of_peak_conf_samples = 12; |
| 315 | + ((UpdateController*)update_controller_mrft_x)->mrft_data.num_of_peak_conf_samples = 20; |
315 | 316 | ((UpdateController*)update_controller_mrft_x)->mrft_data.no_switch_delay_in_ms = 100; |
316 | 317 | ((UpdateController*)update_controller_mrft_x)->mrft_data.id = block_id::MRFT_X; |
317 | 318 | #endif |
318 | 319 |
|
319 | 320 | #ifdef MRFT_POS_Y |
320 | 321 | ((UpdateController*)update_controller_mrft_y)->mrft_data.beta = -0.735; |
321 | | - ((UpdateController*)update_controller_mrft_y)->mrft_data.relay_amp = 0.07; |
| 322 | + ((UpdateController*)update_controller_mrft_y)->mrft_data.relay_amp = 1.5; |
322 | 323 | ((UpdateController*)update_controller_mrft_y)->mrft_data.bias = 0.0; |
323 | 324 | ((UpdateController*)update_controller_mrft_y)->mrft_data.no_switch_delay_in_ms = 100; |
324 | | - ((UpdateController*)update_controller_mrft_y)->mrft_data.num_of_peak_conf_samples = 12; |
| 325 | + ((UpdateController*)update_controller_mrft_y)->mrft_data.num_of_peak_conf_samples = 20; |
325 | 326 | ((UpdateController*)update_controller_mrft_y)->mrft_data.id = block_id::MRFT_Y; |
326 | 327 | #endif |
327 | 328 |
|
328 | 329 | #ifdef MRFT_POS_Z |
329 | 330 | ((UpdateController*)update_controller_mrft_z)->mrft_data.beta = -0.73; |
330 | | - ((UpdateController*)update_controller_mrft_z)->mrft_data.relay_amp = 0.15; //0.1; |
| 331 | + ((UpdateController*)update_controller_mrft_z)->mrft_data.relay_amp = 2.5; //0.1; |
331 | 332 | ((UpdateController*)update_controller_mrft_z)->mrft_data.bias = 0.0; |
332 | | - ((UpdateController*)update_controller_mrft_z)->mrft_data.num_of_peak_conf_samples = 12; |
| 333 | + ((UpdateController*)update_controller_mrft_z)->mrft_data.num_of_peak_conf_samples = 20; |
333 | 334 | ((UpdateController*)update_controller_mrft_z)->mrft_data.id = block_id::MRFT_Z; |
334 | 335 | #endif |
335 | 336 |
|
336 | 337 | #ifdef MRFT_SLAM |
337 | | - ((UpdateController*)update_controller_pid_slam_x)->pid_data.kp = 0.15; |
| 338 | + ((UpdateController*)update_controller_pid_slam_x)->pid_data.kp = 3.35; |
338 | 339 | ((UpdateController*)update_controller_pid_slam_x)->pid_data.ki = 0.0; |
339 | | - ((UpdateController*)update_controller_pid_slam_x)->pid_data.kd = 0.075; |
| 340 | + ((UpdateController*)update_controller_pid_slam_x)->pid_data.kd = 1.63; |
340 | 341 | ((UpdateController*)update_controller_pid_slam_x)->pid_data.kdd = 0.0; |
341 | 342 | ((UpdateController*)update_controller_pid_slam_x)->pid_data.anti_windup = 0; |
342 | 343 | ((UpdateController*)update_controller_pid_slam_x)->pid_data.en_pv_derivation = 1; |
343 | 344 | ((UpdateController*)update_controller_pid_slam_x)->pid_data.dt = (float)1.0/SLAM_FREQ; |
344 | 345 | ((UpdateController*)update_controller_pid_slam_x)->pid_data.id = block_id::PID_X; |
345 | 346 |
|
346 | | - ((UpdateController*)update_controller_pid_slam_y)->pid_data.kp = 0.15; |
| 347 | + ((UpdateController*)update_controller_pid_slam_y)->pid_data.kp = 4.28; |
347 | 348 | ((UpdateController*)update_controller_pid_slam_y)->pid_data.ki = 0.0; |
348 | | - ((UpdateController*)update_controller_pid_slam_y)->pid_data.kd = 0.075; |
| 349 | + ((UpdateController*)update_controller_pid_slam_y)->pid_data.kd = 2.08; |
349 | 350 | ((UpdateController*)update_controller_pid_slam_y)->pid_data.kdd = 0.0; |
350 | 351 | ((UpdateController*)update_controller_pid_slam_y)->pid_data.anti_windup = 0; |
351 | 352 | ((UpdateController*)update_controller_pid_slam_y)->pid_data.en_pv_derivation = 1; |
352 | 353 | ((UpdateController*)update_controller_pid_slam_y)->pid_data.dt = (float)1.0/SLAM_FREQ; |
353 | 354 | ((UpdateController*)update_controller_pid_slam_y)->pid_data.id = block_id::PID_Y; |
354 | 355 |
|
355 | | - ((UpdateController*)update_controller_pid_slam_z)->pid_data.kp = 0.2; |
| 356 | + ((UpdateController*)update_controller_pid_slam_z)->pid_data.kp = 13.8; |
356 | 357 | ((UpdateController*)update_controller_pid_slam_z)->pid_data.ki = 0.0; |
357 | | - ((UpdateController*)update_controller_pid_slam_z)->pid_data.kd = 0.09; |
| 358 | + ((UpdateController*)update_controller_pid_slam_z)->pid_data.kd = 6.0; |
358 | 359 | ((UpdateController*)update_controller_pid_slam_z)->pid_data.kdd = 0.0; |
359 | 360 | ((UpdateController*)update_controller_pid_slam_z)->pid_data.anti_windup = 0; |
360 | 361 | ((UpdateController*)update_controller_pid_slam_z)->pid_data.en_pv_derivation = 1; |
@@ -441,7 +442,9 @@ int main(int argc, char** argv) { |
441 | 442 | mrft_pipeline.addElement((MissionElement*)update_controller_pid_slam_z); |
442 | 443 | mrft_pipeline.addElement((MissionElement*)slam_switch_on); |
443 | 444 | mrft_pipeline.addElement((MissionElement*)send_curr_slam_ref); |
444 | | - mrft_pipeline.addElement((MissionElement*)&wait_100ms); |
| 445 | + // mrft_pipeline.addElement((MissionElement*)&wait_100ms); |
| 446 | + mrft_pipeline.addElement((MissionElement*)user_command); |
| 447 | + |
445 | 448 | #endif |
446 | 449 |
|
447 | 450 | mrft_pipeline.addElement((MissionElement*)mrft_switch_on_x); |
@@ -476,7 +479,9 @@ int main(int argc, char** argv) { |
476 | 479 | mrft_pipeline.addElement((MissionElement*)update_controller_pid_slam_z); |
477 | 480 | mrft_pipeline.addElement((MissionElement*)slam_switch_on); |
478 | 481 | mrft_pipeline.addElement((MissionElement*)send_curr_slam_ref); |
479 | | - mrft_pipeline.addElement((MissionElement*)&wait_100ms); |
| 482 | + // mrft_pipeline.addElement((MissionElement*)&wait_100ms); |
| 483 | + mrft_pipeline.addElement((MissionElement*)user_command); |
| 484 | + |
480 | 485 | #endif |
481 | 486 |
|
482 | 487 | mrft_pipeline.addElement((MissionElement*)mrft_switch_on_y); |
@@ -509,7 +514,8 @@ int main(int argc, char** argv) { |
509 | 514 | mrft_pipeline.addElement((MissionElement*)update_controller_pid_slam_z); |
510 | 515 | mrft_pipeline.addElement((MissionElement*)slam_switch_on); |
511 | 516 | mrft_pipeline.addElement((MissionElement*)send_curr_slam_ref); |
512 | | - mrft_pipeline.addElement((MissionElement*)&wait_100ms); |
| 517 | + // mrft_pipeline.addElement((MissionElement*)&wait_100ms); |
| 518 | + mrft_pipeline.addElement((MissionElement*)user_command); |
513 | 519 | #endif |
514 | 520 |
|
515 | 521 | mrft_pipeline.addElement((MissionElement*)mrft_switch_on_z); |
|
0 commit comments