|
| | __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) |
|
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.
|
|
| enum class | Functionality {
None =0
, PositionControl
, VelocityControl
, ForceControl
,
Homing
, ClearPositions
, Watchdog
} |
| | Enumeration of optional driver functionalities.
|
|
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 |
|
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_ |
@class ExampleRobotDriver
@brief Example RobotDriver subclass.
Minimal example showing the typical methods required by a RobotDriver
implementation.