C++ library for simulating and running the Assistive Dexterous Arm (ADA). Currently used by the Personal Robotics Lab (University of Washington), EmPRISE Lab (Cornell University), and ICAROS (University of Southern California).
Currently, the following base robot platforms are supported:
In principle, any single robot manipulator should be usable with this software. Each one just needs a new YAML file defining the URDF, RobotHW interface, and ROS controllers.
- AIKIDO: Robot system, connecting OMPL, Ros Controllers, Perception, and the DART collision engine
- ada_description: JACO 2 and Gen3 URDFs
- pr_ros_controllers: Base joint position, velocity, and effort ROS controllers
- pr_control_msgs: Actionlib interface for the ROS controllers
- jaco_hardware: JACO 2 RobotHW Class
- kortex_hardware: Gen3 RobotHW Class
Clone the above into your catkin workspace and build with catkin build
. Note some dependencies might have other dependencies (e.g. pr_ros_controllersrequires pr_hardware_interfaces). See pr-rosinstalls for a more complete list.
Most recently tested on ROS Noetic, Ubuntu 20.04 LTS.
Basic Setup: roslaunch libada libada.launch
Arguments:
sim
(bool, defaultfalse
): Whether to run the RobotHW node and Ros Controllersversion
(int, default2
) anddof
(int, default6
): specify the Kinova arm type
This launch file will include sub-launch files to handle RobotHW and URDF generation, and then it will start the robot_state_publisher, which handles the TF tree and allows the robot to be viewed in RViz as the RobotModel.
This package offers two techniques for calibrating the camera using AprilTags: (a) real-time; and (b) offline. Both require the same setup.
- Clone the apriltagand apriltag_ros repositories into your workspace,and rebuild your workspace.
- Generate and print AprilTags. There are several ways to do so; we used this. Tip 1: Upon printing the AprilTag, write down which side is top and bottom on the back of the tag. Tip 2: The process of printing an AprilTag will sometimes change its size, so re-measure the size (in cm) in order to accurately specify it as a parameter in step 5.
- Affix a printed AprilTag onto the robot. Select a location so that it is in the camera view and it is easy to measure a transform from a robot joint to the tag.
- Measure the transform from a joint on the robot's URDF to the tag, and update the static transform node
st_robot2tag
inlaunch/default.launch
andlaunch/offline_camera_calibration.launch
accordingly. - Specify the tag parameters, referring to
config/gen2_6dof.yaml
as an example. The most important thing to ensure is that theid
andsize
instandalone_tags
and thetag_family
match the tag you affixed to the robot.tag_to_camera_default_transform
is not required, but is a good fallback; one way to get that transform is by runningapriltag_ros
continuous_detection.launch
by itself and using tf_echo where thetarget_frame
iscamera_link.
roslaunch libada libada.launch use_apriltag_calib:=true
- Roslaunch
gen2_camera_calib.launch
,where parametercalib_parent_frame
specifies the frame of the robot you'd like to get the camera transform relative to. - Pass the static transform as an argument:
libada.launch use_apriltag_calib:=false camera_transform:="x y z qw qx qy qz frame_from frame_to"