2727#include " HEAR_ROS_BRIDGE/ROSUnit_ControlOutputSubscriber.hpp"
2828
2929// #define MRFT_POS_X
30- #define MRFT_POS_Y
30+ // #define MRFT_POS_Y
3131// #define MRFT_POS_Z
32- // //////////////////////////////////// increase relay amplitude in Y
32+
33+ #define MRFT_ATT_ROLL
34+ #define MRFT_ATT_PITCH
35+
3336#define MRFT_SLAM
3437// #define KF
3538
@@ -93,6 +96,18 @@ int main(int argc, char** argv) {
9396 " mrft_switch_z" );
9497#endif
9598
99+ #ifdef MRFT_ATT_ROLL
100+ ROSUnit* ros_mrft_trigger_roll = ROSUnit_Factory_main.CreateROSUnit (ROSUnit_tx_rx_type::Client,
101+ ROSUnit_msg_type::ROSUnit_Float,
102+ " mrft_switch_roll" );
103+ #endif
104+
105+ #ifdef MRFT_ATT_PITCH
106+ ROSUnit* ros_mrft_trigger_pitch = ROSUnit_Factory_main.CreateROSUnit (ROSUnit_tx_rx_type::Client,
107+ ROSUnit_msg_type::ROSUnit_Float,
108+ " mrft_switch_pitch" );
109+ #endif
110+
96111#ifdef MRFT_SLAM
97112 ROSUnit* ros_slam_sw_trig = ROSUnit_Factory_main.CreateROSUnit (ROSUnit_tx_rx_type::Client,
98113 ROSUnit_msg_type::ROSUnit_Bool,
@@ -155,6 +170,18 @@ int main(int argc, char** argv) {
155170 MissionElement* mrft_switch_off_z=new SwitchTrigger (0 );
156171 #endif
157172
173+ #ifdef MRFT_ATT_ROLL
174+ MissionElement* update_controller_mrft_roll = new UpdateController ();
175+ MissionElement* mrft_switch_on_roll = new SwitchTrigger (1 );
176+ MissionElement* mrft_switch_off_roll = new SwitchTrigger (0 );
177+ #endif
178+
179+ #ifdef MRFT_ATT_PITCH
180+ MissionElement* update_controller_mrft_pitch = new UpdateController ();
181+ MissionElement* mrft_switch_on_pitch = new SwitchTrigger (1 );
182+ MissionElement* mrft_switch_off_pitch = new SwitchTrigger (0 );
183+ #endif
184+
158185 #ifdef MRFT_SLAM
159186 MissionElement* update_controller_pid_slam_x = new UpdateController ();
160187 MissionElement* update_controller_pid_slam_y = new UpdateController ();
@@ -221,6 +248,18 @@ int main(int argc, char** argv) {
221248 mrft_switch_off_z->getPorts ()[(int )SwitchTrigger::ports_id::OP_0]->connect (ros_mrft_trigger_z->getPorts ()[(int )ROSUnit_SetFloatClnt::ports_id::IP_0]);
222249 #endif
223250
251+ #ifdef MRFT_ATT_ROLL
252+ update_controller_mrft_roll->getPorts ()[(int )UpdateController::ports_id::OP_0]->connect (ros_updt_ctr->getPorts ()[(int )ROSUnit_UpdateControllerClnt::ports_id::IP_1_MRFT]);
253+ mrft_switch_on_roll->getPorts ()[(int )SwitchTrigger::ports_id::OP_0]->connect (ros_mrft_trigger_roll->getPorts ()[(int )ROSUnit_SetFloatClnt::ports_id::IP_0]);
254+ mrft_switch_off_roll->getPorts ()[(int )SwitchTrigger::ports_id::OP_0]->connect (ros_mrft_trigger_roll->getPorts ()[(int )ROSUnit_SetFloatClnt::ports_id::IP_0]);
255+ #endif
256+
257+ #ifdef MRFT_ATT_PITCH
258+ update_controller_mrft_pitch->getPorts ()[(int )UpdateController::ports_id::OP_0]->connect (ros_updt_ctr->getPorts ()[(int )ROSUnit_UpdateControllerClnt::ports_id::IP_1_MRFT]);
259+ mrft_switch_on_pitch->getPorts ()[(int )SwitchTrigger::ports_id::OP_0]->connect (ros_mrft_trigger_pitch->getPorts ()[(int )ROSUnit_SetFloatClnt::ports_id::IP_0]);
260+ mrft_switch_off_pitch->getPorts ()[(int )SwitchTrigger::ports_id::OP_0]->connect (ros_mrft_trigger_pitch->getPorts ()[(int )ROSUnit_SetFloatClnt::ports_id::IP_0]);
261+ #endif
262+
224263 #ifdef MRFT_SLAM
225264 update_controller_pid_slam_x->getPorts ()[(int )UpdateController::ports_id::OP_0]->connect (ros_updt_ctr->getPorts ()[(int )ROSUnit_UpdateControllerClnt::ports_id::IP_0_PID]);
226265 update_controller_pid_slam_y->getPorts ()[(int )UpdateController::ports_id::OP_0]->connect (ros_updt_ctr->getPorts ()[(int )ROSUnit_UpdateControllerClnt::ports_id::IP_0_PID]);
@@ -351,6 +390,20 @@ int main(int argc, char** argv) {
351390 ((UpdateController*)update_controller_mrft_z)->mrft_data .id = block_id::MRFT_Z;
352391#endif
353392
393+ #ifdef MRFT_ATT_ROLL
394+ ((UpdateController*)update_controller_mrft_roll)->mrft_data .beta = -0.73 ;
395+ ((UpdateController*)update_controller_mrft_roll)->mrft_data .relay_amp = 0.04 ;
396+ ((UpdateController*)update_controller_mrft_roll)->mrft_data .bias = 0.0 ;
397+ ((UpdateController*)update_controller_mrft_roll)->mrft_data .id = block_id::MRFT_ROLL;
398+ #endif
399+
400+ #ifdef MRFT_ATT_PITCH
401+ ((UpdateController*)update_controller_mrft_pitch)->mrft_data .beta = -0.73 ;
402+ ((UpdateController*)update_controller_mrft_pitch)->mrft_data .relay_amp = 0.04 ;
403+ ((UpdateController*)update_controller_mrft_pitch)->mrft_data .bias = 0.0 ;
404+ ((UpdateController*)update_controller_mrft_pitch)->mrft_data .id = block_id::MRFT_PITCH;
405+ #endif
406+
354407#ifdef MRFT_SLAM
355408 ((UpdateController*)update_controller_pid_slam_x)->pid_data .kp = 3.35 ;
356409 ((UpdateController*)update_controller_pid_slam_x)->pid_data .ki = 0.0 ;
@@ -400,11 +453,8 @@ int main(int argc, char** argv) {
400453 mrft_pipeline.addElement ((MissionElement*)update_controller_pid_y);
401454 mrft_pipeline.addElement ((MissionElement*)update_controller_pid_z);
402455 mrft_pipeline.addElement ((MissionElement*)update_controller_pid_roll);
403- mrft_pipeline.addElement ((MissionElement*)&wait_100ms);
404456 mrft_pipeline.addElement ((MissionElement*)update_controller_pid_pitch);
405- mrft_pipeline.addElement ((MissionElement*)&wait_100ms);
406457 mrft_pipeline.addElement ((MissionElement*)update_controller_pid_yaw);
407- mrft_pipeline.addElement ((MissionElement*)&wait_100ms);
408458 mrft_pipeline.addElement ((MissionElement*)update_controller_pid_yaw_rate);
409459 mrft_pipeline.addElement ((MissionElement*)&wait_100ms);
410460
@@ -420,16 +470,12 @@ int main(int argc, char** argv) {
420470 mrft_pipeline.addElement ((MissionElement*)update_controller_mrft_z);
421471 #endif
422472
423- #ifdef PID_X_SLAM
424- mrft_pipeline.addElement ((MissionElement*)update_controller_pid_slam_x );
473+ #ifdef MRFT_ATT_ROLL
474+ mrft_pipeline.addElement ((MissionElement*)update_controller_mrft_roll );
425475 #endif
426476
427- #ifdef PID_Y_SLAM
428- mrft_pipeline.addElement ((MissionElement*)update_controller_pid_slam_y);
429- #endif
430-
431- #ifdef PID_Z_SLAM
432- mrft_pipeline.addElement ((MissionElement*)update_controller_pid_slam_z);
477+ #ifdef MRFT_ATT_PITCH
478+ mrft_pipeline.addElement ((MissionElement*)update_controller_mrft_pitch);
433479 #endif
434480
435481 mrft_pipeline.addElement ((MissionElement*)set_height_offset); // TODO: (CHECK Desc) Set a constant height command/reference based on the current pos
@@ -560,6 +606,24 @@ int main(int argc, char** argv) {
560606 #endif
561607 #endif
562608
609+ #ifdef MRFT_ATT_ROLL
610+ mrft_pipeline.addElement ((MissionElement*)user_command);
611+ mrft_pipeline.addElement ((MissionElement*)mrft_switch_on_roll);
612+
613+ mrft_pipeline.addElement ((MissionElement*)user_command);
614+ mrft_pipeline.addElement ((MissionElement*)send_curr_opti_ref);
615+ mrft_pipeline.addElement ((MissionElement*)mrft_switch_off_roll);
616+ #endif
617+
618+ #ifdef MRFT_ATT_PITCH
619+ mrft_pipeline.addElement ((MissionElement*)user_command);
620+ mrft_pipeline.addElement ((MissionElement*)mrft_switch_on_pitch);
621+
622+ mrft_pipeline.addElement ((MissionElement*)user_command);
623+ mrft_pipeline.addElement ((MissionElement*)send_curr_opti_ref);
624+ mrft_pipeline.addElement ((MissionElement*)mrft_switch_off_pitch);
625+ #endif
626+
563627 mrft_pipeline.addElement ((MissionElement*)user_command);
564628// mrft_pipeline.addElement((MissionElement*)&wait_1s);
565629
0 commit comments