|
sas
Modularised monitoring, logging, and control of robots.
|
Simple in-memory RobotDriver implementation for testing. More...
#include <sas_robot_driver_example.hpp>
Public Member Functions | |
| RobotDriverExample (RobotDriverExample &)=delete | |
| RobotDriverExample (const RobotDriverExampleConfiguration &configuration, const std::shared_ptr< ShutdownSignaler > &shutdown_signaler_) | |
| Construct a RobotDriverExample with configuration. | |
| RobotDriverExample (const RobotDriverExampleConfiguration &configuration, std::atomic_bool *break_loops) | |
| virtual VectorXd | get_joint_positions () override |
| Get the current joint positions. | |
| virtual void | set_target_joint_positions (const VectorXd &set_target_joint_positions_rad) override |
| Set target joint positions. | |
| virtual void | connect () override |
| Connect the example driver (establish resources). | |
| virtual void | disconnect () override |
| Disconnect the example driver (release resources). | |
| virtual void | initialize () override |
| Initialize the example driver. | |
| virtual void | deinitialize () override |
| Deinitialize the example driver. | |
| 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. | |
| virtual std::tuple< VectorXd, VectorXd > | get_joint_limits () |
| Get joint limits (min, max). | |
| virtual void | set_joint_limits (const std::tuple< VectorXd, 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. | |
| 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 Attributes | |
| const RobotDriverExampleConfiguration | configuration_ |
| VectorXd | joint_positions_ |
| Protected Attributes inherited from sas::RobotDriver | |
| std::atomic_bool * | break_loops_ |
| std::shared_ptr< ShutdownSignaler > | shutdown_signaler_ |
| std::tuple< VectorXd, VectorXd > | joint_limits_ |
| VectorXd | joint_velocities_ |
| VectorXd | joint_torques_ |
| std::unique_ptr< sas::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_ |
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 | |
Simple in-memory RobotDriver implementation for testing.
RobotDriverExample is a lightweight, non-hardware driver that implements the RobotDriver interface. It is intended for unit tests and examples and simulates joint state updates using the provided configuration.
| sas::RobotDriverExample::RobotDriverExample | ( | const RobotDriverExampleConfiguration & | configuration, |
| const std::shared_ptr< ShutdownSignaler > & | shutdown_signaler_ ) |
Construct a RobotDriverExample with configuration.
| configuration | Example configuration (name, initial positions, joint limits) |
| break_loops | Optional pointer to an atomic_bool used to break loops |
|
overridevirtual |
Connect the example driver (establish resources).
Implements sas::RobotDriver.
|
overridevirtual |
Deinitialize the example driver.
Implements sas::RobotDriver.
|
overridevirtual |
Disconnect the example driver (release resources).
Implements sas::RobotDriver.
|
overridevirtual |
Get the current joint positions.
Implements sas::RobotDriver.
|
overridevirtual |
Initialize the example driver.
Implements sas::RobotDriver.
|
overridevirtual |
Set target joint positions.
| set_target_joint_positions_rad | Target joint positions in radians |
| std::runtime_error | if the input vector has incorrect size |
Implements sas::RobotDriver.