Fawkes API
Fawkes Development Version
|
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"
27 #include <aspect/blackboard.h>
28 #include <aspect/configurable.h>
29 #include <core/threading/thread.h>
30 #include <utils/time/time.h>
32 #include <boost/asio.hpp>
33 #include <boost/thread/mutex.hpp>
42 class BatteryInterface;
43 class RobotinoSensorInterface;
67 virtual void get_odometry(
double &x,
double &y,
double &phi);
85 std::string find_device_udev();
86 bool find_controld3();
87 void open_device(
bool wait_replies);
90 void check_deadline();
92 void handle_request_data(
const boost::system::error_code &ec);
93 void handle_nodata(
const boost::system::error_code &ec);
94 void update_nodata_timer();
97 void handle_drive(
const boost::system::error_code &ec);
105 std::string cfg_device_;
106 bool cfg_enable_gyro_;
107 unsigned int cfg_sensor_update_cycle_time_;
108 bool cfg_gripper_enabled_;
110 unsigned int cfg_nodata_timeout_;
111 unsigned int cfg_drive_update_interval_;
112 unsigned int cfg_read_timeout_;
113 bool cfg_log_checksum_errors_;
114 unsigned int cfg_checksum_error_recover_;
115 unsigned int cfg_checksum_error_critical_;
118 unsigned int open_tries_;
120 unsigned int checksum_errors_;
122 uint8_t digital_outputs_;
124 boost::asio::io_service io_service_;
125 boost::asio::serial_port serial_;
126 boost::asio::io_service::work io_service_work_;
127 boost::asio::deadline_timer deadline_;
128 boost::asio::streambuf input_buffer_;
129 boost::mutex io_mutex_;
131 boost::asio::deadline_timer request_timer_;
132 boost::asio::deadline_timer nodata_timer_;
133 boost::asio::deadline_timer drive_timer_;
virtual void get_odometry(double &x, double &y, double &phi)
Get latest odometry value.
std::shared_ptr< DirectRobotinoComMessage > pointer
shared pointer to direct com message
virtual void set_bumper_estop_enabled(bool enabled)
Enable or disable emergency stop on bumper contact.
virtual void once()
Execute an action exactly once.
Robotino communication message.
virtual void set_gripper(bool opened)
Open or close gripper.
virtual void reset_odometry()
Reset odometry to zero.
virtual void loop()
Code to execute in the thread.
virtual void init()
Initialize the thread.
virtual void set_desired_vel(float vx, float vy, float omega)
Set desired velocities.
Fawkes library namespace.
virtual void set_digital_output(unsigned int digital_out, bool enable)
Set digital output state.
DirectRobotinoComThread()
Constructor.
virtual void set_speed_points(float s1, float s2, float s3)
Set speed points for wheels.
Virtual base class for thread that communicates with a Robotino.
virtual void set_motor_accel_limits(float min_accel, float max_accel)
Set acceleration limits of motors.
A class for handling time.
virtual ~DirectRobotinoComThread()
Destructor.
Thread to communicate with Robotino via OpenRobotino API (v1 or v2).
virtual bool is_gripper_open()
Check if gripper is open.
virtual void finalize()
Finalize the thread.
Thread aspect to access configuration data.
virtual void run()
Stub to see name in backtrace for easier debugging.
bool prepare_finalize_user()
Prepare finalization user implementation.
virtual bool is_connected()
Check if we are connected to OpenRobotino.
virtual void get_act_velocity(float &a1, float &a2, float &a3, unsigned int &seq, fawkes::Time &t)
Get actual velocity.