Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
driver_svh::SVHFingerManager Class Reference

#include <SVHFingerManager.h>

Public Types

enum  Hints {
  eHT_DEVICE_NOT_FOUND, eHT_CONNECTION_FAILED, eHT_NOT_RESETTED, eHT_NOT_CONNECTED,
  eHT_RESET_FAILED, eHT_CHANNEL_SWITCHED_OF, eHT_DANGEROUS_CURRENTS, eHT_DIMENSION
}
 The Hints enum provides mapping to hints that can be sent to the web-diagnostic interface. More...
 
enum  MovementState {
  eST_DEACTIVATED, eST_RESETTING, eST_RESETTED, eST_ENABLED,
  eST_PARTIALLY_ENABLED, eST_FAULT, eST_DIMENSION
}
 The MovementState enum indicated the overall state of the hand. Currently only used for updating the status websocket. More...
 

Public Member Functions

bool connect (const std::string &dev_name="/dev/ttyUSB0", const unsigned int &_retry_count=3)
 Open connection to SCHUNK five finger hand. Wait until expected return packages are received. More...
 
void disableChannel (const SVHChannel &channel)
 disable controller of channel More...
 
void disconnect ()
 disconnect SCHUNK five finger hand More...
 
bool enableChannel (const SVHChannel &channel)
 enable controller of channel More...
 
bool getCurrent (const SVHChannel &channel, double &current)
 returns current value of channel More...
 
bool getCurrentSettings (const SVHChannel &channel, SVHCurrentSettings &current_settings)
 returns actual current controller settings of channel More...
 
std::vector< SVHCurrentSettingsgetDefaultCurrentSettings ()
 get default current settings. These are either values previously set from calling software or hardcoded defaults More...
 
std::vector< SVHPositionSettingsgetDefaultPositionSettings (const bool &reset=false)
 get default position settings. These are either values previously set from calling software or hardcoded defaults reset true if the Positions settins are to be used during reset (reduced speed) More...
 
SVHFirmwareInfo getFirmwareInfo ()
 getFirmwareInfo Requests the firmware information from the harware, waits a bit and returns the last one read More...
 
bool getPosition (const SVHChannel &channel, double &position)
 returns position value of channel (will not acces hardware but return latest value) More...
 
bool getPositionSettings (const SVHChannel &channel, SVHPositionSettings &position_settings)
 returns actual position controller settings of channel More...
 
bool isConnected ()
 returns connected state of finger manager More...
 
bool isEnabled (const SVHChannel &channel)
 returns true, if current channel has been enabled More...
 
bool isHomed (const SVHChannel &channel)
 returns true, if current channel has been resetted More...
 
bool requestControllerFeedback (const SVHChannel &channel)
 send request controller feedback paket More...
 
bool requestControllerFeedbackAllChannels ()
 sends request controller feedback packet for all channels More...
 
void requestControllerState ()
 
bool resetChannel (const SVHChannel &channel)
 reset function for channel More...
 
bool setAllTargetPositions (const std::vector< double > &positions)
 set all target positions at once More...
 
bool setCurrentSettings (const SVHChannel &channel, const SVHCurrentSettings &current_settings)
 overwrite current parameters More...
 
void setDefaultHomeSettings ()
 initialize the homing settings with hardcoded defaults. These can be overwritten by the setHomeSettings function More...
 
bool setHomeSettings (const SVHChannel &channel, const SVHHomeSettings &home_settings)
 setHomeSettings set the home Settings which are maily used doring reset and provide the soft limit for the fingers More...
 
void setMovementState (const MovementState &state)
 setMovementState Updates the movement state of the overll hand indicating the overall status More...
 
bool setPositionSettings (const SVHChannel &channel, const SVHPositionSettings &position_settings)
 overwrite position parameters More...
 
void setResetSpeed (const float &speed)
 setResetSpeed Set the speed percentage during reset More...
 
void setResetTimeout (const int &resetTimeout)
 setResetTimeout Helper function to set the timout durind rest of fingers More...
 
bool setTargetPosition (const SVHChannel &channel, double position, double current)
 set target position of a channel More...
 
 SVHFingerManager (const std::vector< bool > &disable_mask=std::vector< bool >(9, false), const uint32_t &reset_timeout=5)
 
virtual ~SVHFingerManager ()
 

Private Member Functions

int32_t convertRad2Ticks (const SVHChannel &channel, const double &position)
 Converts joint positions of a specific channel from RAD to ticks factoring in the offset of the channels. More...
 
double convertTicks2Rad (const SVHChannel &channel, const int32_t &ticks)
 Converts joint positions of a specific channel from ticks to RAD factoring in the offset of the channels. More...
 
bool currentSettingsAreSafe (const SVHChannel &channel, const SVHCurrentSettings &current_settings)
 currentSettingsAreSafe helper function to check for the most important values of the current settings More...
 
bool isInsideBounds (const SVHChannel &channel, const int32_t &target_position)
 Check bounds of target positions. More...
 

Private Attributes

SVHControllerFeedback debug_feedback
 
bool m_connected
 holds the connected state More...
 
bool m_connection_feedback_given
 Helper variable to check if feedback was printed (will be replaced by a better solution in the future) More...
 
SVHControllerm_controller
 pointer to svh controller More...
 
std::vector< SVHCurrentSettingsm_current_settings
 Vector of current controller parameters for each finger (as given by external config) More...
 
std::vector< bool > m_current_settings_given
 Information about the validity of externaly given values for the current settings (easier to use this way) More...
 
SVHFeedbackPollingThreadm_feedback_thread
 pointer to svh controller More...
 
std::vector< SVHHomeSettingsm_home_settings
 Vector of home settings for each finger (as given by external config) More...
 
int8_t m_homing_timeout
 vector storing reset flags for each finger More...
 
std::vector< bool > m_is_homed
 vector storing reset flags for each channel More...
 
std::vector< bool > m_is_switched_off
 vector storing information if a finger is enabled. In Case it is all request for it will be granted but not executed on hardware More...
 
MovementState m_movement_state
 Overall movement State to indicate what the hand is doing at the moment. More...
 
std::vector< int32_tm_position_home
 home position after complete reset of each channel More...
 
std::vector< int32_tm_position_max
 max position vector for each channel More...
 
std::vector< int32_tm_position_min
 min position vector for each channel More...
 
std::vector< SVHPositionSettingsm_position_settings
 Vector of position controller parameters for each finger (as given by external config) More...
 
std::vector< bool > m_position_settings_given
 Information about the validity of externaly given values for the position settings (easier to use this way) More...
 
std::vector< double > m_reset_current_factor
 Vector containing factors for the currents at reset. Vector containing factors for the currents at reset. A hard stop is found if the maxCurrent (first 2 CurrentSettingsValues) x the reset factor was reached. 0.75 by default Beware. Setting this value very high might result in damage to the motors during reset. More...
 
std::vector< SVHChannelm_reset_order
 vector storing the reset order of the channels More...
 
float m_reset_speed_factor
 Factor for determining the finger speed during reset. Only 0.0-1.0 is allowed. More...
 
uint32_t m_reset_timeout
 Time in seconds after which the a reset is aborted if no change in current is observable. More...
 
std::string m_serial_device
 m_serial_device Device handle of the device to use, is overwritten if connect is called with an argument More...
 
std::vector< double > m_ticks2rad
 position conversion factor (ticks to RAD) for each channel More...
 
boost::shared_ptr< icl_comm::websocket::WsBroadcaster > m_ws_broadcaster
 Websocket handle for updating diagnostic backend (OPTIONAL) More...
 

Detailed Description

This class manages controller parameters and the finger reset.

Definition at line 63 of file SVHFingerManager.h.

Member Enumeration Documentation

The Hints enum provides mapping to hints that can be sent to the web-diagnostic interface.

Enumerator
eHT_DEVICE_NOT_FOUND 
eHT_CONNECTION_FAILED 
eHT_NOT_RESETTED 
eHT_NOT_CONNECTED 
eHT_RESET_FAILED 
eHT_CHANNEL_SWITCHED_OF 
eHT_DANGEROUS_CURRENTS 
eHT_DIMENSION 

Definition at line 84 of file SVHFingerManager.h.

The MovementState enum indicated the overall state of the hand. Currently only used for updating the status websocket.

Enumerator
eST_DEACTIVATED 
eST_RESETTING 
eST_RESETTED 
eST_ENABLED 
eST_PARTIALLY_ENABLED 
eST_FAULT 
eST_DIMENSION 

Definition at line 70 of file SVHFingerManager.h.

Constructor & Destructor Documentation

driver_svh::SVHFingerManager::SVHFingerManager ( const std::vector< bool > &  disable_mask = std::vector<bool>(9,false),
const uint32_t reset_timeout = 5 
)

Constructs a finger manager for the SCHUNK five finger hand.

Parameters
autostartif set to true, the driver will immediately connect to the hardware and try to reset all fingers
dev_namethe dev to use for autostart. Default is /dev/ttyUSB0

Definition at line 42 of file SVHFingerManager.cpp.

driver_svh::SVHFingerManager::~SVHFingerManager ( )
virtual

Definition at line 113 of file SVHFingerManager.cpp.

Member Function Documentation

bool driver_svh::SVHFingerManager::connect ( const std::string &  dev_name = "/dev/ttyUSB0",
const unsigned int &  _retry_count = 3 
)

Open connection to SCHUNK five finger hand. Wait until expected return packages are received.

Parameters
dev_namefile handle of the serial device e.g. "/dev/ttyUSB0"
_retry_countThe number of times a connection is tried to be established if at least one package was received
Returns
true if connection was succesful

Definition at line 127 of file SVHFingerManager.cpp.

int32_t driver_svh::SVHFingerManager::convertRad2Ticks ( const SVHChannel channel,
const double &  position 
)
private

Converts joint positions of a specific channel from RAD to ticks factoring in the offset of the channels.

Parameters
channelChannel to Convert for (each one has different offset)
positionThe desired position given in RAD
Returns
The tick value corresponing to the RAD input

Definition at line 1320 of file SVHFingerManager.cpp.

double driver_svh::SVHFingerManager::convertTicks2Rad ( const SVHChannel channel,
const int32_t ticks 
)
private

Converts joint positions of a specific channel from ticks to RAD factoring in the offset of the channels.

Parameters
channelChannel to Convert for (each one has different offset)
ticksThe current position in ticks
Returns
the RAD Value corresponding to the tick value of a given channel

Definition at line 1337 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::currentSettingsAreSafe ( const SVHChannel channel,
const SVHCurrentSettings current_settings 
)
private

currentSettingsAreSafe helper function to check for the most important values of the current settings

Parameters
channelthe channel the settings are meant for
current_settingsthe settings to evaluate
Returns
true if they are "reasonable safe". Only the most vile settings will be rejected!

Definition at line 1033 of file SVHFingerManager.cpp.

void driver_svh::SVHFingerManager::disableChannel ( const SVHChannel channel)

disable controller of channel

Parameters
channelchannel to disable

Definition at line 627 of file SVHFingerManager.cpp.

void driver_svh::SVHFingerManager::disconnect ( )

disconnect SCHUNK five finger hand

Definition at line 288 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::enableChannel ( const SVHChannel channel)

enable controller of channel

Parameters
channelchannel to enable
Returns
true if the enabling was successful

Definition at line 580 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::getCurrent ( const SVHChannel channel,
double &  current 
)

returns current value of channel

Parameters
channelchannel to get the current of
currentcurrent of the given channel in [mA]
Returns
bool true if a valid result was requested (i.e. an existing channel)

Definition at line 790 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::getCurrentSettings ( const SVHChannel channel,
SVHCurrentSettings current_settings 
)

returns actual current controller settings of channel

Parameters
channelchannel to get the current controller settings for
current_settingssettings currently active for the current controller
Returns
true if a valid result was requested (i.e. an existing channel)

Definition at line 1007 of file SVHFingerManager.cpp.

std::vector< SVHCurrentSettings > driver_svh::SVHFingerManager::getDefaultCurrentSettings ( )

get default current settings. These are either values previously set from calling software or hardcoded defaults

Definition at line 1195 of file SVHFingerManager.cpp.

std::vector< SVHPositionSettings > driver_svh::SVHFingerManager::getDefaultPositionSettings ( const bool &  reset = false)

get default position settings. These are either values previously set from calling software or hardcoded defaults reset true if the Positions settins are to be used during reset (reduced speed)

returns parameters for position settings either the default ones or parameters that have been set from outside

Definition at line 1240 of file SVHFingerManager.cpp.

SVHFirmwareInfo driver_svh::SVHFingerManager::getFirmwareInfo ( )

getFirmwareInfo Requests the firmware information from the harware, waits a bit and returns the last one read

Returns
the last firmware information read (this may not be the one currently requested)

Definition at line 1379 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::getPosition ( const SVHChannel channel,
double &  position 
)

returns position value of channel (will not acces hardware but return latest value)

Parameters
channelchannel to get the position of
positionposition the given channel ist at
Returns
bool true if a valid result was requested (i.e. an existing channel)

Definition at line 679 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::getPositionSettings ( const SVHChannel channel,
SVHPositionSettings position_settings 
)

returns actual position controller settings of channel

Parameters
channelchannel to get the position settings for
position_settingssettings currently active for the position controller
Returns
true if a valid result was requested (i.e. an existing channel)

Definition at line 1020 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::isConnected ( )
inline

returns connected state of finger manager

Returns
bool true if the finger manager is connected to the hardware

Definition at line 121 of file SVHFingerManager.h.

bool driver_svh::SVHFingerManager::isEnabled ( const SVHChannel channel)

returns true, if current channel has been enabled

Parameters
channelchannel to check if it is enabled
Returns
true if the channel is enabled, false otherwise

Definition at line 931 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::isHomed ( const SVHChannel channel)

returns true, if current channel has been resetted

Parameters
channel
Returns

Definition at line 967 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::isInsideBounds ( const SVHChannel channel,
const int32_t target_position 
)
private

Check bounds of target positions.

Parameters
channel
target_position
Returns

Definition at line 1354 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::requestControllerFeedback ( const SVHChannel channel)

send request controller feedback paket

Parameters
channelchannel to request the feedback for
Returns
true if the request was successfully send to the hardware

Definition at line 666 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::requestControllerFeedbackAllChannels ( )

sends request controller feedback packet for all channels

Returns
true if the request was successfully send to the hardware
void driver_svh::SVHFingerManager::requestControllerState ( )

requests the current controller state to be updated

Note
This is a debuging function. Should not be called by users

Definition at line 1369 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::resetChannel ( const SVHChannel channel)

reset function for channel

reset function for a single finger

Parameters
channelChannel to reset
Returns
true if the reset was successful

Definition at line 325 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::setAllTargetPositions ( const std::vector< double > &  positions)

set all target positions at once

Parameters
positionsVector of positions to set as targets given in [rad]. Only the first eSVH_CHANNEL_DIMENSION (9) values will be considered. If less values are given all others are set to zero
Returns
true if a valid and wellformed Target position for all fingers was given and send to the HW (i.e. inside the bound limits etc.)

Definition at line 806 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::setCurrentSettings ( const SVHChannel channel,
const SVHCurrentSettings current_settings 
)

overwrite current parameters

Parameters
channelchannel to set the current settings for
current_settingssettings of the current controller for a specific channel
Returns
true if a valid channel was selected

Definition at line 1078 of file SVHFingerManager.cpp.

void driver_svh::SVHFingerManager::setDefaultHomeSettings ( )

initialize the homing settings with hardcoded defaults. These can be overwritten by the setHomeSettings function

Definition at line 1165 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::setHomeSettings ( const SVHChannel channel,
const SVHHomeSettings home_settings 
)

setHomeSettings set the home Settings which are maily used doring reset and provide the soft limit for the fingers

Parameters
channelchannel to set the home settings for
home_settingssettings indicating the movement range of a finger, its reset direction and idle position
Returns
true if a valid channel was selected

Definition at line 1140 of file SVHFingerManager.cpp.

void driver_svh::SVHFingerManager::setMovementState ( const MovementState state)

setMovementState Updates the movement state of the overll hand indicating the overall status

Parameters
statecurrent movement state
Note
this is only used for monitoring purposes at the moment, driverwise there is no need to call it but it is used by web frontends

Definition at line 995 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::setPositionSettings ( const SVHChannel channel,
const SVHPositionSettings position_settings 
)

overwrite position parameters

Parameters
channelchannel to set the positoon settings for
position_settingssettings of the position controller to be used
Returns
true if a valid channel was selected

Definition at line 1115 of file SVHFingerManager.cpp.

void driver_svh::SVHFingerManager::setResetSpeed ( const float &  speed)

setResetSpeed Set the speed percentage during reset

Parameters
speedpercent of the normal speed used during reset Allowed values 0.0-1.0

Definition at line 1307 of file SVHFingerManager.cpp.

void driver_svh::SVHFingerManager::setResetTimeout ( const int &  resetTimeout)

setResetTimeout Helper function to set the timout durind rest of fingers

Parameters
resetTimeouttimeout in Seconds. Values smaler than 0 will be interpreted as 0

Definition at line 1374 of file SVHFingerManager.cpp.

bool driver_svh::SVHFingerManager::setTargetPosition ( const SVHChannel channel,
double  position,
double  current 
)

set target position of a channel

Parameters
channelchannel to set the target position for
positiontarget position in [rad]
currentmax current to use for that position
Note
CURRENTLY NOT SUPPORTED!! WILL BE IGNORED
Returns
true if a valid target position was given and it could be sent to the hardware

Definition at line 868 of file SVHFingerManager.cpp.

Member Data Documentation

SVHControllerFeedback driver_svh::SVHFingerManager::debug_feedback
private

Definition at line 419 of file SVHFingerManager.h.

bool driver_svh::SVHFingerManager::m_connected
private

holds the connected state

Definition at line 322 of file SVHFingerManager.h.

bool driver_svh::SVHFingerManager::m_connection_feedback_given
private

Helper variable to check if feedback was printed (will be replaced by a better solution in the future)

Definition at line 325 of file SVHFingerManager.h.

SVHController* driver_svh::SVHFingerManager::m_controller
private

pointer to svh controller

Definition at line 316 of file SVHFingerManager.h.

std::vector<SVHCurrentSettings> driver_svh::SVHFingerManager::m_current_settings
private

Vector of current controller parameters for each finger (as given by external config)

Definition at line 358 of file SVHFingerManager.h.

std::vector<bool> driver_svh::SVHFingerManager::m_current_settings_given
private

Information about the validity of externaly given values for the current settings (easier to use this way)

Definition at line 360 of file SVHFingerManager.h.

SVHFeedbackPollingThread* driver_svh::SVHFingerManager::m_feedback_thread
private

pointer to svh controller

Definition at line 319 of file SVHFingerManager.h.

std::vector<SVHHomeSettings> driver_svh::SVHFingerManager::m_home_settings
private

Vector of home settings for each finger (as given by external config)

Definition at line 368 of file SVHFingerManager.h.

int8_t driver_svh::SVHFingerManager::m_homing_timeout
private

vector storing reset flags for each finger

Definition at line 328 of file SVHFingerManager.h.

std::vector<bool> driver_svh::SVHFingerManager::m_is_homed
private

vector storing reset flags for each channel

Definition at line 343 of file SVHFingerManager.h.

std::vector<bool> driver_svh::SVHFingerManager::m_is_switched_off
private

vector storing information if a finger is enabled. In Case it is all request for it will be granted but not executed on hardware

Definition at line 346 of file SVHFingerManager.h.

MovementState driver_svh::SVHFingerManager::m_movement_state
private

Overall movement State to indicate what the hand is doing at the moment.

Definition at line 349 of file SVHFingerManager.h.

std::vector<int32_t> driver_svh::SVHFingerManager::m_position_home
private

home position after complete reset of each channel

Definition at line 340 of file SVHFingerManager.h.

std::vector<int32_t> driver_svh::SVHFingerManager::m_position_max
private

max position vector for each channel

Definition at line 337 of file SVHFingerManager.h.

std::vector<int32_t> driver_svh::SVHFingerManager::m_position_min
private

min position vector for each channel

Definition at line 334 of file SVHFingerManager.h.

std::vector<SVHPositionSettings> driver_svh::SVHFingerManager::m_position_settings
private

Vector of position controller parameters for each finger (as given by external config)

Definition at line 363 of file SVHFingerManager.h.

std::vector<bool> driver_svh::SVHFingerManager::m_position_settings_given
private

Information about the validity of externaly given values for the position settings (easier to use this way)

Definition at line 365 of file SVHFingerManager.h.

std::vector<double> driver_svh::SVHFingerManager::m_reset_current_factor
private

Vector containing factors for the currents at reset. Vector containing factors for the currents at reset. A hard stop is found if the maxCurrent (first 2 CurrentSettingsValues) x the reset factor was reached. 0.75 by default Beware. Setting this value very high might result in damage to the motors during reset.

Definition at line 384 of file SVHFingerManager.h.

std::vector<SVHChannel> driver_svh::SVHFingerManager::m_reset_order
private

vector storing the reset order of the channels

Definition at line 376 of file SVHFingerManager.h.

float driver_svh::SVHFingerManager::m_reset_speed_factor
private

Factor for determining the finger speed during reset. Only 0.0-1.0 is allowed.

Definition at line 352 of file SVHFingerManager.h.

uint32_t driver_svh::SVHFingerManager::m_reset_timeout
private

Time in seconds after which the a reset is aborted if no change in current is observable.

Definition at line 355 of file SVHFingerManager.h.

std::string driver_svh::SVHFingerManager::m_serial_device
private

m_serial_device Device handle of the device to use, is overwritten if connect is called with an argument

Definition at line 373 of file SVHFingerManager.h.

std::vector<double> driver_svh::SVHFingerManager::m_ticks2rad
private

position conversion factor (ticks to RAD) for each channel

Definition at line 331 of file SVHFingerManager.h.

boost::shared_ptr<icl_comm::websocket::WsBroadcaster> driver_svh::SVHFingerManager::m_ws_broadcaster
private

Websocket handle for updating diagnostic backend (OPTIONAL)

Definition at line 313 of file SVHFingerManager.h.


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


schunk_svh_driver
Author(s): Georg Heppner
autogenerated on Mon Jun 10 2019 15:04:59