From 1d508a0ec47ac8856c61ff978c2a3712b49d4f44 Mon Sep 17 00:00:00 2001 From: Sergi Hernandez <shernand@iri.upc.edu> Date: Fri, 19 Feb 2021 17:48:45 +0100 Subject: [PATCH] Modified the examples to test concurrent operation of all drivers. --- src/examples/model_car_actuators_test.cpp | 62 ++++++++------ src/examples/model_car_batteries_test.cpp | 56 +++++++----- src/examples/model_car_egomotion_test.cpp | 94 +++++++++++---------- src/examples/model_car_ultrasounds_test.cpp | 49 ++++++----- 4 files changed, 145 insertions(+), 116 deletions(-) diff --git a/src/examples/model_car_actuators_test.cpp b/src/examples/model_car_actuators_test.cpp index 4559072..b9fed4f 100644 --- a/src/examples/model_car_actuators_test.cpp +++ b/src/examples/model_car_actuators_test.cpp @@ -8,30 +8,32 @@ int main(int argc, char *argv[]) CModelCarActuators *act_driver; double vx,steer; - try + while(1) { - act_driver = new CModelCarActuators(name); - act_driver->open(); + try + { + act_driver = new CModelCarActuators(name); + act_driver->open(); - act_driver->disable_ultrasounds(); + act_driver->disable_ultrasounds(); - std::cout << "model_car_actuators_test::main: about to test speed, in 3..." << std::endl; - sleep(1); - std::cout << "model_car_actuators_test::main: about to test speed, 2..." << std::endl; - sleep(1); - std::cout << "model_car_actuators_test::main: about to test speed, 1..." << std::endl; - sleep(1); + std::cout << "model_car_actuators_test::main: about to test speed, in 3..." << std::endl; + sleep(1); + std::cout << "model_car_actuators_test::main: about to test speed, 2..." << std::endl; + sleep(1); + std::cout << "model_car_actuators_test::main: about to test speed, 1..." << std::endl; + sleep(1); - std::cout << "model_car_actuators_test::main: sending speed 10" << std::endl; - for(unsigned int i=0;i<100;i++) - { - usleep(100000); - vx=20.0*sin((2.0*3.14159*i)/100.0); - steer=50.0*sin((2.0*3.14159*i)/100.0); - std::cout << vx << "," << steer << std::endl; - act_driver->send_command(vx,steer); - } - act_driver->send_command(0.0,0.0); + std::cout << "model_car_actuators_test::main: sending speed 10" << std::endl; + for(unsigned int i=0;i<100;i++) + { + usleep(100000); + vx=20.0*sin((2.0*3.14159*i)/100.0); + steer=50.0*sin((2.0*3.14159*i)/100.0); + std::cout << vx << "," << steer << std::endl; + act_driver->send_command(vx,steer); + } + act_driver->send_command(0.0,0.0); /* if(test_watchdog) @@ -54,13 +56,17 @@ int main(int argc, char *argv[]) act_driver->send_disable_uss(); } */ - act_driver->close(); - } - catch (CException &e) - { - std::cout << "model_car_actuators_test: " << e.what() << std::endl; + act_driver->close(); + delete act_driver; + } + catch (CException &e) + { + if(act_driver!=NULL) + { + delete act_driver; + act_driver=NULL; + } + std::cout << "model_car_actuators_test: " << e.what() << std::endl; + } } - - delete act_driver; - } diff --git a/src/examples/model_car_batteries_test.cpp b/src/examples/model_car_batteries_test.cpp index 7f2892b..ee9ac39 100644 --- a/src/examples/model_car_batteries_test.cpp +++ b/src/examples/model_car_batteries_test.cpp @@ -7,33 +7,43 @@ int main(int argc, char *argv[]) std::list<std::string> events; std::string name = "model_car_driver_bat"; CModelCarBatteries *bat_driver; - try + + while(1) { - bat_driver = new CModelCarBatteries(name); - bat_driver->open(); - events.push_back(bat_driver->get_new_data_event_id()); + try + { + bat_driver = new CModelCarBatteries(name); + bat_driver->open(); + events.clear(); + events.push_back(bat_driver->get_new_data_event_id()); - while(true) + for(unsigned int i=0;i<100;i++) + { + event_server->wait_all(events,2000); + std::cout << " motors battery voltage: " << bat_driver->get_motors_battery_voltage() << std::endl; + std::cout << " motors battery cell1 voltage: " << bat_driver->get_motors_cell1_voltage() << std::endl; + std::cout << " motors battery cell2 voltage: " << bat_driver->get_motors_cell2_voltage() << std::endl; + std::cout << " payload battery voltage: " << bat_driver->get_payload_battery_voltage() << std::endl; + std::cout << " payload battery cell1 voltage: " << bat_driver->get_payload_cell1_voltage() << std::endl; + std::cout << " payload battery cell2 voltage: " << bat_driver->get_payload_cell2_voltage() << std::endl; + std::cout << " payload battery cell3 voltage: " << bat_driver->get_payload_cell3_voltage() << std::endl; + std::cout << " payload battery cell4 voltage: " << bat_driver->get_payload_cell4_voltage() << std::endl; + std::cout << " payload battery cell5 voltage: " << bat_driver->get_payload_cell5_voltage() << std::endl; + std::cout << " payload battery cell6 voltage: " << bat_driver->get_payload_cell6_voltage() << std::endl; + std::cout << std::endl; + } + bat_driver->close(); + delete bat_driver; + } + catch (CException &e) { - event_server->wait_all(events,2000); - std::cout << " motors battery voltage: " << bat_driver->get_motors_battery_voltage() << std::endl; - std::cout << " motors battery cell1 voltage: " << bat_driver->get_motors_cell1_voltage() << std::endl; - std::cout << " motors battery cell2 voltage: " << bat_driver->get_motors_cell2_voltage() << std::endl; - std::cout << " payload battery voltage: " << bat_driver->get_payload_battery_voltage() << std::endl; - std::cout << " payload battery cell1 voltage: " << bat_driver->get_payload_cell1_voltage() << std::endl; - std::cout << " payload battery cell2 voltage: " << bat_driver->get_payload_cell2_voltage() << std::endl; - std::cout << " payload battery cell3 voltage: " << bat_driver->get_payload_cell3_voltage() << std::endl; - std::cout << " payload battery cell4 voltage: " << bat_driver->get_payload_cell4_voltage() << std::endl; - std::cout << " payload battery cell5 voltage: " << bat_driver->get_payload_cell5_voltage() << std::endl; - std::cout << " payload battery cell6 voltage: " << bat_driver->get_payload_cell6_voltage() << std::endl; - std::cout << std::endl; + if(bat_driver!=NULL) + { + delete bat_driver; + bat_driver=NULL; + } + std::cout << e.what() << std::endl; } - bat_driver->close(); - } - catch (CException &e) - { - std::cout << e.what() << std::endl; } - delete bat_driver; } diff --git a/src/examples/model_car_egomotion_test.cpp b/src/examples/model_car_egomotion_test.cpp index 0a2ca94..1e7125f 100644 --- a/src/examples/model_car_egomotion_test.cpp +++ b/src/examples/model_car_egomotion_test.cpp @@ -12,57 +12,63 @@ int main(int argc, char *argv[]) int tach; bool dir; - try + while(1) { - egomotion_driver = new CModelCarEgomotion(name); - egomotion_driver->open(); - events.push_back(egomotion_driver->get_new_data_event_id()); - - while(true) + try { - try + egomotion_driver = new CModelCarEgomotion(name); + egomotion_driver->open(); + events.clear(); + events.push_back(egomotion_driver->get_new_data_event_id()); + + for(unsigned int i=0;i<100;i++) { - event_server->wait_all(events,1000); - egomotion_driver->get_left_wheel(tach,dir,timestamp); - std::cout << " Left Wheel: " << std::endl; - std::cout << " tachometer: " << tach << std::endl; - std::cout << " direction: " << dir << std::endl; - std::cout << " timestamp: " << timestamp << std::endl; - egomotion_driver->get_right_wheel(tach,dir,timestamp); - std::cout << " Right Wheel: " << std::endl; - std::cout << " tachometer: " << tach << std::endl; - std::cout << " direction: " << dir << std::endl; - std::cout << " timestamp: " << timestamp << std::endl; - egomotion_driver->get_imu_accelerometer(ax,ay,az,timestamp); - std::cout << " IMU: " << std::endl; - std::cout << " ax: " << ax << std::endl; - std::cout << " ay: " << ay << std::endl; - std::cout << " az: " << az << std::endl; - egomotion_driver->get_imu_gyroscope(gx,gy,gz,timestamp); - std::cout << " gx: " << gx << std::endl; - std::cout << " gy: " << gy << std::endl; - std::cout << " gz: " << gz << std::endl; - egomotion_driver->get_imu_magnetometer(mx,my,mz,timestamp); - std::cout << " mx: " << mx << std::endl; - std::cout << " my: " << my << std::endl; - std::cout << " mz: " << mz << std::endl; - std::cout << " timestamp: " << timestamp << std::endl; - std::cout << std::endl; + try + { + event_server->wait_all(events,1000); + egomotion_driver->get_left_wheel(tach,dir,timestamp); + std::cout << " Left Wheel: " << std::endl; + std::cout << " tachometer: " << tach << std::endl; + std::cout << " direction: " << dir << std::endl; + std::cout << " timestamp: " << timestamp << std::endl; + egomotion_driver->get_right_wheel(tach,dir,timestamp); + std::cout << " Right Wheel: " << std::endl; + std::cout << " tachometer: " << tach << std::endl; + std::cout << " direction: " << dir << std::endl; + std::cout << " timestamp: " << timestamp << std::endl; + egomotion_driver->get_imu_accelerometer(ax,ay,az,timestamp); + std::cout << " IMU: " << std::endl; + std::cout << " ax: " << ax << std::endl; + std::cout << " ay: " << ay << std::endl; + std::cout << " az: " << az << std::endl; + egomotion_driver->get_imu_gyroscope(gx,gy,gz,timestamp); + std::cout << " gx: " << gx << std::endl; + std::cout << " gy: " << gy << std::endl; + std::cout << " gz: " << gz << std::endl; + egomotion_driver->get_imu_magnetometer(mx,my,mz,timestamp); + std::cout << " mx: " << mx << std::endl; + std::cout << " my: " << my << std::endl; + std::cout << " mz: " << mz << std::endl; + std::cout << " timestamp: " << timestamp << std::endl; + std::cout << std::endl; + } + catch(CEventTimeoutException &e){ + std::cout << e.what() << std::endl; + } } - catch(CEventTimeoutException &e) + + egomotion_driver->close(); + delete egomotion_driver; + } + catch (CException &e) + { + if(egomotion_driver!=NULL) { - std::cout << e.what() << std::endl; + delete egomotion_driver; + egomotion_driver=NULL; } + std::cout << e.what() << std::endl; } - - std::cout << "model_car_drivers_test_egomotion::main: stopping egomotion_driver" << std::endl; - egomotion_driver->close(); - std::cout << "model_car_drivers_test_egomotion::main: egomotion_driver stopped" << std::endl; - } - catch (CException &e) - { - std::cout << e.what() << std::endl; } - delete egomotion_driver; } diff --git a/src/examples/model_car_ultrasounds_test.cpp b/src/examples/model_car_ultrasounds_test.cpp index 9816451..fe85be3 100644 --- a/src/examples/model_car_ultrasounds_test.cpp +++ b/src/examples/model_car_ultrasounds_test.cpp @@ -7,30 +7,37 @@ int main(int argc, char *argv[]) std::list<std::string> events; std::string name = "model_car_driver_uss"; CModelCarUltrasounds *uss_driver; - try + while(1) { - uss_driver = new CModelCarUltrasounds(name); - uss_driver->open(); - events.push_back(uss_driver->get_new_data_event_id()); + try + { + uss_driver = new CModelCarUltrasounds(name); + uss_driver->open(); + events.clear(); + events.push_back(uss_driver->get_new_data_event_id()); + + for(unsigned int i=0;i<100;i++) + { + event_server->wait_all(events,1000); + std::cout << " Side right ultrasound distance: " << uss_driver->get_side_right_distance() << std::endl; + std::cout << " Side left ultrasound distance: " << uss_driver->get_side_left_distance() << std::endl; + std::cout << " Rear right ultrasound distance: " << uss_driver->get_rear_right_distance() << std::endl; + std::cout << " Rear center ultrasound distance: " << uss_driver->get_rear_center_distance() << std::endl; + std::cout << " Rear left ultrasound distance: " << uss_driver->get_rear_left_distance() << std::endl; + std::cout << std::endl; + } - while(true) + uss_driver->close(); + delete uss_driver; + } + catch (CException &e) { - event_server->wait_all(events,1000); - std::cout << " Side right ultrasound distance: " << uss_driver->get_side_right_distance() << std::endl; - std::cout << " Side left ultrasound distance: " << uss_driver->get_side_left_distance() << std::endl; - std::cout << " Rear right ultrasound distance: " << uss_driver->get_rear_right_distance() << std::endl; - std::cout << " Rear center ultrasound distance: " << uss_driver->get_rear_center_distance() << std::endl; - std::cout << " Rear left ultrasound distance: " << uss_driver->get_rear_left_distance() << std::endl; - std::cout << std::endl; + if(uss_driver!=NULL) + { + delete uss_driver; + uss_driver=NULL; + } + std::cout << e.what() << std::endl; } - - uss_driver->close(); } - catch (CException &e) - { - std::cout << e.what() << std::endl; - } - - delete uss_driver; - } -- GitLab