21 #ifndef __PLUGINS_ROBOTINO_OPENROBOTINO_COM_THREAD_H_ 22 #define __PLUGINS_ROBOTINO_OPENROBOTINO_COM_THREAD_H_ 24 #include "com_thread.h" 25 #include <core/threading/thread.h> 26 #include <aspect/configurable.h> 27 #include <aspect/blackboard.h> 29 #include <utils/time/time.h> 31 #ifdef HAVE_OPENROBOTINO_API_1 32 # include <rec/robotino/com/Com.h> 34 namespace sharedmemory {
35 template<
typename SharedType>
class SharedMemory;
38 namespace robotstate {
41 namespace remotestate {
51 class AnalogInputArray;
53 class DigitalInputArray;
54 class DistanceSensorArray;
55 class ElectricalGripper;
59 class PowerManagement;
73 #ifdef HAVE_OPENROBOTINO_API_1 74 public rec::robotino::com::Com,
93 virtual void get_odometry(
double &x,
double &y,
double &phi);
101 protected:
virtual void run() { Thread::run(); }
104 #ifdef HAVE_OPENROBOTINO_API_1 105 using rec::robotino::com::Com::sensorState;
106 virtual void updateEvent();
108 void process_api_v1();
109 void process_api_v2();
112 std::string cfg_hostname_;
113 bool cfg_quit_on_disconnect_;
114 unsigned int cfg_sensor_update_cycle_time_;
115 bool cfg_gripper_enabled_;
116 bool cfg_enable_gyro_;
119 unsigned int last_seqnum_;
121 #ifdef HAVE_OPENROBOTINO_API_1 122 rec::robotino::com::Com *com_;
124 unsigned int active_state_;
125 rec::iocontrol::remotestate::SensorState sensor_states_[2];
128 rec::sharedmemory::SharedMemory<rec::iocontrol::robotstate::State> *statemem_;
129 rec::iocontrol::robotstate::State *state_;
131 rec::iocontrol::remotestate::SetState *set_state_;
134 rec::robotino::api2::Com *com_;
135 rec::robotino::api2::AnalogInputArray *analog_inputs_com_;
136 rec::robotino::api2::Bumper *bumper_com_;
137 rec::robotino::api2::DigitalInputArray *digital_inputs_com_;
138 rec::robotino::api2::DistanceSensorArray *distances_com_;
139 rec::robotino::api2::ElectricalGripper *gripper_com_;
140 rec::robotino::api2::Gyroscope *gyroscope_com_;
141 rec::robotino::api2::MotorArray *motors_com_;
142 rec::robotino::api2::Odometry *odom_com_;
143 rec::robotino::api2::PowerManagement *power_com_;
virtual void once()
Execute an action exactly once.
Fawkes library namespace.
virtual void init()
Initialize the thread.
A class for handling time.
virtual void set_gripper(bool opened)
Open or close gripper.
OpenRobotinoComThread()
Constructor.
Thread to communicate with Robotino via OpenRobotino API (v1 or v2).
virtual void get_act_velocity(float &a1, float &a2, float &a3, unsigned int &seq, fawkes::Time &t)
Get actual velocity.
virtual void set_motor_accel_limits(float min_accel, float max_accel)
Set acceleration limits of motors.
virtual void set_bumper_estop_enabled(bool enabled)
Enable or disable emergency stop on bumper contact.
virtual void reset_odometry()
Reset odometry to zero.
virtual bool is_connected()
Check if we are connected to OpenRobotino.
Virtual base class for thread that communicates with a Robotino.
Thread aspect to access configuration data.
virtual void set_speed_points(float s1, float s2, float s3)
Set speed points for wheels.
virtual void run()
Stub to see name in backtrace for easier debugging.
virtual void finalize()
Finalize the thread.
virtual void set_digital_output(unsigned int digital_out, bool enable)
Set digital output state.
virtual bool is_gripper_open()
Check if gripper is open.
Mutex mutual exclusion lock.
virtual void loop()
Code to execute in the thread.
virtual ~OpenRobotinoComThread()
Destructor.
virtual void get_odometry(double &x, double &y, double &phi)
Get current odometry.