Class TrossenArmDriver
Defined in File trossen_arm.hpp
Class Documentation
-
class TrossenArmDriver
Trossen Arm Driver.
Public Functions
-
~TrossenArmDriver()
Destroy the Trossen Arm Driver object.
-
void configure(Model model, EndEffectorProperties end_effector, const std::string serv_ip, bool clear_error)
Configure the driver.
- Parameters:
model – Model of the robot
end_effector – End effector properties
serv_ip – IP address of the robot
clear_error – Whether to clear the error state of the robot
-
void cleanup()
Cleanup the driver.
-
void set_all_positions(const std::vector<float> &goal_positions, float goal_time = 2.0f, bool blocking = true, const std::optional<std::vector<float>> &goal_feedforward_velocities = std::nullopt, const std::optional<std::vector<float>> &goal_feedforward_accelerations = std::nullopt)
Set the positions of all joints.
Note
The size of the vectors should be equal to the number of joints
- Parameters:
goal_positions – Positions in rad for arm joints and m for the gripper joint
goal_time – Optional: goal time in s when the goal positions should be reached, default 2.0s
blocking – Optional: whether to block until the goal positions are reached, default true
goal_feedforward_velocities – Optional: feedforward velocities in rad/s for arm joints and m/s for the gripper joint, default zeros
goal_feedforward_accelerations – Optional: feedforward accelerations in rad/s^2 for arm joints and m/s^2 for the gripper joint, default zeros
-
void set_arm_positions(const std::vector<float> &goal_positions, float goal_time = 2.0f, bool blocking = true, const std::optional<std::vector<float>> &goal_feedforward_velocities = std::nullopt, const std::optional<std::vector<float>> &goal_feedforward_accelerations = std::nullopt)
Set the positions of the arm joints.
Note
The size of the vectors should be equal to the number of arm joints
- Parameters:
goal_positions – Positions in rad
goal_time – Optional: goal time in s when the goal positions should be reached, default 2.0s
blocking – Optional: whether to block until the goal positions are reached, default true
goal_feedforward_velocities – Optional: feedforward velocities in rad/s, default zeros
goal_feedforward_accelerations – Optional: feedforward accelerations in rad/s^2, default zeros
-
void set_gripper_position(float goal_position, float goal_time = 2.0f, bool blocking = true, float goal_feedforward_velocity = 0.0f, float goal_feedforward_acceleration = 0.0f)
Set the position of the gripper.
- Parameters:
goal_position – Position in m
goal_time – Optional: goal time in s when the goal position should be reached, default 2.0s
blocking – Optional: whether to block until the goal position is reached, default true
goal_feedforward_velocity – Optional: feedforward velocity in m/s, default zero
goal_feedforward_acceleration – Optional: feedforward acceleration in m/s^2, default zero
-
void set_joint_position(uint8_t joint_index, float goal_position, float goal_time = 2.0f, bool blocking = true, float goal_feedforward_velocity = 0.0f, float goal_feedforward_acceleration = 0.0f)
Set the position of a joint.
- Parameters:
joint_index – The index of the joint in [0, num_joints - 1]
goal_position – Position in rad for arm joints and m for the gripper joint
goal_time – Optional: goal time in s when the goal position should be reached, default 2.0s
blocking – Optional: whether to block until the goal position is reached, default true
goal_feedforward_velocity – Optional: feedforward velocity in rad/s for arm joints and m/s for the gripper joint, default zero
goal_feedforward_acceleration – Optional: feedforward acceleration in rad/s^2 for arm joints and m/s^2 for the gripper joint, default zero
-
void set_all_velocities(const std::vector<float> &goal_velocities, float goal_time = 2.0f, bool blocking = true, const std::optional<std::vector<float>> &goal_feedforward_accelerations = std::nullopt)
Set the velocities of all joints.
Note
The size of the vectors should be equal to the number of joints
- Parameters:
goal_velocities – Velocities in rad/s for arm joints and m/s for the gripper joint
goal_time – Optional: goal time in s when the goal velocities should be reached, default 2.0s
blocking – Optional: whether to block until the goal velocities are reached, default true
goal_feedforward_accelerations – Optional: feedforward accelerations in rad/s^2 for arm joints and m/s^2 for the gripper joint, default zeros
-
void set_arm_velocities(const std::vector<float> &goal_velocities, float goal_time = 2.0f, bool blocking = true, const std::optional<std::vector<float>> &goal_feedforward_accelerations = std::nullopt)
Set the velocities of the arm joints.
Note
The size of the vectors should be equal to the number of arm joints
- Parameters:
goal_velocities – Velocities in rad
blocking – Optional: whether to block until the goal velocities are reached, default true
goal_time – Optional: goal time in s when the goal velocities should be reached, default 2.0s
goal_feedforward_accelerations – Optional: feedforward accelerations in rad/s^2, default zeros
-
void set_gripper_velocity(float goal_velocity, float goal_time = 2.0f, bool blocking = true, float goal_feedforward_acceleration = 0.0f)
Set the velocity of the gripper.
- Parameters:
goal_velocity – Velocity in m/s
goal_time – Optional: goal time in s when the goal velocity should be reached, default 2.0s
blocking – Optional: whether to block until the goal velocity is reached, default true
goal_feedforward_acceleration – Optional: feedforward acceleration in m/s^2, default zero
-
void set_joint_velocity(uint8_t joint_index, float goal_velocity, float goal_time = 2.0f, bool blocking = true, float goal_feedforward_acceleration = 0.0f)
Set the velocity of a joint.
- Parameters:
joint_index – The index of the joint in [0, num_joints - 1]
goal_velocity – Velocity in rad/s for arm joints and m/s for the gripper joint
goal_time – Optional: goal time in s when the goal velocity should be reached, default 2.0s
blocking – Optional: whether to block until the goal velocity is reached, default true
goal_feedforward_acceleration – Optional: feedforward acceleration in rad/s^2 for arm joints and m/s^2 for the gripper joint, default zero
-
void set_all_external_efforts(const std::vector<float> &goal_external_efforts, float goal_time = 2.0f, bool blocking = true)
Set the external efforts of all joints.
Note
The size of the vectors should be equal to the number of joints
- Parameters:
goal_external_efforts – External efforts in Nm for arm joints and N for the gripper joint
goal_time – Optional: goal time in s when the goal external efforts should be reached, default 2.0s
blocking – Optional: whether to block until the goal external efforts are reached, default true
-
void set_arm_external_efforts(const std::vector<float> &goal_external_efforts, float goal_time = 2.0f, bool blocking = true)
Set the external efforts of the arm joints.
Note
The size of the vectors should be equal to the number of arm joints
- Parameters:
goal_external_efforts – External efforts in Nm
goal_time – Optional: goal time in s when the goal external efforts should be reached, default 2.0s
blocking – Optional: whether to block until the goal external efforts are reached, default true
-
void set_gripper_external_effort(float goal_external_effort, float goal_time = 2.0f, bool blocking = true)
Set the external effort of the gripper.
- Parameters:
goal_external_effort – External effort in N
goal_time – Optional: goal time in s when the goal external effort should be reached, default 2.0s
blocking – Optional: whether to block until the goal external effort is reached, default true
-
void set_joint_external_effort(uint8_t joint_index, float goal_external_effort, float goal_time = 2.0f, bool blocking = true)
Set the external effort of a joint.
- Parameters:
joint_index – The index of the joint in [0, num_joints - 1]
goal_external_effort – External effort in Nm for arm joints and N for the gripper joint
goal_time – Optional: goal time in s when the goal external effort should be reached, default 2.0s
blocking – Optional: whether to block until the goal external effort is reached, default true
-
void load_configs_from_file(const std::string &file_path)
Load configurations from a YAML file and set them.
- Parameters:
file_path – The file path to load the configurations
-
void set_factory_reset_flag(bool flag = true)
Set the factory reset flag.
- Parameters:
flag – Whether to reset the configurations to factory defaults at the next startup
-
void set_ip_method(IPMethod method = IPMethod::manual)
Set the IP method.
- Parameters:
method – The IP method to set, one of IPMethod::manual or IPMethod::dhcp
-
void set_manual_ip(const std::string manual_ip = "192.168.1.2")
Set the manual IP.
- Parameters:
manual_ip – The manual IP address to set
-
void set_dns(const std::string dns = "8.8.8.8")
Set the DNS.
- Parameters:
dns – The DNS to set
-
void set_gateway(const std::string gateway = "192.168.1.1")
Set the gateway.
- Parameters:
gateway – The gateway to set
-
void set_subnet(const std::string subnet = "255.255.255.0")
Set the subnet.
- Parameters:
subnet – The subnet to set
-
void set_joint_characteristics(const std::vector<JointCharacteristic> &joint_characteristics)
Set the joint characteristics.
effort_correction: [0.5, 2.0]
friction_transition_velocity: positive
continuity_factor: [1.0, 10.0] for arm joints and additionally negative for the gripper joint to disable the continuity constraint
Note
The size of the vector should be equal to the number of joints
Note
Some joint characteristics are required to be within the following ranges
Warning
Disabling the continuity constraint for the gripper joint removes protection against drastic gripper movements caused by erroneous application logic
- Parameters:
joint_characteristics – Joint characteristics
-
void set_effort_corrections(const std::vector<float> &effort_corrections)
Set the effort corrections.
This configuration is used to map the efforts in Nm or N to the motor effort unit, i.e., effort_correction = motor effort unit / Nm or N
Note
The size of the vector should be equal to the number of joints
Note
Each element in the vector should be within the range [0.5, 2.0]
- Parameters:
effort_corrections – Effort corrections in motor effort unit / Nm or N
-
void set_friction_transition_velocities(const std::vector<float> &friction_transition_velocities)
Set the friction transition velocities.
Note
The size of the vector should be equal to the number of joints
Note
Each element in the vector should be positive
- Parameters:
friction_transition_velocities – Friction transition velocities in rad/s for arm joints and m/s for the gripper joint
-
void set_friction_constant_terms(const std::vector<float> &friction_constant_terms)
Set the friction constant terms.
Note
The size of the vector should be equal to the number of joints
- Parameters:
friction_constant_terms – Friction constant terms in Nm for arm joints and N for the gripper joint
-
void set_friction_coulomb_coefs(const std::vector<float> &friction_coulomb_coefs)
Set the friction coulomb coefs.
Note
The size of the vector should be equal to the number of joints
- Parameters:
friction_coulomb_coefs – Friction coulomb coefs in Nm/Nm for arm joints and N/N for the gripper joint
-
void set_friction_viscous_coefs(const std::vector<float> &friction_viscous_coefs)
Set the friction viscous coefs.
Note
The size of the vector should be equal to the number of joints
- Parameters:
friction_viscous_coefs – Friction viscous coefs in Nm/(rad/s) for arm joints and N/(m/s) for the gripper joint
-
void set_continuity_factors(const std::vector<float> &continuity_factors)
Set the continuity factors.
Note
The size of the vector should be equal to the number of joints
Note
Each element in the vector should be within the range [1.0, 10.0] for arm joints and additionally negative for the gripper joint to disable the continuity constraint
Warning
Disabling the continuity constraint for the gripper joint removes protection against drastic gripper movements caused by erroneous application logic
- Parameters:
continuity_factors – Continuity factors in 1 that scales the base continuity constraint
-
void set_joint_modes(const std::vector<Mode> &modes)
Set the modes of each joint.
Mode::idle
Mode::position
Mode::velocity
Mode::external_effort
Note
The size of the vector should be equal to the number of joints
- Parameters:
modes – Desired modes for each joint, one of
-
void set_all_modes(Mode mode = Mode::idle)
Set all joints to the same mode.
Mode::idle
Mode::position
Mode::velocity
Mode::external_effort
- Parameters:
mode – Desired mode for all joints, one of
-
void set_arm_modes(Mode mode = Mode::idle)
Set the mode of the arm joints.
Mode::idle
Mode::position
Mode::velocity
Mode::external_effort
Warning
This method does not change the gripper joint’s mode
- Parameters:
mode – Desired mode for the arm joints, one of
-
void set_gripper_mode(Mode mode = Mode::idle)
Set the mode of the gripper joint.
Mode::idle
Mode::position
Mode::velocity
Mode::external_effort
Warning
This method does not change the arm joints’ mode
- Parameters:
mode – Desired mode for the gripper joint, one of
-
void set_end_effector(const EndEffectorProperties &end_effector)
Set the end effector properties.
- Parameters:
end_effector – The end effector properties
-
void set_gripper_force_limit_scaling_factor(float scaling_factor = 0.5f)
Set the gripper force limit scaling factor.
Note
It must be within [0.0, 1.0], 0.0 for no force, 1.0 for max force in the specifications
- Parameters:
scaling_factor – Scaling factor for the max gripper force
-
uint8_t get_num_joints() const
Get the number of joints.
- Returns:
Number of joints
-
std::string get_driver_version() const
Get driver version.
- Returns:
Driver version
-
std::string get_controller_version() const
Get controller firmware version.
- Returns:
Controller firmware version
-
std::vector<float> get_positions()
Get the positions.
- Returns:
Positions in rad for arm joints and m for the gripper joint
-
std::vector<float> get_velocities()
Get the velocities.
- Returns:
Velocities in rad/s for arm joints and m/s for the gripper joint
-
std::vector<float> get_efforts()
Get the efforts.
- Returns:
Efforts in Nm for arm joints and N for the gripper joint
-
std::vector<float> get_external_efforts()
Get the external efforts.
- Returns:
External efforts in Nm for arm joints and N for the gripper joint
-
std::vector<float> get_compensation_efforts()
Get the compensation efforts.
- Returns:
Compensation efforts in Nm for arm joints and N for the gripper joint
-
void save_configs_to_file(const std::string &file_path)
Save configurations to a YAML file.
- Parameters:
file_path – The file path to store the configurations
-
bool get_factory_reset_flag()
Get the factory reset flag.
- Returns:
true The configurations will be reset to factory defaults at the next startup
- Returns:
false The configurations will not be reset to factory defaults at the next startup
-
std::string get_manual_ip()
Get the manual IP.
- Returns:
Manual IP address
-
std::string get_dns()
Get the DNS.
- Returns:
DNS address
-
std::string get_gateway()
Get the gateway.
- Returns:
Gateway address
-
std::string get_subnet()
Get the subnet.
- Returns:
Subnet address
-
std::vector<JointCharacteristic> get_joint_characteristics()
Get the joint characteristics.
- Returns:
Joint characteristics
-
std::vector<float> get_effort_corrections()
Get the effort corrections.
- Returns:
Effort corrections in motor effort unit / Nm or N
-
std::vector<float> get_friction_transition_velocities()
Get the friction transition velocities.
- Returns:
Friction transition velocities in rad/s for arm joints and m/s for the gripper joint
-
std::vector<float> get_friction_constant_terms()
Get the friction constant terms.
- Returns:
Friction constant terms in Nm for arm joints and N for the gripper joint
-
std::vector<float> get_friction_coulomb_coefs()
Get the friction coulomb coefs.
- Returns:
Friction coulomb coefs in Nm/Nm for arm joints and N/N for the gripper joint
-
std::vector<float> get_friction_viscous_coefs()
Get the friction viscous coefs.
- Returns:
Friction viscous coefs in Nm/(rad/s) for arm joints and N/(m/s) for the gripper joint
-
std::vector<float> get_continuity_factors()
Get the continuity factors.
- Returns:
Continuity factors in 1 that scales the base continuity constraint
-
std::string get_error_information()
Get the error information of the robot.
- Returns:
Error information
-
EndEffectorProperties get_end_effector()
Get the end effector mass properties.
- Returns:
The end effector mass property structure
-
float get_gripper_force_limit_scaling_factor()
Get the gripper force limit scaling factor.
- Returns:
Scaling factor for the max gripper force, 0.0 for no force, 1.0 for max force in the specifications
-
~TrossenArmDriver()