21 #ifndef _PLUGINS_ROBOTINO_OPENROBOTINO_COM_THREAD_H_ 22 #define _PLUGINS_ROBOTINO_OPENROBOTINO_COM_THREAD_H_ 24 #include "com_thread.h" 26 #include <aspect/blackboard.h> 27 #include <aspect/configurable.h> 28 #include <core/threading/thread.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>
39 namespace robotstate {
42 namespace remotestate {
52 class AnalogInputArray;
54 class DigitalInputArray;
55 class DistanceSensorArray;
56 class ElectricalGripper;
60 class PowerManagement;
73 #ifdef HAVE_OPENROBOTINO_API_1 74 public rec::robotino::com::Com,
94 virtual void get_odometry(
double &x,
double &y,
double &phi);
110 #ifdef HAVE_OPENROBOTINO_API_1 111 using rec::robotino::com::Com::sensorState;
112 virtual void updateEvent();
114 void process_api_v1();
115 void process_api_v2();
118 std::string cfg_hostname_;
119 bool cfg_quit_on_disconnect_;
120 unsigned int cfg_sensor_update_cycle_time_;
121 bool cfg_gripper_enabled_;
122 bool cfg_enable_gyro_;
125 unsigned int last_seqnum_;
127 #ifdef HAVE_OPENROBOTINO_API_1 128 rec::robotino::com::Com * com_;
130 unsigned int active_state_;
131 rec::iocontrol::remotestate::SensorState sensor_states_[2];
134 rec::sharedmemory::SharedMemory<rec::iocontrol::robotstate::State> *statemem_;
135 rec::iocontrol::robotstate::State * state_;
137 rec::iocontrol::remotestate::SetState *set_state_;
140 rec::robotino::api2::Com * com_;
141 rec::robotino::api2::AnalogInputArray * analog_inputs_com_;
142 rec::robotino::api2::Bumper * bumper_com_;
143 rec::robotino::api2::DigitalInputArray * digital_inputs_com_;
144 rec::robotino::api2::DistanceSensorArray *distances_com_;
145 rec::robotino::api2::ElectricalGripper * gripper_com_;
146 rec::robotino::api2::Gyroscope * gyroscope_com_;
147 rec::robotino::api2::MotorArray * motors_com_;
148 rec::robotino::api2::Odometry * odom_com_;
149 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.