This package implements basic controllers (similarly to ros_controllers).
The source code is released under a MIT license.
Author/Maintener: EtienneAr
Affiliation: INRIA Paris
This package package has been tested under [ROS] Melodic on respectively Ubuntu 18.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/inria-paris-robotics-lab/joint_group_ff_controllers.git
cd ../
rosdep install --from-paths . --ignore-src
catkin build
This controller tracks position, velocity and effort commands for a set of joints using a pd-feedforward controller.
It expects a EffortJointInterface type of hardware interface. The control is done as followed, for each joint :
-
command
([joint_group_ff_controllers/setpoint])The positions, velocities and efforts set point for each joint, aswell as the timeout value.
Note: iftimeout < 0
, then the timeout is ignored and the command will be executed indefinitely.
-
joints
(string[])The list of joints to control.
-
<joint>
(associative array)Key/Value pairs for the controller gains. Expected keys are
kp
,kd
,kp_safe
,kd_safe
.
Controller configuration example
arm_right_controller_test: type: joint_group_ff_controllers/JointGroupEffortFFController joints: - arm_right_1_joint - arm_right_2_joint - arm_right_3_joint - arm_right_4_joint - arm_right_5_joint - arm_right_6_joint - arm_right_7_joint arm_right_1_joint: { kp: .01, kd: .01, kp_safe: 1000, kd_safe: 64. } arm_right_2_joint: { kp: .01, kd: .01, kp_safe: 1000, kd_safe: 64. } arm_right_3_joint: { kp: .01, kd: .01, kp_safe: 1000, kd_safe: 64. } arm_right_4_joint: { kp: .01, kd: .01, kp_safe: 1000, kd_safe: 64. } arm_right_5_joint: { kp: .01, kd: .01, kp_safe: 1000, kd_safe: 64. } arm_right_6_joint: { kp: .01, kd: .01, kp_safe: 1000, kd_safe: 64. } arm_right_7_joint: { kp: .01, kd: .01, kp_safe: 1000, kd_safe: 64. }
Note : Usually kp and kd are set to small values as the effort feed-forward should do most of the "work". kp_safe and kd_safe on the other hand are bigger as they should be able to keep the robot stable in it's current position (without any feed-forward), when timeout occurs.
This controller tracks position and velocity commands for a set of joints using a p-feedforward controller.
It expects a VelocityJointInterface type of hardware interface. The control is done as followed, for each joint :
-
command
([joint_group_ff_controllers/setpoint])The positions and velocities set point for each joint (efforts field is ignored in this case), aswell as the timeout value.
Note: iftimeout < 0
, then the timeout is ignored and the command will be executed indefinitely.
-
joints
(string[])The list of joints to control.
-
<joint>
(associative array)Key/Value pairs for the controller gains. Expected keys are
kp
,kp_safe
.
Controller configuration example
right_arm_ff_controller: type: joint_group_ff_controllers/JointGroupVelocityFFController joints: - right_shoulder_pan_joint - right_shoulder_lift_joint - right_elbow_joint - right_wrist_1_joint - right_wrist_2_joint - right_wrist_3_joint right_shoulder_pan_joint: { kp: .1, kp_safe: 100 } right_shoulder_lift_joint: { kp: .1, kp_safe: 100 } right_elbow_joint: { kp: .1, kp_safe: 100 } right_wrist_1_joint: { kp: .1, kp_safe: 100 } right_wrist_2_joint: { kp: .1, kp_safe: 100 } right_wrist_3_joint: { kp: .1, kp_safe: 100 }
Note : Usually kp is set to small values as the effort feed-forward should do most of the "work". kp_safe on the other hand is bigger as they should be able to keep the robot stable in it's current position (without any feed-forward), when timeout occurs.