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,
85 virtual void finalize();
87 virtual bool is_connected();
89 virtual void set_gripper(
bool opened);
90 virtual bool is_gripper_open();
91 virtual void set_speed_points(
float s1,
float s2,
float s3);
92 virtual void get_act_velocity(
float &a1,
float &a2,
float &a3,
unsigned int &seq,
fawkes::Time &t);
93 virtual void get_odometry(
double &x,
double &y,
double &phi);
95 virtual void reset_odometry();
96 virtual void set_bumper_estop_enabled(
bool enabled);
97 virtual void set_motor_accel_limits(
float min_accel,
float max_accel);
98 virtual void set_digital_output(
unsigned int digital_out,
bool enable);
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_;
Fawkes library namespace.
A class for handling time.
Thread to communicate with Robotino via OpenRobotino API (v1 or v2).
Virtual base class for thread that communicates with a Robotino.
Thread aspect to access configuration data.
virtual void run()
Stub to see name in backtrace for easier debugging.
Mutex mutual exclusion lock.