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

Public Member Functions

 __init__ (self, ShutdownSignaler ss)
 connect (self)
 disconnect (self)
 initialize (self)
 deinitialize (self)
 get_joint_positions (self)
 set_target_joint_positions (self, target_joint_positions_rad)
Public Member Functions inherited from marinholab::sas::core::RobotDriver
virtual ~RobotDriver ()
 Virtual destructor for RobotDriver.
virtual Eigen::VectorXd get_joint_positions ()=0
 Get current joint positions.
virtual void set_target_joint_positions (const Eigen::VectorXd &set_target_joint_positions_rad)=0
 Set target joint positions.
virtual Eigen::VectorXd get_joint_velocities ()
 Get current joint velocities.
virtual void set_target_joint_velocities (const Eigen::VectorXd &set_target_joint_velocities)
 Set target joint velocities.
virtual Eigen::VectorXd get_joint_torques ()
 Get current joint torques.
virtual void set_target_joint_torques (const Eigen::VectorXd &set_target_joint_torques)
 Set target joint torques.
virtual std::tuple< Eigen::VectorXd, Eigen::VectorXd > get_joint_limits ()
 Get joint limits (min, max).
virtual void set_joint_limits (const std::tuple< Eigen::VectorXd, Eigen::VectorXd > &joint_limits)
 Set 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.
virtual void connect ()=0
 Connect to the underlying robot/hardware.
virtual void disconnect ()=0
 Disconnect from the underlying robot/hardware.
virtual void initialize ()=0
 Initialize the driver resources.
virtual void deinitialize ()=0
 Deinitialize the driver resources.
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.

Public Attributes

 joint_positions = None

Static Public Attributes

bool break_loop = False

Additional Inherited Members

Public Types inherited from marinholab::sas::core::RobotDriver
enum class  Functionality {
  None =0 , PositionControl , VelocityControl , ForceControl ,
  Homing , ClearPositions , Watchdog
}
 Enumeration of optional driver functionalities.
Protected Member Functions inherited from marinholab::sas::core::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 marinholab::sas::core::RobotDriver
std::atomic_bool * break_loops_
std::shared_ptr< ShutdownSignaler > shutdown_signaler_
std::tuple< Eigen::VectorXd, Eigen::VectorXd > joint_limits_
Eigen::VectorXd joint_velocities_
Eigen::VectorXd joint_torques_
std::unique_ptr< marinholab::sas::core::Clock > clock_
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_

Detailed Description

@class ExampleRobotDriver
@brief Example RobotDriver subclass.

Minimal example showing the typical methods required by a RobotDriver
implementation.

Constructor & Destructor Documentation

◆ __init__()

sas_robot_driver_subclass_example_py.ExampleRobotDriver.__init__ ( self,
ShutdownSignaler ss )
@brief Constructor.
@param ss ShutdownSignaler instance used by the base RobotDriver to
          coordinate shutdown requests.

Member Function Documentation

◆ connect()

sas_robot_driver_subclass_example_py.ExampleRobotDriver.connect ( self)
@brief Establish connection to the robot/hardware.
@return None

◆ deinitialize()

sas_robot_driver_subclass_example_py.ExampleRobotDriver.deinitialize ( self)
@brief Deinitialize the robot driver (clean up resources).
@return None

◆ disconnect()

sas_robot_driver_subclass_example_py.ExampleRobotDriver.disconnect ( self)
@brief Terminate connection to the robot/hardware.
@return None

◆ get_joint_positions()

sas_robot_driver_subclass_example_py.ExampleRobotDriver.get_joint_positions ( self)
@brief Get the current joint positions.
@return numpy.ndarray or None Current joint positions in radians, or None if unknown.

◆ initialize()

sas_robot_driver_subclass_example_py.ExampleRobotDriver.initialize ( self)
@brief Initialize the robot driver (bring hardware to an operational state).
@return None

◆ set_target_joint_positions()

sas_robot_driver_subclass_example_py.ExampleRobotDriver.set_target_joint_positions ( self,
target_joint_positions_rad )
@brief Set the desired joint positions (target).
@param target_joint_positions_rad numpy.ndarray Target joint positions in radians.
@return None

The documentation for this class was generated from the following file:
  • src/sas_core/scripts/sas_robot_driver_subclass_example_py.py