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>
34namespace sharedmemory {
35template <
typename SharedType>
42namespace remotestate {
52class AnalogInputArray;
54class DigitalInputArray;
55class DistanceSensorArray;
56class ElectricalGripper;
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_;
Thread to communicate with Robotino via OpenRobotino API (v1 or v2).
virtual void set_digital_output(unsigned int digital_out, bool enable)
Set digital output state.
virtual void set_gripper(bool opened)
Open or close gripper.
virtual bool is_connected()
Check if we are connected to OpenRobotino.
virtual void init()
Initialize the thread.
virtual void once()
Execute an action exactly once.
virtual void loop()
Code to execute in the thread.
OpenRobotinoComThread()
Constructor.
virtual void run()
Stub to see name in backtrace for easier debugging.
virtual void set_bumper_estop_enabled(bool enabled)
Enable or disable emergency stop on bumper contact.
virtual void get_odometry(double &x, double &y, double &phi)
Get current odometry.
virtual void reset_odometry()
Reset odometry to zero.
virtual void set_speed_points(float s1, float s2, float s3)
Set speed points for wheels.
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 bool is_gripper_open()
Check if gripper is open.
virtual ~OpenRobotinoComThread()
Destructor.
virtual void finalize()
Finalize the thread.
Virtual base class for thread that communicates with a Robotino.
Thread aspect to access configuration data.
Mutex mutual exclusion lock.
A class for handling time.
Fawkes library namespace.