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;
68 virtual void get_odometry(
double &x,
double &y,
double &phi);
78 protected:
virtual void run() { Thread::run(); }
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_;
virtual void finalize()
Finalize the thread.
virtual void set_gripper(bool opened)
Open or close gripper.
Fawkes library namespace.
virtual void loop()
Code to execute in the thread.
A class for handling time.
virtual void set_bumper_estop_enabled(bool enabled)
Enable or disable emergency stop on bumper contact.
std::shared_ptr< DirectRobotinoComMessage > pointer
shared pointer to direct com message
Robotino communication message.
virtual void once()
Execute an action exactly once.
virtual bool is_gripper_open()
Check if gripper is open.
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.
virtual void init()
Initialize the thread.
virtual void reset_odometry()
Reset odometry to zero.
virtual void set_digital_output(unsigned int digital_out, bool enable)
Set digital output state.
Thread aspect to access configuration data.
bool prepare_finalize_user()
Prepare finalization user implementation.
virtual void set_desired_vel(float vx, float vy, float omega)
Set desired velocities.
virtual bool is_connected()
Check if we are connected to OpenRobotino.
virtual void set_speed_points(float s1, float s2, float s3)
Set speed points for wheels.
DirectRobotinoComThread()
Constructor.
virtual void get_act_velocity(float &a1, float &a2, float &a3, unsigned int &seq, fawkes::Time &t)
Get actual velocity.
virtual ~DirectRobotinoComThread()
Destructor.
virtual void set_motor_accel_limits(float min_accel, float max_accel)
Set acceleration limits of motors.
virtual void get_odometry(double &x, double &y, double &phi)
Get latest odometry value.