21 #ifndef __PLUGINS_ROBOTINO_DIRECT_COM_THREAD_H_ 22 #define __PLUGINS_ROBOTINO_DIRECT_COM_THREAD_H_ 24 #include "com_thread.h" 25 #include "direct_com_message.h" 26 #include <core/threading/thread.h> 27 #include <aspect/configurable.h> 28 #include <aspect/blackboard.h> 30 #include <utils/time/time.h> 33 #include <boost/asio.hpp> 34 #include <boost/thread/mutex.hpp> 42 class BatteryInterface;
43 class RobotinoSensorInterface;
58 bool prepare_finalize_user();
60 virtual void finalize();
62 virtual bool is_connected();
64 virtual void set_gripper(
bool opened);
65 virtual bool is_gripper_open();
66 virtual void set_speed_points(
float s1,
float s2,
float s3);
67 virtual void get_act_velocity(
float &a1,
float &a2,
float &a3,
unsigned int &seq,
fawkes::Time &t);
68 virtual void get_odometry(
double &x,
double &y,
double &phi);
70 virtual void reset_odometry();
71 virtual void set_bumper_estop_enabled(
bool enabled);
72 virtual void set_motor_accel_limits(
float min_accel,
float max_accel);
73 virtual void set_digital_output(
unsigned int digital_out,
bool enable);
75 virtual void set_desired_vel(
float vx,
float vy,
float omega);
81 std::string find_device_udev();
82 bool find_controld3();
83 void open_device(
bool wait_replies);
86 void check_deadline();
88 void handle_request_data(
const boost::system::error_code &ec);
89 void handle_nodata(
const boost::system::error_code &ec);
90 void update_nodata_timer();
93 void handle_drive(
const boost::system::error_code &ec);
102 std::string cfg_device_;
103 bool cfg_enable_gyro_;
104 unsigned int cfg_sensor_update_cycle_time_;
105 bool cfg_gripper_enabled_;
107 unsigned int cfg_nodata_timeout_;
108 unsigned int cfg_drive_update_interval_;
109 unsigned int cfg_read_timeout_;
110 bool cfg_log_checksum_errors_;
111 unsigned int cfg_checksum_error_recover_;
112 unsigned int cfg_checksum_error_critical_;
115 unsigned int open_tries_;
117 unsigned int checksum_errors_;
119 uint8_t digital_outputs_;
121 boost::asio::io_service io_service_;
122 boost::asio::serial_port serial_;
123 boost::asio::io_service::work io_service_work_;
124 boost::asio::deadline_timer deadline_;
125 boost::asio::streambuf input_buffer_;
126 boost::mutex io_mutex_;
128 boost::asio::deadline_timer request_timer_;
129 boost::asio::deadline_timer nodata_timer_;
130 boost::asio::deadline_timer drive_timer_;
Fawkes library namespace.
virtual void run()
Code to execute in the thread.
A class for handling time.
std::shared_ptr< DirectRobotinoComMessage > pointer
shared pointer to direct com message
Robotino communication message.
Virtual base class for thread that communicates with a Robotino.
Thread to communicate with Robotino via OpenRobotino API (v1 or v2).
virtual void run()
Stub to see name in backtrace for easier debugging.
Thread aspect to access configuration data.