The rdda_interface is a ROS package developed for RDDA control library. It lets users control the 2-DOF remote-direct-drive gripper on ROS by sharing the input/output data between the ROS interface proccess and the gripper control process (based on RDDA library) using shared-memory technique. rdda_interface is mainly responsible for:
- data synchronization for joint states and commanded reference between high-level ROS nodes and low-level controller,
- dynamical parameters tuning (e.g. max velocity/torque and stiffness),
- data collection and visualization.
The following instruction have been tested on Ubuntu 16.04. Similar instructions should not work for other Linux distributions.
-
Install ROS Kinetic. If you have ROS Kinetic installed, you should be good to go.
-
Install RDDA Control Library
-
Clone the repository into the ROS package directory:
git clone https://github.com/RoboticsCollaborative/rdda_interface -
Go to the directory of ROS workspace, then build the package:
cd $<workspace> catkin_make -
If you can launch the interface, then you should be good to control the gripper:
roscd rdda_interface roslaunch rdda_interface rdda_interface.launchTo request the homing routine when launching the interface, set the argument:
roslaunch rdda_interface rdda_interface.launch home:=1The homing routine is only required to run once after launching roscore, such that you can obtain upper/lower bounds and origins of the gripper through rosparam.
A test to stream joints data with plotJuggler.

Obtain following joint states by subscribing to "rdda_interface/joint_states" ROS topic with sensor_msgs/JointState message.
- float64[] position ~ joint angles w.r.t. motor coords (rad)
- float64[] velocity ~ joint angles w.r.t. motor coords (rad/s)
- float64[] effort ~ external torque/force (Nm)
Publish joint reference positions to "rdda_interface/joint_cmds" with trajectory_msgs/JointTrajectoryPoint message.
- float64[] positions ~ joint reference position (rad)
rdda_interface provides ROS services to tune dynamical parameters at runtime.
- Velocity saturation ~ "/rdda_interface/set_max_vel" (rad/s)
- Effort/torque saturation ~ "/rdda_interface/set_max_eff" (Nm)
- Stiffness ~ "/rdda_interface/set_stiff" (Nm/rad)
Monitor the streaming data with plotJuggler.