ABC · bimanual YAM workstationabc.bot

Hardware Setup›Assembly

ABC Hardware Setup

#Shopping list

#Bill of materials

For The main mount

ItemQtyLink
Robot mounting 3060 extrusion (base rail, A)1Amazon
200 mm extrusion for mounting the camera back (B)1Amazon
1 m black extrusion for camera (F)1Amazon
Corner connector pack for 3030 extrusions: 24 black 2835 brackets C, 48 M6 T-nuts D and 48 bolts E — used for the A–B and B–F joints here and for the cage struts1 packAmazon
M6 bolts (assortment) — the 10 mm one for the top camera mount comes from here1 packAmazon
M6 T-slot sliding nut (D) for the top camera mount, in addition to the ones in the bracket pack (pack of 20 — the same pack covers the 8 nuts for mounting the robot)1Amazon
Intel RealSense D405 (top camera)1Amazon
Top camera mount (3D printed, see 3D printed parts)1

For Mounting the robot

ItemQtyLink
YAM arm2I2RT
M6 T-slot sliding nuts (D), 4 per arm (from the same pack of 20 as in the main mount)8Amazon
M6 × 20 mm bolts, 4 per arm (from the M6 assortment above)8
Robot table — adjustable height, with lockable wheels1
Irwin Quick-Grip mini clamps, one at each end of rail A (sold in packs of 2 — 4 clamps are needed in total, 2 here and 2 for the workspace, so order 2 packs)2Amazon

For Mounting the wrist camera and gripper

ItemQtyLink
Crank gripper (optional but recommended). The wrist camera mount comes with it.2I2RT
Intel RealSense D405 (wrist cameras)2Amazon

For Cage building

ItemQtyLink
3030 extrusions, 1220 mm (48 in), for the cage: 2 used uncut, 4 cut to 39 in, 4 cut to 35 in (sold in packs of 4 — order 3 packs, 2 spare)10Amazon
3-way corner cubes for 8020 extrusions1 packAmazon
Black 2835 corner brackets (C) with M6 T-nuts and bolts, for the last two vertical struts (2 per strut) — from the same 24-piece pack as in the main mount4Amazon
White project board, one per covered side (back and two sides)3Office Depot
Double-sided adhesive tape, to stick the boards to the frame1Amazon

For Wiring and electronics

ItemQtyLink
JSER USB camera cables, one per D4053Amazon
USB cable, one per arm (the arm has a built-in USB-CAN interface)2Amazon
Zip ties1Amazon

For The robot workspace

ItemQtyLink
Workspace table, at least 48 in × 39 in (1220 × 990 mm), the cage footprint1
Irwin Quick-Grip mini clamps, to clamp the cage to the robot table (same pack of 2 as for mounting the robot — 4 clamps total, order 2 packs)2Amazon

#3D printed parts

ItemQtyCAD
Top camera mount — holds the top D405 on post F (The main mount, step 3)1Download STL
Wrist camera mount — D405 bracket on each gripper (Wrist camera and gripper, step 2)2ships with the arm
Gripper fingertips — one pair per gripper4ships with the arm

#Tools

  • Allen keys
  • Electric screwdriver, for the gripper and camera-mount screws
  • X-acto knife or similar, to cut out the board

#Assembly

#The main mount

In this section, we will build the primary mount for the robot and the top camera. The mount should approximately replicate the simulation environment: the empty bimanual scene abc_sim/models/yam_bimanual_empty.xml, which abc_sim/scene_xml.py loads and transforms at run time. The lower half of Figure 1 is a render of that scene with the dimensions we are matching.

Overview of the main robot mount with parts A, B and F labeled, close-ups of the joints, and dimensioned side and front elevations of the simulation scene
Figure 1.# The main robot mount. A = 3060 base rail, B = 200 mm extrusion, F = 1 m vertical extrusion, C = 2835 corner bracket, D = M6 T-slot sliding nut, E = M6 bolt. Numbered badges refer to the steps below. Bottom: orthographic side (left) and front (right) elevations of yam_bimanual_empty.xml rendered with MuJoCo — the top D405 sits 954 mm above the rail top and 86 mm forward of the post; the robot bases are 252.5 mm from the post plane and 310 mm either side of the centre line. The sim's gate arch is hidden in the front view; on the real mount its place is taken by the single centre post F.
  1. Start with the 3060 Robot Mounting Extrusion (A) and attach the 200 mm extrusion (B) to it at the midpoint, using the black 2835 corner brackets (C), M6 T-slot sliding nuts (D) and M6 bolts (E).
  2. Now attach the 1 m extrusion (F) to B using the same joint as in 1.
  3. Now attach the top camera mount to F using a 10 mm M6 bolt (E) and another sliding T-nut (D). The camera mount is 3D-printed (see 3D printed parts).

#Mounting the robot

Now, we will mount the robot on the mount we built in The main mount.

Robot base

Robot arm bolted to the base rail, a close-up of four T-nuts pre-loaded in the rail, and a rotated view of the rail with placement dimensions X and Y
Figure 2.# Mounting the robot. Four T-nuts (D) are pre-loaded in rail A; X is the distance from the centre of the four-nut rectangle to the centre of the A–B joint, Y is the spacing between the two nut pairs along the rail. From the sim: X = 310 mm (arm bodies at y = ±0.31 m in yam_bimanual_empty.xml) and Y = 100 mm (the YAM base plate is 200 × 70 mm with Ø6 mm mounting holes at ±50 and ±90 mm along it and ±20 mm across; the four nuts use the ±50 mm pair, 40 mm apart across the rail).
  1. Slide in 4 sliding T-nuts into the base rail we set up in The main mount. Then, screw in the robot base to it using M6 20 mm bolts.
  2. Do this symmetrically for the robot on the other side with the same dimensions.

Clamping to the table

  1. Clamp the setup above to the top of a table (preferably adjustable height and with lockable wheels). See Figure 3.
The full bench with both clamps circled, and a close-up of one clamp holding the base rail to the table edge
Figure 3.# Clamping the setup to the table. A clamp at each end of the base rail; the near one is shown magnified.

#Mounting the wrist camera and gripper

Now, we would like to add a gripper and wrist camera to our robot. Our dataset is primarily collected on crank shaft grippers, linear gear grippers and adaptive flexpoint grippers. A larger fraction of the data is with the crank shaft gripper, so for better performance we recommend using this. The camera mount comes along with the gripper from the vendor I2RT.

Gripper and wrist camera on the arm with the gripper joint and camera bracket circled, and close-ups of the gripper mount and the wrist camera mount
Figure 4.# Mounting the wrist camera and gripper. Both close-ups belong to step 2.
  1. Push the gripper onto the ends of the arms. Important: sometimes (for the crank shaft gripper with YAM / YAM-Pro), this fitting is quite tight and requires forceful pushing with the ends properly aligned.
  2. This step is just screwing parts together, should be fairly simple with an electronic screwdriver. Tightly screw in the gripper to the arm with the long screws that come with the robot. Then screw in the camera mount with the screws that come with it, and finally screw in the D405 with the holes on the mount.
  3. Repeat 1, 2 for the other arm.

#Cage building instructions

We will need 10 extrusions to build the cage:

  • 2 of 48 in (uncut, as bought — 1220 mm)
  • 4 cut to 39 in
  • 4 cut to 35 in
The twelve cut extrusions laid out
The cut extrusions.
The finished cage frame on the table
The cage frame will look like this when completed.

We will build the back of the cage first.

  • Attach the four corners using the 3-way connectors. The 48″ extrusions form the cross beams and the 35″ form the vertical. Important: ensure that all the extra corner connectors are pointing out in the same direction.
    First corner of the back frame with a 3-way connector
    Start of the back frame.
    Back frame with all four corners attached
    The result after the four corners.
  • Attach the bottom two connectors as follows.
    Bottom connectors attached to the back frame
  • Then attach the last two vertical 35″ struts using the black 2835 corner brackets (C), two per strut.
    Vertical struts attached with inner angle brackets
  • We then bolt them together — with corner connectors — to make a frame that looks like this.
    Frame bolted together with corner connectors
  • Finally, use two more corner connectors and attach the remaining side of the back of the cage to complete it.
    Completed back of the cage
  • You then want to cut out the project board to dimensions matching the size of the sides (so around 35 in × 41 in). Use double-sided tape to stick the boards to the cage boundary from all sides.

#Wiring and electronics

#Cameras

  • Use JSER cables to connect the three cameras to the computer using USB ports.
  • Prefer USB3 for avoiding intermittent packet drops. If your compute does not have USB3, disable the depth stream of the camera in the deploy/ folder in the code to reduce bandwidth requirements.
  • Use zip ties to secure the cable to the robot to the extent possible.

#Robot arms

  1. Connect each arm to the computer with a USB cable (a USB2 port is fine). No separate USB-CAN adapter is needed; the arm shows up as a CAN interface.
  2. Power each arm from its 24 V supply into the connector on the arm base.
  3. Check that both arms show up:
    ip link show type can
  4. Add your station to PROFILES in deploy/robot/config.py with the two CAN interface names or serials.
  5. Run:
    export ROBOT_PROFILE=<your_profile>
    sudo -E bash deploy/scripts/setup_can_names.sh
  6. Verify:
    ip -details link show can_l_foll
    ip -details link show can_r_foll
    Both should show state UP and bitrate 1000000.

#The robot workspace

In this section, we set the robot workspace up. The dataset is collected on a rectangular workspace placed parallelly adjacent to the robot, with the cage as the visual background. While performance without the cage is not completely zero, it is much better with the cage on.

  1. Choose a table of about 48 in × 39 in (1220 × 990 mm), the footprint of the cage. Preferably, the dimension away from the robot should be greater than the cage dimension (39 in).
  2. Align the table with the base of the robot as in Figure 5 (left): the table top sits flush with the top of rail A, level with the bottom of the robot base plate.
  3. Put the cage on and clamp it to the other table on which the robot is mounted on. Your workstation would probably end up looking like as in Figure 5 (right).
Left: close-up of the workspace table edge meeting the base rail, with the table top level with the top of the rail under the robot base. Middle: the workstation with the workspace table aligned to the robot, without the cage. Right: the same workstation with the cage on, clamped to the robot table
Figure 5.# The robot workspace. Left: table height — the table top is flush with the top of rail A, level with the bottom of the robot base plate. Middle: the workstation with the workspace table aligned to the robot, before the cage goes on. Right: the finished workstation with the cage on and clamped to the robot table.