C++ΒΆ

class Result : public utils::ReturnCodeΒΆ
class Result : public utils::ReturnCode
class DriverΒΆ

Subclassed by jacobi::drivers::ABBDriver, jacobi::drivers::DoosanDriver, jacobi::drivers::FanucDriver, jacobi::drivers::SimulatedDriver, jacobi::drivers::UniversalDriver, jacobi::drivers::YaskawaDriver

Public Functions

virtual bool reconnect()ΒΆ

Connect to the robot, in particular after an external disconnection. Returns reconnection success.

virtual bool disconnect()ΒΆ

Disconnect from the robot. Returns disconnection success.

virtual bool is_connected() constΒΆ

Is the robot currently connected?

virtual ControllerStatus get_controller_status()ΒΆ

Get current robot controller status (e.g. Ready/Idle, Alarm, Error, E-Stop etc.)

virtual Result enable()ΒΆ

Enable robot’s servos (if available).

virtual Result disable()ΒΆ

Disable robot’s servos (if available).

virtual Config get_current_joint_position()ΒΆ

Get and read current joint position.

virtual RobotState get_current_state() = 0ΒΆ

Get and read current robot state.

bool is_running() constΒΆ

Is the robot currently running?

bool is_paused() constΒΆ

Is the robot currently in a paused state?

void set_speed(double speed)ΒΆ

Set the driver’s speed scaling. A speed of zero corresponds to the paused state.

void set_speed(double speed, double duration)ΒΆ

Set the driver’s speed scaling gracefully, change it linearly within the duration. If the robot is not running, set the speed immediately.

double get_speed() constΒΆ

Get the driver’s speed scaling.

bool pause()ΒΆ

Pause along the currently executed trajectory. Driver will be in paused state afterwards, except the motion did finish while pausing.

std::shared_future<bool> pause_async()ΒΆ

Pause along the currently executed trajectory. Driver will be in paused state afterwards, except the motion did finish while pausing.

virtual Result run(const Trajectory &trajectory)ΒΆ

Run a trajectory.

virtual std::shared_future<Result> run_async(const Trajectory &trajectory) = 0ΒΆ

Run a trajectory asynchronously.

virtual Result move_to(const ExactPoint &goal, bool ignore_collisions = false)ΒΆ

Move to an exact waypoint.

virtual std::shared_future<Result> move_to_async(const ExactPoint &goal, bool ignore_collisions = false) = 0ΒΆ

Move to an exact waypoint asynchronously.

virtual Result move_along(const std::string &motion_name, const std::optional<ExactPoint> &goal = std::nullopt, bool ignore_collisions = false)ΒΆ

Move along a pre-defined motion.

virtual std::shared_future<Result> move_along_async(const std::string &motion_name, const std::optional<ExactPoint> &goal = std::nullopt, bool ignore_collisions = false) = 0ΒΆ

Move along a pre-defined motion asynchronously.

virtual Result blend_into(const Trajectory &trajectory, double duration)ΒΆ

Blend into a trajectory.

Blend into the new trajectory from the current state, so that the robot will be on the given trajectory exactly after the duration time [s].

virtual std::shared_future<Result> blend_into_async(const Trajectory &trajectory, double duration) = 0ΒΆ

Blend into a trajectory asynchronously.

Blend into the new trajectory from the current state, so that the robot will be on the given trajectory exactly after the duration time [s].

virtual Result stop(bool fast_stop = true)ΒΆ

Stop a motion as fast as possible.

virtual std::shared_future<Result> stop_async(bool fast_stop = true) = 0ΒΆ

Stop a motion as fast as possible asynchronously.

virtual Result resume()ΒΆ

Resume a paused trajectory.

virtual std::shared_future<Result> resume_async() = 0ΒΆ

Resume a paused trajectory asynchronously.

void add_event(const Trigger &trigger, const Action &action)ΒΆ

Add an event depending on the robot’s state.

void create_io_alias(const std::string &name, size_t address)ΒΆ

Give I/O address an alias name.

virtual std::optional<int> get_digital_input(const std::string &name)ΒΆ

Read a digital input.

virtual bool set_digital_output(const std::string &name, int value)ΒΆ

Write to a digital output. Returns whether successful.

virtual std::optional<double> get_analog_input(const std::string &name)ΒΆ

Read a analog input.

virtual bool set_analog_output(const std::string &name, double value)ΒΆ

Write to a analog output. Returns whether successful.

virtual std::optional<int> get_group_input(const std::string &name)ΒΆ

Read a group input.

virtual bool set_group_output(const std::string &name, int value)ΒΆ

Write to a group output. Returns whether successful.

Public Members

const std::string hostΒΆ

The host address of the robot controller.

const int portΒΆ

The port of the robot controller.

const size_t degrees_of_freedomΒΆ

Degrees of freedom of the robot.

const double delta_timeΒΆ

Control interval of the robot’s driver.

double connect_timeout = {2.0}ΒΆ

Timeout for reconnecting to the robot.

double pausing_duration = {0.7}ΒΆ

Transition duration from and to paused state.

std::shared_ptr<jacobi::Studio> studioΒΆ

The underlying connection to Jacobi Studio.

bool monitor_path_deviation = {true}ΒΆ

Monitor the path deviation between planned and executed trajectory.

bool log_motions = {false}ΒΆ

Whether to log motions.

class ABBDriver : public jacobi::drivers::DriverΒΆ

Public Functions

explicit ABBDriver(std::shared_ptr<Planner> planner, int port)ΒΆ

Starts an ABB Robot Driver using an underlying EGM server at the specified port.

explicit ABBDriver(std::shared_ptr<Planner> planner, std::shared_ptr<Robot> robot, int port)ΒΆ

Starts an ABB Robot Driver for a specified robot using an underlying EGM server at the specified port.

explicit ABBDriver(std::shared_ptr<Planner> planner, const std::string &host, const RapidModule &module = RapidModule(), RobotWareVersion version = RobotWareVersion::RobotWare7)ΒΆ

Starts an ABB Robot Driver with an underyling RWS connection.

explicit ABBDriver(std::shared_ptr<Planner> planner, std::shared_ptr<Robot> robot, const std::string &host, const RapidModule &module = RapidModule(), RobotWareVersion version = RobotWareVersion::RobotWare7)ΒΆ

Starts an ABB Robot Driver for a specified robot with an underyling RWS connection.

explicit ABBDriver(std::shared_ptr<Planner> planner, const std::string &host, int port, const RapidModule &module = RapidModule(), RobotWareVersion version = RobotWareVersion::RobotWare7)ΒΆ

Starts an ABB Robot Driver with both an EGM server and an RWS connection.

explicit ABBDriver(std::shared_ptr<Planner> planner, std::shared_ptr<Robot> robot, const std::string &host, int port, const RapidModule &module = RapidModule(), RobotWareVersion version = RobotWareVersion::RobotWare7)ΒΆ

Starts an ABB Robot Driver for a specified robot with both an EGM server and an RWS connection.

virtual bool reconnect() overrideΒΆ

Connect to the robot.

virtual bool disconnect() overrideΒΆ

Disconnect from the robot.

virtual Result enable() overrideΒΆ

Enable robot’s servos.

virtual Result disable() overrideΒΆ

Disable robot’s servos.

~ABBDriver()ΒΆ

Deconnect all connections.

virtual Config get_current_joint_position() overrideΒΆ

Get current joint position.

virtual RobotState get_current_state() overrideΒΆ

Get current robot state.

virtual std::shared_future<Result> run_async(const Trajectory &trajectory) overrideΒΆ

Run a trajectory.

virtual std::shared_future<Result> move_to_async(const ExactPoint &goal, bool ignore_collisions = false) overrideΒΆ

Move to an exact waypoint.

virtual std::shared_future<Result> move_along_async(const std::string &motion_name, const std::optional<ExactPoint> &goal = std::nullopt, bool ignore_collisions = false) overrideΒΆ

Move along a pre-defined motion.

virtual std::shared_future<Result> blend_into_async(const Trajectory &trajectory, double duration) overrideΒΆ

Blend into trajectory.

virtual std::shared_future<Result> stop_async(bool fast_stop = true) overrideΒΆ

Stop a motion as fast as possible.

virtual std::shared_future<Result> resume_async() overrideΒΆ

Resume a paused trajectory.

virtual std::optional<int> get_digital_input(const std::string &name) overrideΒΆ

Read a digital input.

virtual bool set_digital_output(const std::string &name, int value) overrideΒΆ

Write to a digital output. Returns whether successful.

Public Members

double velocity_gain = {0.7}ΒΆ

Velocity gain parameter of the internal EGM control.

int external_axis_dof = {2}ΒΆ

Position of a possible block of external axis. Defaults to 2 for 7-dofs ABB arms.

std::shared_ptr<abb::RWS> rwsΒΆ

RWS Interface.

class RapidModuleΒΆ

High level interface for a RAPID module.

Public Functions

explicit RapidModule()ΒΆ

Create a Rapid module with default EGM behaviour.

explicit RapidModule(const std::string &code)ΒΆ

Create a Rapid module with completely custom code.

explicit RapidModule(const std::string &unit, const std::string &egm_config, double max_speed_deviation)ΒΆ

Create a Rapid module with custom EGM behaviour.

void add_procedure(const std::string &name, const std::string &rapid, const std::string &global_variables = "", const std::string &rapid_setup = "", const std::optional<std::string> &next = "egm")ΒΆ

Adds a procedure to call with arbitrary Rapid code.

std::string get_rapid_code(const std::string &init = "egm") constΒΆ

Returns the overall Rapid code.

Public Members

std::string unitΒΆ

The robot unit to be controller.

bool upload = {true}ΒΆ

Whether the rapid file should be uploaded on connection.

class FanucDriver : public jacobi::drivers::DriverΒΆ

Public Functions

explicit FanucDriver(std::shared_ptr<Planner> planner, const std::string &host, double timouet = 5.0)ΒΆ

Starts an Fanuc Robot Driver using RMI.

explicit FanucDriver(std::shared_ptr<Planner> planner, std::shared_ptr<Robot> robot, const std::string &host, double timeout = 5.0)ΒΆ

Starts an Fanuc Robot Driver using RMI. Controls the given robot only.

~FanucDriver()ΒΆ

Destroy the Fanuc Rmi Driver. Wait for any executing trajectory, disable robot, and disconnect.

virtual bool is_connected() const overrideΒΆ

Whether the driver is currently connected.

virtual bool disconnect() overrideΒΆ

Disconnect from the robot controller.

virtual bool reconnect() overrideΒΆ

Reconnect after lost connection.

virtual Result enable() overrideΒΆ

Prepare the robot for motion.

virtual Result disable() overrideΒΆ

Disable the robot for motion.

virtual Config get_current_joint_position() overrideΒΆ

Get the current joint position of the robot.

virtual RobotState get_current_state() overrideΒΆ

Get the current robot state.

bool is_moving() constΒΆ

Whether the driver is currently executing a trajectory.

virtual Result run(const Trajectory &trajectory) overrideΒΆ

Run a trajectory.

virtual std::shared_future<Result> run_async(const Trajectory &trajectory) overrideΒΆ

Run a trajectory asynchronously.

virtual Result move_to(const ExactPoint &goal, bool ignore_collisions = false) overrideΒΆ

Move to an exact waypoint.

virtual std::shared_future<Result> move_to_async(const ExactPoint &goal, bool ignore_collisions = false) overrideΒΆ

Move to an exact waypoint asynchronously.

virtual Result move_along(const std::string &motion_name, const std::optional<ExactPoint> &goal = std::nullopt, bool ignore_collisions = false) overrideΒΆ

Move along a pre-defined motion.

virtual std::shared_future<Result> move_along_async(const std::string &motion_name, const std::optional<ExactPoint> &goal = std::nullopt, bool ignore_collisions = false) overrideΒΆ

Move along a pre-defined motion asynchronously.

virtual Result blend_into(const Trajectory &trajectory, double duration) overrideΒΆ

Blend into trajectory.

virtual std::shared_future<Result> blend_into_async(const Trajectory &trajectory, double duration) overrideΒΆ

Blend into a trajectory asynchronously.

Blend into the new trajectory from the current state, so that the robot will be on the given trajectory exactly after the duration time [s].

virtual Result stop(bool fast_stop = true) overrideΒΆ

Stop a motion as fast as possible.

virtual std::shared_future<Result> stop_async(bool fast_stop = true) overrideΒΆ

Stop a motion as fast as possible asynchronously.

virtual Result resume() overrideΒΆ

Resume a paused trajectory.

virtual std::shared_future<Result> resume_async() overrideΒΆ

Resume a paused trajectory asynchronously.

virtual std::optional<int> get_digital_input(const std::string &name) overrideΒΆ

Read a digital input.

virtual bool set_digital_output(const std::string &name, int value) overrideΒΆ

Write to a digital output. Returns whether successful.

Config get_first_adjustable_waypoint(double buffer_time_s = 0.0)ΒΆ

Get the first adjustable waypoint (that can be overwritten)

Parameters:

buffer_time_s – The time for which this waypoint must continue to be adjustable

Returns:

std::vector<double>& The position from which the path can be overwritten

class SimulatedDriver : public jacobi::drivers::DriverΒΆ

Public Functions

explicit SimulatedDriver(std::shared_ptr<Planner> planner, bool sync_with_studio = false, bool log_stream = false, bool keep_running = false, const std::string &host = "192.168.0.1", int port = 8000)ΒΆ

Create a UniversalDriver with planning capabilities (with move, stop, and safety monitoring)

~SimulatedDriver()ΒΆ

Deconnect all connections.

virtual bool reconnect() overrideΒΆ

Connect to the robot.

virtual bool disconnect() overrideΒΆ

Disconnect from the robot. Returns disconnection success.

virtual Result enable() overrideΒΆ

Enable robot’s servos.

virtual Result disable() overrideΒΆ

Disable robot’s servos.

virtual Config get_current_joint_position() overrideΒΆ

Get current joint position.

void set_current_joint_position(const Config &joint_position)ΒΆ

Set the joint position.

virtual RobotState get_current_state() overrideΒΆ

Get current robot state.

virtual std::shared_future<Result> run_async(const Trajectory &trajectory) overrideΒΆ

Run a trajectory.

virtual std::shared_future<Result> move_to_async(const ExactPoint &goal, bool ignore_collisions = false) overrideΒΆ

Move to an exact waypoint.

virtual std::shared_future<Result> move_along_async(const std::string &motion_name, const std::optional<ExactPoint> &goal = std::nullopt, bool ignore_collisions = false) overrideΒΆ

Move along a pre-defined motion.

virtual std::shared_future<Result> blend_into_async(const Trajectory &trajectory, double duration) overrideΒΆ

Blend into trajectory.

virtual std::shared_future<Result> stop_async(bool fast_stop = true) overrideΒΆ

Stop a motion as fast as possible.

virtual std::shared_future<Result> resume_async() overrideΒΆ

Resume a paused trajectory.

void create_io(const std::string &name, Signal::Value default_value)ΒΆ

Create a simulated I/O.

virtual std::optional<int> get_digital_input(const std::string &name) overrideΒΆ

Read a digital input.

virtual bool set_digital_output(const std::string &name, int value) overrideΒΆ

Write to a digital output. Returns whether successful.

virtual std::optional<double> get_analog_input(const std::string &name) overrideΒΆ

Read a analog input.

virtual bool set_analog_output(const std::string &name, double value) overrideΒΆ

Write to a analog output. Returns whether successful.

Public Members

double time_speed = {1.0}ΒΆ

Simulated time speed for the control cycle (does not affect velocities and accelerations)

Controller controllerΒΆ

I/O controller.

Result run_result = {Result::Success}ΒΆ

Result of a motion.

Result enable_result = {Result::Success}ΒΆ

Result of enabling/disabling.

Public Static Attributes

static bool connect_result = {true}ΒΆ

Result of connecting (whether it’s successful)

Warning

doxygenclass: Cannot find class β€œjacobi::drivers::simulated::Signal” in doxygen xml output for project β€œjacobi_drivers” from directory: ../doxygen_xml/drivers/latest

class UniversalDriver : public jacobi::drivers::DriverΒΆ

Public Functions

explicit UniversalDriver(std::shared_ptr<Planner> planner, const std::string &host)ΒΆ

Starts an Universal Robot Driver using RTDE.

explicit UniversalDriver(std::shared_ptr<Planner> planner, std::shared_ptr<Robot> robot, const std::string &host)ΒΆ

Starts an Universal Robot Driver using RTDE. Controls the given robot only.

~UniversalDriver()ΒΆ

Deconnect all connections.

virtual bool reconnect() overrideΒΆ

Connect to the robot.

virtual bool disconnect() overrideΒΆ

Disconnect from the robot.

virtual ControllerStatus get_controller_status() overrideΒΆ

Get current robot controller status (e.g. Ready/Idle, Alarm, Error, E-Stop etc.)

virtual Result enable() overrideΒΆ

Enable robot’s servos.

virtual Result disable() overrideΒΆ

Disable robot’s servos.

virtual Config get_current_joint_position() overrideΒΆ

Get current joint position.

virtual RobotState get_current_state() overrideΒΆ

Get current robot state.

virtual std::shared_future<Result> run_async(const Trajectory &trajectory) overrideΒΆ

Run a trajectory.

virtual std::shared_future<Result> move_to_async(const ExactPoint &goal, bool ignore_collisions = false) overrideΒΆ

Move to an exact waypoint.

virtual std::shared_future<Result> move_along_async(const std::string &motion_name, const std::optional<ExactPoint> &goal = std::nullopt, bool ignore_collisions = false) overrideΒΆ

Move along a pre-defined motion.

virtual std::shared_future<Result> blend_into_async(const Trajectory &trajectory, double duration) overrideΒΆ

Blend into trajectory.

virtual std::shared_future<Result> stop_async(bool fast_stop = true) overrideΒΆ

Stop a motion as fast as possible.

virtual std::shared_future<Result> resume_async() overrideΒΆ

Resume a paused trajectory.

virtual std::optional<int> get_digital_input(const std::string &name) overrideΒΆ

Read a digital input.

virtual bool set_digital_output(const std::string &name, int value) overrideΒΆ

Write to a digital output. Returns whether successful.

virtual std::optional<double> get_analog_input(const std::string &name) overrideΒΆ

Read a analog input.

virtual bool set_analog_output(const std::string &name, double value) overrideΒΆ

Write to a analog output. Returns whether successful.

Public Members

double velocity_parameter = {0.0}ΒΆ

Velocity parameter of the internal UR control.

double acceleration_parameter = {0.0}ΒΆ

Acceleration parameter of the internal UR control.

double lookahead_time = {0.04}ΒΆ

Lookahead time parameter of the internal UR control.

double gain = {1600}ΒΆ

P-gain parameter of the internal UR control.

class YaskawaDriver : public jacobi::drivers::DriverΒΆ

Public Functions

explicit YaskawaDriver(std::shared_ptr<Planner> planner, const std::string &host = "192.168.1.31", int port = 50240)ΒΆ

Starts an Yaskawa Robot Driver connecting to the MotoPlus application running on the robot controller.

explicit YaskawaDriver(std::shared_ptr<Planner> planner, std::shared_ptr<Robot> robot, const std::string &host = "192.168.1.31", int port = 50240)ΒΆ

Starts an Yaskawa Robot Driver connecting to the MotoPlus application running on the robot controller. Controls the given robot only.

~YaskawaDriver()ΒΆ

Deconnect all connections.

virtual bool reconnect() overrideΒΆ

Connect to the robot.

virtual Result enable() overrideΒΆ

Enable robot’s servos.

virtual Result disable() overrideΒΆ

Disable robot’s servos.

void set_goal_timeout(int timeout)ΒΆ

Set the timeout for not reaching the goal state.

virtual Config get_current_joint_position() overrideΒΆ

Get current joint position.

virtual RobotState get_current_state() overrideΒΆ

Get current robot state.

virtual ControllerStatus get_controller_status() overrideΒΆ

Get current robot controller status.

virtual std::shared_future<Result> run_async(const Trajectory &trajectory) overrideΒΆ

Run a trajectory.

virtual std::shared_future<Result> move_to_async(const ExactPoint &goal, bool ignore_collisions = false) overrideΒΆ

Move to an exact waypoint.

virtual std::shared_future<Result> move_along_async(const std::string &motion_name, const std::optional<ExactPoint> &goal = std::nullopt, bool ignore_collisions = false) overrideΒΆ

Move along a pre-defined motion.

virtual std::shared_future<Result> blend_into_async(const Trajectory &trajectory, double duration) overrideΒΆ

Blend into trajectory.

virtual std::shared_future<Result> stop_async(bool fast_stop = true) overrideΒΆ

Stop a motion as fast as possible.

virtual std::shared_future<Result> resume_async() overrideΒΆ

Resume a paused trajectory.

virtual std::optional<int> get_digital_input(const std::string &name) overrideΒΆ

Read a digital input.

virtual bool set_digital_output(const std::string &name, int value) overrideΒΆ

Write to a digital output. Returns whether successful.

virtual std::optional<int> get_group_input(const std::string &name) overrideΒΆ

Read a group input.

virtual bool set_group_output(const std::string &name, int value) overrideΒΆ

Write to a group output. Returns whether successful.

Public Members

std::vector<std::string> joint_namesΒΆ

Joint names of the robot.