Public Member Functions | Private Member Functions | Private Attributes
kobuki::Kobuki Class Reference

The core kobuki driver class. More...

#include <kobuki.hpp>

List of all members.

Public Member Functions

Battery batteryStatus () const
bool disable ()
bool enable ()
void fixPayload (ecl::PushAndPop< unsigned char > &byteStream)
double getAngularVelocity () const
Cliff::Data getCliffData () const
bool getControllerGain ()
ControllerInfo::Data getControllerInfoData () const
CoreSensors::Data getCoreSensorData () const
Current::Data getCurrentData () const
DockIR::Data getDockIRData () const
GpInput::Data getGpInputData () const
ecl::Angle< double > getHeading () const
Inertia::Data getInertiaData () const
ThreeAxisGyro::Data getRawInertiaData () const
void getWheelJointStates (double &wheel_left_angle, double &wheel_left_angle_rate, double &wheel_right_angle, double &wheel_right_angle_rate)
void init (Parameters &parameters) throw (ecl::StandardException)
bool isAlive () const
bool isEnabled () const
bool isShutdown () const
 Kobuki ()
void lockDataAccess ()
void playSoundSequence (const enum SoundSequences &number)
void printSigSlotConnections () const
 Print a list of all relevant sigslot connections.
void resetOdometry ()
void setBaseControl (const double &linear_velocity, const double &angular_velocity)
bool setControllerGain (const unsigned char &type, const unsigned int &p_gain, const unsigned int &i_gain, const unsigned int &d_gain)
void setDigitalOutput (const DigitalOutput &digital_output)
void setExternalPower (const DigitalOutput &digital_output)
void setLed (const enum LedNumber &number, const enum LedColour &colour)
void shutdown ()
void spin ()
 Performs a scan looking for incoming data packets.
void unlockDataAccess ()
void updateOdometry (ecl::Pose2D< double > &pose_update, ecl::linear_algebra::Vector3d &pose_update_rates)
 Use the current sensor data (encoders and gyro) to calculate an update for the odometry.
VersionInfo versionInfo () const
 ~Kobuki ()

Private Member Functions

std::vector< std::string > log (std::string msg)
std::vector< std::string > log (std::string level, std::string msg)
std::vector< std::string > log (std::string level, std::string name, std::string msg)
void sendBaseControlCommand ()
void sendCommand (Command command)
 Send the prepared command to the serial port.

Private Attributes

AccelerationLimiter acceleration_limiter
Cliff cliff
Command::Buffer command_buffer
ecl::Mutex command_mutex
ControllerInfo controller_info
int controller_info_reminder
CoreSensors core_sensors
Current current
PacketFinder::BufferType data_buffer
ecl::Mutex data_mutex
DiffDrive diff_drive
DockIR dock_ir
EventManager event_manager
Firmware firmware
GpInput gp_input
Hardware hardware
double heading_offset
Inertia inertia
bool is_alive
bool is_connected
bool is_enabled
Command kobuki_command
PacketFinder packet_finder
Parameters parameters
ecl::Serial serial
bool shutdown_requested
ecl::Signal sig_controller_info
ecl::Signal< const std::string & > sig_debug
ecl::Signal< const std::string & > sig_error
ecl::Signal< const std::string & > sig_info
ecl::Signal< const std::vector
< std::string > & > 
sig_named
ecl::Signal< const std::vector
< short > & > 
sig_raw_control_command
ecl::Signal< Command::Buffer & > sig_raw_data_command
ecl::Signal
< PacketFinder::BufferType & > 
sig_raw_data_stream
ecl::Signal sig_stream_data
ecl::Signal< const VersionInfo & > sig_version_info
ecl::Signal< const std::string & > sig_warn
ecl::Thread thread
ThreeAxisGyro three_axis_gyro
UniqueDeviceID unique_device_id
std::vector< short > velocity_commands_debug
int version_info_reminder

Detailed Description

The core kobuki driver class.

This connects to the outside world via sigslots and get accessors.

Definition at line 86 of file kobuki.hpp.


Constructor & Destructor Documentation

Definition at line 50 of file kobuki.cpp.

Shutdown the driver - make sure we wait for the thread to finish.

Definition at line 65 of file kobuki.cpp.


Member Function Documentation

Definition at line 123 of file kobuki.hpp.

Disable power to the motors.

Definition at line 594 of file kobuki.cpp.

Enable power to the motors.

Definition at line 588 of file kobuki.cpp.

void kobuki::Kobuki::fixPayload ( ecl::PushAndPop< unsigned char > &  byteStream)

Definition at line 379 of file kobuki.cpp.

Definition at line 426 of file kobuki.cpp.

Definition at line 132 of file kobuki.hpp.

Definition at line 509 of file kobuki.cpp.

Definition at line 137 of file kobuki.hpp.

Definition at line 130 of file kobuki.hpp.

Definition at line 133 of file kobuki.hpp.

Definition at line 131 of file kobuki.hpp.

Definition at line 135 of file kobuki.hpp.

Definition at line 418 of file kobuki.cpp.

Definition at line 134 of file kobuki.hpp.

Definition at line 136 of file kobuki.hpp.

void kobuki::Kobuki::getWheelJointStates ( double &  wheel_left_angle,
double &  wheel_left_angle_rate,
double &  wheel_right_angle,
double &  wheel_right_angle_rate 
)

Definition at line 444 of file kobuki.cpp.

void kobuki::Kobuki::init ( Parameters parameters) throw (ecl::StandardException)

Definition at line 73 of file kobuki.cpp.

bool kobuki::Kobuki::isAlive ( ) const [inline]

Whether the connection to the robot is alive and currently streaming.

Definition at line 96 of file kobuki.hpp.

bool kobuki::Kobuki::isEnabled ( ) const [inline]

Whether the motor power is enabled or disabled.

Definition at line 98 of file kobuki.hpp.

bool kobuki::Kobuki::isShutdown ( ) const [inline]

Whether the worker thread is alive or not.

Definition at line 97 of file kobuki.hpp.

Usually you should call the getXXX functions from within slot callbacks connected to this driver's signals. This ensures that data is not overwritten inbetween getXXX calls as it all happens in the serial device's reading thread (aye, convoluted - apologies for the multiple robot and multiple developer adhoc hacking over 4-5 years for hasty demos on pre-kobuki robots. This has generated such wonderful spaghetti ;).

If instead you just want to poll kobuki, then you should lock and unlock the data access around any getXXX calls.

Definition at line 155 of file kobuki.cpp.

std::vector<std::string> kobuki::Kobuki::log ( std::string  msg) [inline, private]

Definition at line 243 of file kobuki.hpp.

std::vector<std::string> kobuki::Kobuki::log ( std::string  level,
std::string  msg 
) [inline, private]

Definition at line 244 of file kobuki.hpp.

std::vector<std::string> kobuki::Kobuki::log ( std::string  level,
std::string  name,
std::string  msg 
) [inline, private]

Definition at line 245 of file kobuki.hpp.

void kobuki::Kobuki::playSoundSequence ( const enum SoundSequences &  number)

Definition at line 489 of file kobuki.cpp.

Print a list of all relevant sigslot connections.

This includes both the kobuki driver signals as well as externally connected slots. Useful for when you need to check if any of your connections are dangling (often happens when you typo the name of the sigslots connection).

Definition at line 610 of file kobuki.cpp.

Definition at line 436 of file kobuki.cpp.

Definition at line 528 of file kobuki.cpp.

void kobuki::Kobuki::sendCommand ( Command  command) [private]

Send the prepared command to the serial port.

Need to be a bit careful here, because we have no control over how the user is calling this - they may be calling from different threads (this is so for kobuki_node), so we mutex protect it here rather than relying on the user to do so above.

Parameters:
command: prepared command template (see Command's static member functions).

Definition at line 558 of file kobuki.cpp.

void kobuki::Kobuki::setBaseControl ( const double &  linear_velocity,
const double &  angular_velocity 
)

Definition at line 523 of file kobuki.cpp.

bool kobuki::Kobuki::setControllerGain ( const unsigned char &  type,
const unsigned int &  p_gain,
const unsigned int &  i_gain,
const unsigned int &  d_gain 
)

Definition at line 494 of file kobuki.cpp.

void kobuki::Kobuki::setDigitalOutput ( const DigitalOutput digital_output)

Definition at line 476 of file kobuki.cpp.

void kobuki::Kobuki::setExternalPower ( const DigitalOutput digital_output)

Definition at line 480 of file kobuki.cpp.

void kobuki::Kobuki::setLed ( const enum LedNumber &  number,
const enum LedColour &  colour 
)

Definition at line 471 of file kobuki.cpp.

void kobuki::Kobuki::shutdown ( ) [inline]

Gently terminate the worker thread.

Definition at line 101 of file kobuki.hpp.

Performs a scan looking for incoming data packets.

Sits on the device waiting for incoming and then parses it, and signals that an update has occured.

Or, if in simulation, just loopsback the motor devices.

Definition at line 176 of file kobuki.cpp.

Unlock a previously locked data access privilege.

See also:
lockDataAccess()

Definition at line 163 of file kobuki.cpp.

void kobuki::Kobuki::updateOdometry ( ecl::Pose2D< double > &  pose_update,
ecl::linear_algebra::Vector3d &  pose_update_rates 
)

Use the current sensor data (encoders and gyro) to calculate an update for the odometry.

This fuses current sensor data with the last updated odometry state to produce the new odometry state. This will be usually done in the slot callback to the stream_data signal.

It is important that this is called every time a data packet is received from the robot.

Parameters:
pose_update: return the pose updates in this variable.
pose_update_rates: return the pose update rates in this variable.

Definition at line 461 of file kobuki.cpp.

Definition at line 122 of file kobuki.hpp.


Member Data Documentation

Definition at line 196 of file kobuki.hpp.

Definition at line 204 of file kobuki.hpp.

Definition at line 232 of file kobuki.hpp.

ecl::Mutex kobuki::Kobuki::command_mutex [private]

Definition at line 226 of file kobuki.hpp.

Definition at line 211 of file kobuki.hpp.

Definition at line 219 of file kobuki.hpp.

Definition at line 201 of file kobuki.hpp.

Definition at line 205 of file kobuki.hpp.

Definition at line 215 of file kobuki.hpp.

ecl::Mutex kobuki::Kobuki::data_mutex [private]

Definition at line 230 of file kobuki.hpp.

Definition at line 179 of file kobuki.hpp.

Definition at line 203 of file kobuki.hpp.

Definition at line 238 of file kobuki.hpp.

Definition at line 208 of file kobuki.hpp.

Definition at line 206 of file kobuki.hpp.

Definition at line 207 of file kobuki.hpp.

Definition at line 185 of file kobuki.hpp.

Definition at line 202 of file kobuki.hpp.

bool kobuki::Kobuki::is_alive [private]

Definition at line 216 of file kobuki.hpp.

Definition at line 191 of file kobuki.hpp.

Definition at line 180 of file kobuki.hpp.

Definition at line 231 of file kobuki.hpp.

Definition at line 214 of file kobuki.hpp.

Definition at line 190 of file kobuki.hpp.

ecl::Serial kobuki::Kobuki::serial [private]

Definition at line 213 of file kobuki.hpp.

Definition at line 174 of file kobuki.hpp.

Definition at line 256 of file kobuki.hpp.

ecl::Signal<const std::string&> kobuki::Kobuki::sig_debug [private]

Definition at line 258 of file kobuki.hpp.

ecl::Signal<const std::string&> kobuki::Kobuki::sig_error [private]

Definition at line 258 of file kobuki.hpp.

ecl::Signal<const std::string&> kobuki::Kobuki::sig_info [private]

Definition at line 258 of file kobuki.hpp.

ecl::Signal<const std::vector<std::string>&> kobuki::Kobuki::sig_named [private]

Definition at line 259 of file kobuki.hpp.

ecl::Signal<const std::vector<short>&> kobuki::Kobuki::sig_raw_control_command [private]

Definition at line 262 of file kobuki.hpp.

Definition at line 260 of file kobuki.hpp.

Definition at line 261 of file kobuki.hpp.

Definition at line 256 of file kobuki.hpp.

Definition at line 257 of file kobuki.hpp.

ecl::Signal<const std::string&> kobuki::Kobuki::sig_warn [private]

Definition at line 258 of file kobuki.hpp.

ecl::Thread kobuki::Kobuki::thread [private]

Definition at line 173 of file kobuki.hpp.

Definition at line 210 of file kobuki.hpp.

Definition at line 209 of file kobuki.hpp.

std::vector<short> kobuki::Kobuki::velocity_commands_debug [private]

Definition at line 233 of file kobuki.hpp.

Definition at line 218 of file kobuki.hpp.


The documentation for this class was generated from the following files:


kobuki_driver
Author(s): Daniel Stonier , Younghun Ju , Jorge Santos Simon
autogenerated on Thu Aug 27 2015 13:43:58