sas
Modularised monitoring, logging, and control of robots.
Loading...
Searching...
No Matches
sas::RobotDriverROSComposer Class Reference
Inheritance diagram for sas::RobotDriverROSComposer:
sas::RobotDriver

Public Member Functions

 RobotDriverROSComposer (const RobotDriverROSComposerConfiguration &configuration, std::shared_ptr< Node > &node, std::atomic_bool *break_loops)
 
VectorXd get_joint_positions () override
 Get current joint positions.
 
void set_target_joint_positions (const VectorXd &set_target_joint_positions_rad) override
 Set target joint positions.
 
std::tuple< VectorXd, VectorXd > get_joint_limits () override
 Get joint limits (min, max)
 
void set_joint_limits (const std::tuple< VectorXd, VectorXd > &) override
 Set joint limits (min, max)
 
void connect () override
 Connect to the underlying robot/hardware.
 
void disconnect () override
 Disconnect from the underlying robot/hardware.
 
void initialize () override
 Initialize the driver resources.
 
void deinitialize () override
 Deinitialize the driver resources.
 
- Public Member Functions inherited from sas::RobotDriver
 ~RobotDriver ()
 Virtual destructor for RobotDriver.
 
virtual VectorXd get_joint_velocities ()
 Get current joint velocities.
 
virtual void set_target_joint_velocities (const VectorXd &set_target_joint_velocities)
 Set target joint velocities.
 
virtual VectorXd get_joint_torques ()
 Get current joint torques.
 
virtual void set_target_joint_torques (const VectorXd &set_target_joint_torques)
 Set target joint torques.
 
void watchdog_start (const std::chrono::nanoseconds &period)
 Start the watchdog thread with the given period.
 
void watchdog_trigger (const std::chrono::time_point< std::chrono::system_clock, std::chrono::nanoseconds > &time_point_from_the_client, const std::chrono::time_point< std::chrono::system_clock, std::chrono::nanoseconds > &time_point_from_the_server, const bool &status)
 Trigger the watchdog with timestamps from client/server and the current status.
 
void watchdog_set_maximum_acceptable_delay (const double &max_acceptable_delay)
 Set the maximum acceptable delay for the watchdog (seconds)
 
void check_for_watchdog_exceptions ()
 Check for exceptions thrown by the watchdog thread and rethrow if present.
 

Protected Member Functions

 RobotDriverROSComposer (const RobotDriverROSComposer &)=delete
 
- Protected Member Functions inherited from sas::RobotDriver
void _watchdog_thread_function ()
 RobotDriver::_watchdog_thread_function throws an exception if the elapsed time since the last trigger exceeds the specified period.
 
 RobotDriver (const std::shared_ptr< ShutdownSignaler > &shutdown_signaler_)
 
 RobotDriver (std::atomic_bool *break_loops)
 
 RobotDriver (const RobotDriver &)=delete
 

Protected Attributes

std::shared_ptr< Node > node_
 
RobotDriverROSComposerConfiguration configuration_
 
std::vector< std::unique_ptr< sas::RobotDriverClient > > robot_driver_clients_
 
- Protected Attributes inherited from sas::RobotDriver
std::atomic_bool * break_loops_
 
std::shared_ptr< ShutdownSignalershutdown_signaler_
 
std::tuple< VectorXd, VectorXd > joint_limits_
 
VectorXd joint_velocities_
 
VectorXd joint_torques_
 
std::unique_ptr< sas::Clockclock_
 
std::unique_ptr< std::thread > watchdog_thread_
 
std::chrono::time_point< std::chrono::system_clock, std::chrono::nanoseconds > time_point_from_the_client_
 
std::chrono::time_point< std::chrono::system_clock, std::chrono::nanoseconds > time_point_from_the_server_
 
bool watchdog_status_
 
std::mutex mutex_watchdog_
 
double max_acceptable_delay_ = 0.1
 
double watchdog_period_
 
std::exception_ptr watchdog_exception_ {nullptr}
 
std::mutex watchdog_exception_mutex_
 

Additional Inherited Members

- Public Types inherited from sas::RobotDriver
enum class  Functionality {
  None =0 , PositionControl , VelocityControl , ForceControl ,
  Homing , ClearPositions , Watchdog
}
 Enumeration of optional driver functionalities.
 

Member Function Documentation

◆ connect()

void sas::RobotDriverROSComposer::connect ( )
overridevirtual

Connect to the underlying robot/hardware.

Implements sas::RobotDriver.

◆ deinitialize()

void sas::RobotDriverROSComposer::deinitialize ( )
overridevirtual

Deinitialize the driver resources.

Implements sas::RobotDriver.

◆ disconnect()

void sas::RobotDriverROSComposer::disconnect ( )
overridevirtual

Disconnect from the underlying robot/hardware.

Implements sas::RobotDriver.

◆ get_joint_limits()

std::tuple< VectorXd, VectorXd > sas::RobotDriverROSComposer::get_joint_limits ( )
overridevirtual

Get joint limits (min, max)

Returns
Tuple of (min_limits, max_limits)

Reimplemented from sas::RobotDriver.

◆ get_joint_positions()

VectorXd sas::RobotDriverROSComposer::get_joint_positions ( )
overridevirtual

Get current joint positions.

Returns
Vector of joint positions (radians)

Implements sas::RobotDriver.

◆ initialize()

void sas::RobotDriverROSComposer::initialize ( )
overridevirtual

Initialize the driver resources.

Implements sas::RobotDriver.

◆ set_joint_limits()

void sas::RobotDriverROSComposer::set_joint_limits ( const std::tuple< VectorXd, VectorXd > &  joint_limits)
overridevirtual

Set joint limits (min, max)

Parameters
joint_limitsTuple of (min_limits, max_limits)

Reimplemented from sas::RobotDriver.

◆ set_target_joint_positions()

void sas::RobotDriverROSComposer::set_target_joint_positions ( const VectorXd &  set_target_joint_positions_rad)
overridevirtual

Set target joint positions.

Parameters
set_target_joint_positions_radTarget joint positions (radians)

Implements sas::RobotDriver.


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