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

Public Member Functions

 RobotDriverPy (const std::shared_ptr< ShutdownSignaler > &ss)
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.
VectorXd get_joint_velocities () override
 Get current joint velocities.
void set_target_joint_velocities (const VectorXd &set_target_joint_velocities) override
 Set target joint velocities.
VectorXd get_joint_torques () override
 Get current joint torques.
void set_target_joint_torques (const VectorXd &set_target_joint_torques) override
 Set target joint torques.
void set_joint_limits (const std::tuple< VectorXd, VectorXd > &joint_limits) 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 std::tuple< VectorXd, VectorXd > get_joint_limits ()
 Get joint limits (min, max).
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.

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.
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 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_

Member Function Documentation

◆ connect()

void sas::RobotDriverPy::connect ( )
inlineoverridevirtual

Connect to the underlying robot/hardware.

Implements sas::RobotDriver.

◆ deinitialize()

void sas::RobotDriverPy::deinitialize ( )
inlineoverridevirtual

Deinitialize the driver resources.

Implements sas::RobotDriver.

◆ disconnect()

void sas::RobotDriverPy::disconnect ( )
inlineoverridevirtual

Disconnect from the underlying robot/hardware.

Implements sas::RobotDriver.

◆ get_joint_positions()

VectorXd sas::RobotDriverPy::get_joint_positions ( )
inlineoverridevirtual

Get current joint positions.

Returns
Vector of joint positions (radians)

Implements sas::RobotDriver.

◆ get_joint_torques()

VectorXd sas::RobotDriverPy::get_joint_torques ( )
inlineoverridevirtual

Get current joint torques.

Returns
Vector of joint torques
Exceptions
std::runtime_errorif the default implementation is called (not implemented by derived driver)

Reimplemented from sas::RobotDriver.

◆ get_joint_velocities()

VectorXd sas::RobotDriverPy::get_joint_velocities ( )
inlineoverridevirtual

Get current joint velocities.

Returns
Vector of joint velocities
Exceptions
std::runtime_errorif the default implementation is called (not implemented by derived driver)

Reimplemented from sas::RobotDriver.

◆ initialize()

void sas::RobotDriverPy::initialize ( )
inlineoverridevirtual

Initialize the driver resources.

Implements sas::RobotDriver.

◆ set_joint_limits()

void sas::RobotDriverPy::set_joint_limits ( const std::tuple< VectorXd, VectorXd > & joint_limits)
inlineoverridevirtual

Set joint limits (min, max).

Parameters
joint_limitsTuple of (min_limits, max_limits)

Reimplemented from sas::RobotDriver.

◆ set_target_joint_positions()

void sas::RobotDriverPy::set_target_joint_positions ( const VectorXd & set_target_joint_positions_rad)
inlineoverridevirtual

Set target joint positions.

Parameters
set_target_joint_positions_radTarget joint positions (radians)

Implements sas::RobotDriver.

◆ set_target_joint_torques()

void sas::RobotDriverPy::set_target_joint_torques ( const VectorXd & set_target_joint_torques)
inlineoverridevirtual

Set target joint torques.

Parameters
set_target_joint_torquesTarget joint torques
Exceptions
std::runtime_errorif the default implementation is called (not implemented by derived driver)

Reimplemented from sas::RobotDriver.

◆ set_target_joint_velocities()

void sas::RobotDriverPy::set_target_joint_velocities ( const VectorXd & set_target_joint_velocities)
inlineoverridevirtual

Set target joint velocities.

Parameters
set_target_joint_velocitiesTarget joint velocities
Exceptions
std::runtime_errorif the default implementation is called (not implemented by derived driver)

Reimplemented from sas::RobotDriver.


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