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

Public Member Functions

 RobotDriverCoppeliaSim (const RobotDriverCoppeliaSim &)=delete
 
 RobotDriverCoppeliaSim (const RobotDriverCoppeliaSimConfiguration &configuration, std::atomic_bool *break_loops)
 
VectorXd get_joint_positions () override
 RobotDriverMyrobot::get_joint_positions This method should always throw an exception if the user tries to obtain the joint positions in an invalid state.
 
void set_target_joint_positions (const VectorXd &desired_joint_positions_rad) override
 RobotDriverCoppeliaSim::set_target_joint_positions Sets the joint positions and the target joint positions of the joints given in the configuration file.
 
std::tuple< VectorXd, VectorXd > get_joint_limits () override
 Get joint limits (min, max)
 
void connect () override
 RobotDriverCoppeliaSim::connect.
 
void disconnect () override
 RobotDriverCoppeliaSim::disconnect Disconnects from CoppeliaSim.
 
void initialize () override
 RobotDriverCoppeliaSim::initialize.
 
void deinitialize () override
 RobotDriverCoppeliaSim::deinitialize. Nothing to do.
 
- 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 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.
 

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_
 

Member Function Documentation

◆ connect()

void sas::RobotDriverCoppeliaSim::connect ( )
overridevirtual

RobotDriverCoppeliaSim::connect.

Connect to CoppeliaSim with the necessary information given in the configuration file.

Implements sas::RobotDriver.

◆ deinitialize()

void sas::RobotDriverCoppeliaSim::deinitialize ( )
overridevirtual

◆ disconnect()

void sas::RobotDriverCoppeliaSim::disconnect ( )
overridevirtual

RobotDriverCoppeliaSim::disconnect Disconnects from CoppeliaSim.

Implements sas::RobotDriver.

◆ get_joint_limits()

std::tuple< VectorXd, VectorXd > sas::RobotDriverCoppeliaSim::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::RobotDriverCoppeliaSim::get_joint_positions ( )
overridevirtual

RobotDriverMyrobot::get_joint_positions This method should always throw an exception if the user tries to obtain the joint positions in an invalid state.

Everything below this line is an override the concrete implementations are needed

One useful way of defining that is with a VectorXd(), which has by default size zero until it is initialized.

Returns
a VectorXd representing the configuration space in radians.

Implements sas::RobotDriver.

◆ initialize()

void sas::RobotDriverCoppeliaSim::initialize ( )
overridevirtual

RobotDriverCoppeliaSim::initialize.

Gets the initial joint positions state. This will guarantee that future requests make sense as long as connection is still alive.

Implements sas::RobotDriver.

◆ set_target_joint_positions()

void sas::RobotDriverCoppeliaSim::set_target_joint_positions ( const VectorXd &  desired_joint_positions_rad)
overridevirtual

RobotDriverCoppeliaSim::set_target_joint_positions Sets the joint positions and the target joint positions of the joints given in the configuration file.

Parameters
desired_joint_positions_rad

Implements sas::RobotDriver.


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