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.
void set_control_loop_callback (std::function< void()> callback)
 Set the control loop callback function.
void execute_control_loop_callback ()
 Execute the control loop callback if it has been set.
bool control_loop_callback_is_set ()
 Check if a control loop callback has been set.

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_
std::function< void()> control_loop_callback_

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: