Skip to content
Snippets Groups Projects
Commit ec39ce24 authored by Sergi Hernandez's avatar Sergi Hernandez
Browse files

Testing updates

parent 567f45c0
No related branches found
No related tags found
1 merge request!1Sergi
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "commexceptions.h" #include "commexceptions.h"
#include "threadserver.h" #include "threadserver.h"
// #include "eventserver.h" // #include "eventserver.h"
#include "eventexceptions.h"
#include "model_car_exceptions.h" #include "model_car_exceptions.h"
#include "model_car_protocol.h" #include "model_car_protocol.h"
#include <iostream> #include <iostream>
......
...@@ -4,98 +4,143 @@ ...@@ -4,98 +4,143 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
std::string name = "model_car_driver_act"; std::string name = "model_car_driver_actuators";
CModelCarActuators *act_driver; CModelCarActuators *act_driver;
try try
{ {
std::cout << "model_car_drivers_test_act::main: Creating object..." << std::endl; std::cout << "model_car_actuators_test::main: Creating object..." << std::endl;
act_driver = new CModelCarActuators(name); act_driver = new CModelCarActuators(name);
std::cout << "model_car_drivers_test_act::main: Object created" << std::endl; std::cout << "model_car_actuators_test::main: Object created" << std::endl;
act_driver->open(); act_driver->open();
bool test_steering = true; bool test_steering = true;
bool test_speed = false; bool test_speed = true;
bool test_watchdog = true; bool test_watchdog = false;
bool test_emergency_stop = true; bool test_emergency_stop = false;
bool test_enable_disable_uss = true; bool test_enable_disable_uss = false;
float t=500e3;
if(test_steering) if(test_steering)
{ {
std::cout << "model_car_drivers_test_act::main: about to test steering, in 3..." << std::endl; std::cout << "model_car_actuators_test::main: about to test steering, in 3..." << std::endl;
sleep(1); sleep(1);
std::cout << "model_car_drivers_test_act::main: about to test steering, 2..." << std::endl; std::cout << "model_car_actuators_test::main: about to test steering, 2..." << std::endl;
sleep(1); sleep(1);
std::cout << "model_car_drivers_test_act::main: about to test steering, 1..." << std::endl; std::cout << "model_car_actuators_test::main: about to test steering, 1..." << std::endl;
sleep(1); sleep(1);
std::cout << "model_car_drivers_test_act::main: sending steering 0" << std::endl; std::cout << "model_car_actuators_test::main: sending steering 0" << std::endl;
act_driver->send_steering(0.0); //center
usleep(500e3); act_driver->send_watchdog();
std::cout << "model_car_drivers_test_act::main: sending steering max left" << std::endl; act_driver->send_speed(0.0); //stop
act_driver->send_steering(100.0); //max left (30º) act_driver->send_steering(0.0);
usleep(500e3);
std::cout << "model_car_drivers_test_act::main: sending steering 0" << std::endl; for(int i=0; i<100; i+=10)
act_driver->send_steering(0.0); //center {
usleep(500e3); act_driver->send_watchdog();
std::cout << "model_car_drivers_test_act::main: sending steering max right" << std::endl; act_driver->send_steering(i);
act_driver->send_steering(-100.0); //max right (30º) std::cout << "model_car_actuators_test::main: sending steering "<< i << std::endl;
usleep(500e3); usleep(t);
std::cout << "model_car_drivers_test_act::main: sending steering 0" << std::endl; }
act_driver->send_steering(0.0); //center for(int i=100; i>=-100; i-=10)
{
act_driver->send_watchdog();
act_driver->send_steering(i);
std::cout << "model_car_actuators_test::main: sending steering "<< i << std::endl;
usleep(t);
}
for(int i=-100; i<=0; i+=10)
{
act_driver->send_watchdog();
act_driver->send_steering(i);
std::cout << "model_car_actuators_test::main: sending steering "<< i << std::endl;
usleep(t);
}
act_driver->send_watchdog();
std::cout << "model_car_actuators_test::main: sending steering 0"<< std::endl;
act_driver->send_steering(0.0);
} }
if(test_speed) if(test_speed)
{ {
std::cout << "model_car_drivers_test_act::main: about to test speed, in 3..." << std::endl; float v=10;
std::cout << "model_car_actuators_test::main: about to test speed, in 3..." << std::endl;
sleep(1); sleep(1);
std::cout << "model_car_drivers_test_act::main: about to test speed, 2..." << std::endl; std::cout << "model_car_actuators_test::main: about to test speed, 2..." << std::endl;
sleep(1); sleep(1);
std::cout << "model_car_drivers_test_act::main: about to test speed, 1..." << std::endl; std::cout << "model_car_actuators_test::main: about to test speed, 1..." << std::endl;
sleep(1); sleep(1);
std::cout << "model_car_drivers_test_act::main: sending speed 0" << std::endl;
act_driver->send_speed(0.0); //stop v=0;
usleep(500e3); std::cout << "model_car_actuators_test::main: sending speed "<< v << std::endl;
std::cout << "model_car_drivers_test_act::main: sending speed 10%" << std::endl; act_driver->send_watchdog();
act_driver->send_speed(10.0); //10% of full gas act_driver->send_speed(v);
usleep(500e3); act_driver->send_steering(0.0); //center
std::cout << "model_car_drivers_test_act::main: sending speed 0" << std::endl; usleep(t);
act_driver->send_speed(0.0); //stop v=10;
usleep(500e3); std::cout << "model_car_actuators_test::main: sending speed " << v << std::endl;
std::cout << "model_car_drivers_test_act::main: sending speed -10%" << std::endl; act_driver->send_speed(v);
act_driver->send_speed(-10.0); //10% of reverse act_driver->send_watchdog();
usleep(500e3); usleep(t);
std::cout << "model_car_drivers_test_act::main: sending speed 0" << std::endl; act_driver->send_watchdog();
act_driver->send_speed(0.0); //stop usleep(t);
act_driver->send_watchdog();
usleep(t);
act_driver->send_watchdog();
usleep(t);
act_driver->send_watchdog();
usleep(t);
act_driver->send_watchdog();
v=0;
std::cout << "model_car_actuators_test::main: sending speed " << v << std::endl;
act_driver->send_watchdog();
act_driver->send_speed(v);
usleep(t);
v=-10;
std::cout << "model_car_actuators_test::main: sending speed " << v << std::endl;
act_driver->send_watchdog();
act_driver->send_speed(v);
usleep(t);
act_driver->send_watchdog();
usleep(t);
act_driver->send_watchdog();
usleep(t);
v=0;
std::cout << "model_car_actuators_test::main: sending speed "<< v << std::endl;
act_driver->send_watchdog();
act_driver->send_speed(v);
} }
if(test_watchdog) if(test_watchdog)
{ {
std::cout << "model_car_drivers_test_act::main: sending watchdog" << std::endl; std::cout << "model_car_actuators_test::main: sending watchdog" << std::endl;
act_driver->send_watchdog(); act_driver->send_watchdog();
} }
if(test_emergency_stop) if(test_emergency_stop)
{ {
std::cout << "model_car_drivers_test_act::main: sending emergency stop" << std::endl; std::cout << "model_car_actuators_test::main: sending emergency stop" << std::endl;
act_driver->send_emergency_stop(); act_driver->send_emergency_stop();
} }
if(test_enable_disable_uss) if(test_enable_disable_uss)
{ {
std::cout << "model_car_drivers_test_act::main: sending enable uss" << std::endl; std::cout << "model_car_actuators_test::main: sending enable uss" << std::endl;
act_driver->send_enable_uss(); act_driver->send_enable_uss();
std::cout << "model_car_drivers_test_act::main: sending disable uss" << std::endl; std::cout << "model_car_actuators_test::main: sending disable uss" << std::endl;
act_driver->send_disable_uss(); act_driver->send_disable_uss();
} }
std::cout << "model_car_drivers_test_act::main: END OF TESTING" << std::endl; std::cout << "model_car_actuators_test::main: END OF TESTING" << std::endl;
std::cout << "model_car_drivers_test_act::main: stopping act_driver" << std::endl; std::cout << "model_car_actuators_test::main: stopping act_driver" << std::endl;
act_driver->close(); act_driver->close();
std::cout << "model_car_drivers_test_act::main: act_driver stopped" << std::endl; std::cout << "model_car_actuators_test::main: act_driver stopped" << std::endl;
} }
catch (CException &e) catch (CException &e)
{ {
std::cout << e.what() << std::endl; std::cout << "model_car_actuators_test: " << e.what() << std::endl;
} }
delete act_driver; delete act_driver;
......
...@@ -15,32 +15,31 @@ int main(int argc, char *argv[]) ...@@ -15,32 +15,31 @@ int main(int argc, char *argv[])
events.push_back(bat_driver->get_new_data_event_id()); events.push_back(bat_driver->get_new_data_event_id());
std::cout << "model_car_drivers_test_bat::main: reading BAT values" << std::endl; std::cout << "model_car_drivers_test_bat::main: reading BAT values" << std::endl;
for(unsigned int i=0; i<10; i++) //for(unsigned int i=0; i<10; i++)
while(true)
{ {
event_server->wait_all(events,1000); event_server->wait_all(events,1000);
float value; float value;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR, value)) if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR, value))
std::cout << " ID_ARD_SENS_VOLT_ACTUATOR value: " << value << std::endl; std::cout << " ID_ARD_SENS_VOLT_ACTUATOR: " << value << std::endl;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR_CELL1, value)) if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR_CELL1, value))
std::cout << " ID_ARD_SENS_VOLT_ACTUATOR_CELL1 value: " << value << std::endl; std::cout << " ID_ARD_SENS_VOLT_ACTUATOR_CELL1: " << value << std::endl;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR_CELL2, value)) if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR_CELL2, value))
std::cout << " ID_ARD_SENS_VOLT_ACTUATOR_CELL2 value: " << value << std::endl; std::cout << " ID_ARD_SENS_VOLT_ACTUATOR_CELL2: " << value << std::endl;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_ACTUATOR_CELL2, value))
std::cout << " ID_ARD_SENS_VOLT_ACTUATOR_CELL2 value: " << value << std::endl;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS, value)) if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS, value))
std::cout << " ID_ARD_SENS_VOLT_SENSORS value: " << value << std::endl; std::cout << " ID_ARD_SENS_VOLT_SENSORS: " << value << std::endl;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL1, value)) if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL1, value))
std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL1 value: " << value << std::endl; std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL1: " << value << std::endl;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL2, value)) if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL2, value))
std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL2 value: " << value << std::endl; std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL2: " << value << std::endl;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL3, value)) if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL3, value))
std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL3 value: " << value << std::endl; std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL3: " << value << std::endl;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL4, value)) if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL4, value))
std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL4 value: " << value << std::endl; std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL4: " << value << std::endl;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL5, value)) if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL5, value))
std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL5 value: " << value << std::endl; std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL5: " << value << std::endl;
if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL6, value)) if(bat_driver->get_bat(ID_ARD_SENS_VOLT_SENSORS_CELL6, value))
std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL6 value: " << value << std::endl; std::cout << " ID_ARD_SENS_VOLT_SENSORS_CELL6: " << value << std::endl;
std::cout <<" ---" <<std::endl; std::cout <<" ---" <<std::endl;
} }
std::cout << "model_car_drivers_test_bat::main: stopping bat_driver" << std::endl; std::cout << "model_car_drivers_test_bat::main: stopping bat_driver" << std::endl;
......
...@@ -17,49 +17,57 @@ int main(int argc, char *argv[]) ...@@ -17,49 +17,57 @@ int main(int argc, char *argv[])
events.push_back(egomotion_driver->get_new_data_event_id()); events.push_back(egomotion_driver->get_new_data_event_id());
std::cout << "model_car_drivers_test_egomotion::main: reading EGOMOTION values" << std::endl; std::cout << "model_car_drivers_test_egomotion::main: reading EGOMOTION values" << std::endl;
for(unsigned int i=0; i<10; i++) //for(unsigned int i=0; i<1000; i++)
while(true)
{ {
event_server->wait_all(events,1000); try
int lwheel_tach=0;
bool lwheel_dir=false;
if(egomotion_driver->get_left_wheel(lwheel_tach, lwheel_dir))
{ {
std::cout << " Left wheel tachometer: " << lwheel_tach << std::endl; event_server->wait_all(events,1000);
std::cout << " Left wheel direction: " << lwheel_dir << std::endl; int lwheel_tach=0;
} bool lwheel_dir=false;
if(egomotion_driver->get_left_wheel(lwheel_tach, lwheel_dir))
{
std::cout << " Left wheel tachometer: " << lwheel_tach << std::endl;
std::cout << " Left wheel direction: " << lwheel_dir << std::endl;
}
int rwheel_tach=0; int rwheel_tach=0;
bool rwheel_dir=false; bool rwheel_dir=false;
if(egomotion_driver->get_right_wheel(rwheel_tach,rwheel_dir)) if(egomotion_driver->get_right_wheel(rwheel_tach,rwheel_dir))
{ {
std::cout << " Right wheel tachometer: " << rwheel_tach << std::endl; std::cout << " Right wheel tachometer: " << rwheel_tach << std::endl;
std::cout << " Right wheel direction: " << rwheel_dir << std::endl; std::cout << " Right wheel direction: " << rwheel_dir << std::endl;
} }
float ax=0.0 ,ay=.0 ,az=0.0 ,gx=0.0 ,gy=0.0 ,gz=0.0 ,mx=0.0 ,my=0.0 ,mz=0.0; float ax=0.0 ,ay=.0 ,az=0.0 ,gx=0.0 ,gy=0.0 ,gz=0.0 ,mx=0.0 ,my=0.0 ,mz=0.0;
if(egomotion_driver->get_imu_accel(ax,ay,az)) if(egomotion_driver->get_imu_accel(ax,ay,az))
{ {
std::cout << " Imu ax: " << ax << std::endl; std::cout << " Imu ax: " << ax << std::endl;
std::cout << " Imu ay: " << ay << std::endl; std::cout << " Imu ay: " << ay << std::endl;
std::cout << " Imu az: " << az << std::endl; std::cout << " Imu az: " << az << std::endl;
} }
if(egomotion_driver->get_imu_gyro(gx,gy,gz)) if(egomotion_driver->get_imu_gyro(gx,gy,gz))
{ {
std::cout << " Imu gx: " << gx << std::endl; std::cout << " Imu gx: " << gx << std::endl;
std::cout << " Imu gy: " << gy << std::endl; std::cout << " Imu gy: " << gy << std::endl;
std::cout << " Imu gz: " << gz << std::endl; std::cout << " Imu gz: " << gz << std::endl;
} }
if(egomotion_driver->get_imu_magn(mx,my,mz))
{
std::cout << " Imu mx: " << mx << std::endl;
std::cout << " Imu my: " << my << std::endl;
std::cout << " Imu mz: " << mz << std::endl;
}
if(egomotion_driver->get_imu_magn(mx,my,mz)) std::cout <<" ---" <<std::endl;
usleep(1e4);
}
catch(CEventTimeoutException &e)
{ {
std::cout << " Imu mx: " << mx << std::endl; std::cout << e.what() << std::endl;
std::cout << " Imu my: " << my << std::endl;
std::cout << " Imu mz: " << mz << std::endl;
} }
std::cout <<" ---" <<std::endl;
usleep(1e4);
} }
std::cout << "model_car_drivers_test_egomotion::main: stopping egomotion_driver" << std::endl; std::cout << "model_car_drivers_test_egomotion::main: stopping egomotion_driver" << std::endl;
......
...@@ -17,7 +17,8 @@ int main(int argc, char *argv[]) ...@@ -17,7 +17,8 @@ int main(int argc, char *argv[])
events.push_back(uss_driver->get_new_data_event_id()); events.push_back(uss_driver->get_new_data_event_id());
std::cout << "model_car_drivers_test_uss::main: reading USS values" << std::endl; std::cout << "model_car_drivers_test_uss::main: reading USS values" << std::endl;
for(unsigned int i=0; i<10; i++) //for(unsigned int i=0; i<1000; i++)
while(true)
{ {
event_server->wait_all(events,1000); event_server->wait_all(events,1000);
float us_value; float us_value;
......
...@@ -19,9 +19,12 @@ CModelCarBatteries::CModelCarBatteries(std::string name) : CModelCarDriverBase(n ...@@ -19,9 +19,12 @@ CModelCarBatteries::CModelCarBatteries(std::string name) : CModelCarDriverBase(n
void CModelCarBatteries::process_data_frame(uint8_t id,uint32_t timestamp, TDataUnion data_union) void CModelCarBatteries::process_data_frame(uint8_t id,uint32_t timestamp, TDataUnion data_union)
{ {
//std::cout << "CModelCarBatteries::process_data_frame: id=" << unsigned(id) << std::endl; //std::cout << "CModelCarBatteries::process_data_frame: id=" << unsigned(id) << std::endl;
const SENSOR_ID currentSensor = static_cast<SENSOR_ID>(id);
const SENSOR_ID currentSensor = static_cast<SENSOR_ID>(id);
//m_bat_values[currentSensor]=data_union.voltage;
auto it = m_bat_values.find(currentSensor); auto it = m_bat_values.find(currentSensor);
if(it==m_bat_values.end()) if(it==m_bat_values.end())
{ {
...@@ -32,7 +35,7 @@ void CModelCarBatteries::process_data_frame(uint8_t id,uint32_t timestamp, TData ...@@ -32,7 +35,7 @@ void CModelCarBatteries::process_data_frame(uint8_t id,uint32_t timestamp, TData
it->second = data_union.voltage; it->second = data_union.voltage;
//m_bat_values[currentSensor] = data_union.us; //m_bat_values[currentSensor] = data_union.us;
} }
} }
bool CModelCarBatteries::get_bat(SENSOR_ID id, float & value) bool CModelCarBatteries::get_bat(SENSOR_ID id, float & value)
......
#include "model_car_driver_base.h" #include "model_car_driver_base.h"
#include "eventexceptions.h" //#include "eventexceptions.h"
struct HexCharStruct struct HexCharStruct
{ {
...@@ -181,7 +181,8 @@ void *CModelCarDriverBase::data_thread(void *param) ...@@ -181,7 +181,8 @@ void *CModelCarDriverBase::data_thread(void *param)
try try
{ {
driver->port_mutex.enter(); driver->port_mutex.enter();
if(driver->serial_port->get_num_data()==0) num=driver->serial_port->get_num_data();
if(num==0)
{ {
driver->port_mutex.exit(); driver->port_mutex.exit();
driver->event_server->wait_all(events,1000); driver->event_server->wait_all(events,1000);
...@@ -212,10 +213,11 @@ void *CModelCarDriverBase::data_thread(void *param) ...@@ -212,10 +213,11 @@ void *CModelCarDriverBase::data_thread(void *param)
catch(CEventTimeoutException &e) catch(CEventTimeoutException &e)
{ {
//do nothing; //do nothing;
//std::cout << "CModelCarDriverBase::data_thread: " << e.what() << std::endl;
} }
catch(CException &e) catch(CException &e)
{ {
std::cout << e.what() << std::endl; std::cout << "CModelCarDriverBase::data_thread: " << e.what() << std::endl;
} }
if(driver->event_server->event_is_set(driver->finish_thread_event_id)) if(driver->event_server->event_is_set(driver->finish_thread_event_id))
...@@ -494,6 +496,7 @@ void CModelCarDriverBase::send_request(uint8_t id, uint8_t data_length, uint8_t ...@@ -494,6 +496,7 @@ void CModelCarDriverBase::send_request(uint8_t id, uint8_t data_length, uint8_t
this->port_mutex.enter(); this->port_mutex.enter();
this->serial_port->write(stuffed_frame,stuffed_frame_size); this->serial_port->write(stuffed_frame,stuffed_frame_size);
//cout_data(stuffed_frame,stuffed_frame_size,"stuffed_frame");
this->port_mutex.exit(); this->port_mutex.exit();
delete []stuffed_frame; delete []stuffed_frame;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment