Images from the meals participants with motor impairments
                ate using the robot. Each image is described in-detail in
                alt text below.

Hardware Build Instructions (HRI'25)

Full Paper: "Lessons Learned from Designing and Evaluating a Robot-Assisted Feeding System for Out-of-Lab Use," ACM/IEEE International Conference on Human Robot Interaction (HRI) 2025.




Overview

This page provides detailed instructions on how to build the hardware for the robot-assisted feeding system presented in the HRI'25 paper "Lessons Learned from Designing and Evaluating a Robot-Assisted Feeding System for Out-of-Lab Use." Note that multiple components are custom-designed for the hardware we are using, some of which may be outdated or discontinued. As such, these instructions are NOT intended to be replicated exactly, but rather to serve as a starting point and guide for building a similar system.


                The left side of the image shows a power wheelchair with a robot
                arm mounted on its right side. The robot arm is positioned in
                front of the wheelchair and holds a fork, with a camera on its
                wrist. The back of the wheelchair has a laptop and router.
                Near the headrest is an emergency stop button.

                The right side of the image shows a hospital table on wheels.
                The same robot arm is mounted onto the hospital table. Near one
                side of the hospital table’s base is the laptop and router for
                the system. Near the other side is the system’s battery.

Table of Contents

  1. Base Hardware
  2. Eye-in-Hand System
  3. Fork Assembly
  4. System Mounts
  5. System Power



1. Base Hardware

The system uses the following base hardware components:




2. Eye-in-Hand System

The eye-in-hand system mounts an RGB-D camera and compute after the 6th joint of the robot arm, providing a fixed transform between the camera and the fork.


2.1 Parts List

  1. Intel Realsense D415
  2. Nvidia Jetson Nano
  3. 3D Printed Parts (printed with PLA):
    1. Nano Camera Stand
    2. Nano Enclosure Top
    3. Nano Enclosure Bottom
    4. Nano Front Stabilizer
    5. Nano Arm Mount
  4. M3 screw kit: 10 M3 10mm screws, 2 M3 6mm screws, 6 M3 nuts

                This figure shows the robot arm's end-effector, with arrows pointing
                to the different parts of the eye-in-hand system. Specifically, the
                eye-in-hand system is a trapezoidal structure that is on top of the arm.
                The Nvidia Jetson Nano is enclosed within the structure, with openings
                for its ports. The Intel Realsense D415 camera is mounted on top of the
                structure. The structure is screwed onto the robot arm via an arm mount,
                and a stabilizer in the front prevents the structure from tipping as the
                robot moves.

2.2 Building the Eye-in-Hand System

Step 1


Attach Nano Camera Stand to Nano Enclosure Top with two M3 10mm screws and two M3 nuts.


                    This figure shows the camera stand on top of the enclosure top,
                    towards the back (the side that is inclined up), with two
                    screws pointing through the left and right holes of the camera
                    stand, going down into the enclosure top.

                    This figure shows the inside of the enclosure top, with two nuts
                    corresponding to the screws in the previous image.

Step 2


Attach the camera to the Nano Camera Stand with two M3 6mm screws.


                    This figure shows the back of the camera stand, with two
                    screws going through the screwholes to attach the Intel RealSense
                    D415 camera to the camera stand.

Step 3


Slide the Jetson Nano board into the Nano Enclosure Top, from below.


                    This figure shows the Nano Enclosure Top sliding down onto the
                    Jetson Nano board, with the board's ports sliding into the appropriate
                    slots in the enclosure top.

Step 4


Attach the Nano Front Stabilizer to the Nano Enclosure Bottom with two M3 10mm screws and two nuts.


                    This figure shows a bottom view of the Nano Enclosure Bottom.
                    The Nano Front Stablizer is attached to the bottom, on the side
                    with the opening for the Jetson Nano's ethernet port. Two screws
                    go up from the bottom, screwing the stabilizer into the enclosure
                    bottom.

                    This figure shows the inside of the enclosure bottom, with two
                    nuts corresponding to the screws in the previous image.

Step 5


Attach the Nano Arm Mount to the Nano Enclosure Bottom with two M3 10mm screws and two nuts.


                    This figure shows a bottom view of the Nano Enclosure Bottom.
                    The Nano Arm Mount is attached to the bottom, on the side
                    opposite the Nano Front Stabilizer. Two screws go up from the
                    bottom through the curved part of the arm mount, screwing the
                    arm mount into the enclosure bottom.

                    This figure shows the inside of the enclosure bottom, with two
                    nuts corresponding to the screws in the previous image.

Step 6


Attach the Nano Enclosure Bottom to the Nano Enclosure Top with four M3 10mm screws. Note that there are small raised cylindrical "posts" on the inside of the enclosure bottom (see image in Step 5) that the Jetson Nano slides into. It may be helpful to slide the Nano out from enclosure top, rest it on the cylindrical "posts", and then slide the enclosure top down onto it.


                    This figure shows a bottom-view of the eye-in-hand system, with
                    four screws going up from the bottom, attaching the enclosure
                    bottom to the enclosure top. Two of the screws go through holes
                    in the front stabilizer, while the other two go through holes on
                    the opposite side of the enclosure bottom, behind the arm mount.

Step 7


Congratulations! You have successfully built the eye-in-hand system.


                    This figure shows the completed eye-in-hand system, from the right side.

                    This figure shows the completed eye-in-hand system, from the left side.

2.3 Attaching the Eye-in-Hand System to the Robot Arm

Step 8


Remove the gray plastic cover from the robot arm's 6th joint.


                    This image shows the plastic cover removed from the 6th joint of the robot.

Step 9


Home the robot. On the 6th joint, one screw should point straight up. Unscrew the screws to the left and right of that screw.


                    This image shows the 6th joint of the robot arm, with the screws
                    on the left and right of the center screw circled and unscrewed.

Step 10


Screw the arm mount into the two now-empty screw holes on the 6th joint, using 12mm M3 screws. Congratulations, you have successfully attached the eye-in-hand system to the robot arm!


                    This image shows the right-view of the robot arm's 6th joint, with
                    the arm mount screwed into it. A red circle highlights the screw on
                    this side of the arm mount.

                    This image shows the left-view of the robot arm's 6th joint, with
                    the arm mount screwed into it. A red circle highlights the screw on
                    this side of the arm mount.



3. Fork Assembly

The fork assembly consists of 3D printed components that allow the robot's two-finger gripper to hold onto a fork, with a force-torque (F/T) sensor and wireless F/T transmitter attached.


3.1 Parts List

  1. ATI Nano25 6-DoF F/T sensor
  2. Wireless F/T transmitter (discontinued) with a small antenna
  3. 3D Printed Parts (printed with PLA):
    1. Fork Handle
    2. Fork Handle Cover
    3. Wireless F/T Mount (Main)
    4. Wireless F/T Mount (Mag Cover)
    5. Wireless F/T Mount (Switch Cover)
    6. Fork Assembly Arm Mount (Main)
    7. Fork Assembly Arm Mount (Mag Cover)
  4. Fork Tines (3D printed with metal):
  5. M3 screws and nuts (e.g., here and here): three 4mm, seven 6mm, seven 8mm, one 12mm, one 16mm, two 30mm, & four nuts

                This figure shows the robot arm's end-effector, with arrows pointing
                to the different parts of the fork assembly. Specifically, the two-finger
                gripper holds onto the fork handle. The fork handle has a cover on top,
                enclosing a hollow that stores the wire connecting the F/T sensor to
                the wireless F/T transmitter. The fork handle attaches to the F/T
                sensor, which in turn attaches to the metal fork tines. Below the fork
                handle is the wireless F/T mount, which attaches to the wireless F/T
                transmitter. The fork assembly arm mount attaches to the robot on the
                bottom half of the 6th joint, and the wireless F/T mount's trapezoidal
                extrusion slides into the arm mount's corresponding trapezoidal slot.

3.2 Building the Fork Assembly

Step 1


Identify the +x (red), +y (green), and +z (blue) directions of the F/T sensor. Attach the forktines to the F/T sensor with three M3 4mm screws, such that if you're looking down the fork handle to the fork tines, +x goes to your left, +y goes up, and +z goes away from you (from handle top to fork tip).


                    This figure shows a screenshot from RVIZ that shows the F/T
                    sensor's frame-of-reference relative to the fork tip. Specifically,
                    if you're looking down the fork handle to the fork tines, +x
                    goes to your left, +y goes up, and +z goes away from you (from
                    handle top to fork tip).

                    This figure shows a photo of the F/T sensor with the forktines
                    attached. The location of the screws are circled in red.

Step 2


Attach the fork handle to the F/T sensor using three M3 8mm screws.


                    This figure shows a picture of the top of the F/T sensor.
                    The location of the screws are circled in red.

                    This figure shows two side-top views of the fork handle attached to the
                    F/T sensor. The location of the screws are circled in red.

Step 3


Insert three M3 nuts into the hexagonal slots on the inside of the wireless F/T mount.


                    This figure shows a photo of the inside of the wireless F/T mount,
                    with three nuts inserted into the hexagonal slots and circled in red.

Step 4


Attach the mag cover and switch cover to the wireless F/T mount using three M3 6mm screws. Note that these elements are optional, and only necessary for wireless magnetic charging of the F/T transmitter.


                    This figure shows a photo of the wireless F/T mount, without the
                    mag cover and switch cover. The locations where the mag cover and
                    switch cover attach are shown in red.

                    This figure shows a photo of the wireless F/T mount, with the mag
                    cover and switch cover attached. The locations where the screws
                    attach are shown in red.

Step 5


Attach the wireless F/T transmitter to the wireless F/T mount with four M3 6mm screws.


                    This figure shows a picture of the wireless F/T mount and the
                    wireless F/T transmitter, with an arrow indicating how the
                    transmitter slides into the mount. The locations where the screws
                    attach are circled in red.

                    This figure shows a picture of the wireless F/T mount attached
                    to the wireless F/T transmitter. The screws are circled in red.

Step 6


Run the F/T sensor wire through the hole in the fork handle. Attach the fork handle to the wireless F/T mount using two M3 30mm screws.


                    This figure shows a picture of the fork handle with the wire
                    running through the hole, and the wireless F/T mount. The
                    location of the screws is circled in red, and the hole for
                    the wire is indicated by a red arrow.

                    This figure shows a picture of the fork handle screwed onto
                    the wireless F/T mount. The screws are circled in red.

Step 7


Arrange the remaining excess wire in the hollow of the fork handle. To ensure the right amount of excess wire is left, consider plugging it into the F/T transmitter.


                    This figure shows a photo of the F/T sensor's wire coiled up in
                    the hollow of the fork handle.

Step 8


Attach the fork handle cover to the fork handle using two M3 8mm screws.


                    This figure shows a picture of the fork handle and cover, with
                    the screw locations circled in red.

Step 9


Congratualtions! You have successfully built the fork assembly.


                    A side-view of the completed fork assembly.

                    A diagonal-view of the completed fork assembly.

3.3 Attaching the Fork Assembly to the Robot Arm

Step 10


Insert an M3 nut into the slot at the bottom of the arm mount (if the nut cannot fit due to 3D printer support material, it is fine to continue without the nut). Attach the arm mount mag cover to that spot using one M3 16mm screw. Note that this step is optional, and only necessary for wireless magnetic charging of the F/T transmitter.


                    This image shows the bottom of the fork assembly arm mount and the
                    mag cover, with the screw and nut location indicated in red.

                    This image shows the bottom of the fork assembly arm mount with
                    the mag cover attached. The screw is indicated with a red arrow.

Step 11


Home the robot. On the 6th joint, one screw should point straight down. Unscrew that screw and the the screws to its left and right.


                    This image shows the 6th joint of the robot arm, with the three
                    screws unscrewed. Red circles highlight the three screws.

Step 12


Screw the arm mount into the three now-empty screw holes on the 6th joint, using one M3 12mm screw (center) and two M3 8mm screws (sides).


                    A view from the underside of the robot arm, showing the arm mount
                    with the three screws circled in red.

Step 13


Open the gripper. Slide the fork assembly into the gripper. Ensure the trapezoidal extrusion on the wireless F/T mount slides into the arm mount's corresponding trapezoidal slot (this is intentionally a tight fit). Further ensure that the extrusions at the top of the fork handle slide into the corresponding slots in the gripper. Close the gripper.


                    A side-view of the fork assembly being slid into the robot arm's
                    gripper. Arrows show the trapezoidal extrusion on the wireless
                    F/T mountand the arm mount's corresponding trapezoidal slot.

                    A top-view of the fork assembly being slid into the robot arm's
                    gripper. An arrow shows the extrusions at the top of the fork handle
                    sliding into the corresponding slots in the gripper.

Step 14


Congratualtions! You have successfully attached the fork assembly to the robot arm.


                    This figure shows the robot arm's end-effector, with the fork assembly
                    held within its two-fingered gripper.



4. System Mounts

Our system has two main mounts: (a) the robot mount, which attaches the robot arm to the system's base (e.g., wheelchair or hospital table); and (b) the electronics mount, which contains the laptop, optional router, and optional power supply.


4.1 Robot Mount

For mounting, the Kinova® Jaco® arm can be screwed onto any piece of 40-40. As such, the basic elements of any mount for the robot include: (a) T-slotted 40-40 aluminum extrusions; (b) M8 40-40 T-slot bolts; and (c) M8 clamping lever ratcheted screws. We recommend avoiding 40-40 lite, as the few-millimeter size difference can result in a loose robot mount. Using the building blocks listed above, we developed three different mounts for the robot arm: (a) a wheelchair mount; (b) a hospital table mount; and (c) a tripod mount.

4.1.1 Wheelchair Mount

Power wheelchairs tend to have a sliding track below the seat, on both sides, which can be used to attach accessories (ours is 9mm x 16mm internal dimensions on each half of the track; see pic). We leverage that sliding track for our wheelchair mount, which consists of the following parts (labeled in the images):

  1. A 30cm piece of 40-40
  2. A 10cm piece of 40-40
  3. Two joining plates, a corner bracket, and associated M8 screws and nuts
  4. Three 40-40 end caps
  5. Three clamping lever ratcheted screws
  6. A thick custom-designed aluminum spacer block (5cm x 8cm x 1.5cm), with five evenly spaced unthreaded holes to accomodate M6 screws.
  7. A thin custom-designed aluminum spacer block (2.5cm x 8cm x 0.2cm), with unthreaded holes corresponding to the aforementioned spacer block.
  8. A custom-designed linear connector (8cm x 1.6cm x 0.4cm) with threaded holes corresponding to the aforementioned holes. M6 30mm screws, and lock washers to attach it to the spacer block. This one has threaded holes.
  9. Three M6 20mm screws, washers, and T-slot nuts to attach the thick aluminum spacer block to the 40-40
  10. Four M6 30mm screws and lock washers to attach the thick aluminum spacer block to the thin one and the linear connector.

Once the wheelchair mount is assembled (see images), you can slide the linear connector into the wheelchair's sliding track, and attach the robot arm to the mount using the clamping lever ratcheted screws.


                    The sliding track on our power wheelchair, where each side of
                    the track has 9mm x 16mm of space.

                    The top view of the wheelchair mount, with letters corresponding
                    to the items in the parts list.

                    The back view of the wheelchair mount, with letters corresponding
                    to the items in the parts list.

                    A top-view of sliding the linear connector into the wheelchair's
                    sliding track.

4.1.2 Hospital Table Mount

For meals when users aren't seated in their wheelchair, it can be helpful to have a mount that can be wheeled to wherever the user is. Hospital tables are commonly used as part of care routines because they are wheeled, height-adjustable, and lightweight. Thus, we developed a robot mount that can be clamped onto a hospital table, to accomodate out-of-wheelchair meals (e.g., in-bed meals). This mount consists of the following parts (labeled in the images):

  1. A 55cm piece of 40-40 (although we joined two pieces together for this length, a single piece is preferrable)
  2. A 10.6cm piece of 40-40 (depending on the distance from the edge to the post of the hospital table)
  3. Three clamps to connect the 40-40 and hospital table
  4. Three 40-40 end caps
  5. Three clamping lever ratcheted screws
  6. Two joining plates, five corner bracket, and associated M8 screws and nuts

                    The hospital table mount in isolation, with letters corresponding
                    to the items in the parts list.

                    The hospital table mount about to be clamped onto the hospital table,
                    with arrows indicating where the clamps join.

                    The hospital table mount attached to the hospital table, with the robot
                    arm attached to the mount.

4.1.3 Tripod Mount


Sometimes, it can help to have additional flexibility in where one sets up the robot. For such scenarios, we use a tripod mount. This mount consists of a Rockwell RK9033 tripod, with 40-40 welded onto the adjustable center rod. A tripod mount is a great fallback for studies where time or spatial constraints make it challenging to use the other two mounts.


                    The tripod mount, with the robot arm resting on the hospital table.

                    The tripod mount, folded up for stowing.

4.1.4 Mounting the E-Stop Button

Regardless of which of the aforementioned mounts we use for the robot, the emergency stop (e-stop) button must be mounted in an accessible location for the user to press. We typically use RAM mounts for this purpose, as they are commonly used to attach and adjust the position of accessories on power wheelchairs.


4.2 Electronics Mount

The electronics mount is made out of 1/4th inch thick acrylic sheets, which we laser-cut and glued together (using acrylic glue). This mount is designed to hold all the electronics of the system. It always holds the system's laptop, and depending on the use case, can optionally hold a router, a power station, and the power bricks associated with the laptop and robot's power supplies. This electronics mount is designed for use with various of the robot mounts above. For example, when the robot is mounted onto the wheelchair, the electronics mount can be hung from hooks on the back of the wheelchair. When the robot is mounted onto a hospital table, the electronics mount can be clamped onto the base of the hospital table, with the portable power station on the other side.

The electronics mount consists of the following parts (labeled in the images):

  1. Laser-cut acrylic:
    1. Front Plate
    2. Middle Plate
    3. Back (Router) Plate
    4. Bottom Plate
    5. Router Bottom Plate
    6. Side (Outlet) Plate
    7. L-Braces (3)
    8. Power Station Support (Base)
    9. Power Station Side (2)
  2. Acrylic glue
  3. 3D-printed supports (PLA):
    1. Router Side Plate
    2. 35mm Screw Support (5)
    3. 40mm Screw Support (5)
  4. Clamps (2) and corresponding M8 screws and nuts
  5. Assorted M4 screws, nuts, and thread spacers. The thread spacers are inserted into the "screw supports" mentioned above.
  6. One power strip
  7. Buckle straps and snap fasteners, velcro
  8. Grip tape

                    The electronics mount, showing where the different electronics would go.

                    A front and back view of the electronics mount, with labels
                    indicating pieces from the parts list.

                    A top and side view of the electronics mount, with labels
                    indicating pieces from the parts list.

                    The electronics mount hanging from a power wheelchair.

                    The electronics mount clamped onto a hospital table.

When attached to the hospital table mount, the robot arm and the electronics mount place disproportionate weight on one side of the table. To counteract this, we developed a counterweight, that consists of the below parts. Use acrylic glue to attach the bottom and side plates, screwn the hospital table aligners onto the bottom plate, screw the lid bracket into the inside of the side plates, place the weights inside, and screw the top plate on. Place the assembled counterweight over the hospital table legs, slide velcro through the slots in the hospital table aligners, and velcro it on.

  1. Laser-cut acrylic:
    1. Top Plate (1)
    2. Bottom Plate (1)
    3. Long Side Plate (2)
    4. Short Side Plate (2)
  2. Acrylic glue
  3. 3D-printed supports (PLA):
    1. Weight Aligner 1 (2)
    2. Weight Aligner 2
    3. Weight Aligner 3
    4. Weight Aligner 4
    5. Lid Bracket
  4. 10lb ankle weights (2)
  5. M4 screws and nuts.
  6. Velcro

                    Top: the outside of the counterweight, with labels indicating
                    the different  pieces from the parts list.
                    Bottom: the inside of the counterweight, with labels indicating
                    the different pieces from the parts list.



5. System Power

Several system components need power. There are three options for that power: (a) from the power wheelchair, (b) from a portable power station, or (c) from a wall outlet.

5.1 Power Wheelchair Power

Power wheelchairs typically have a specific (and sometimes proprietary) type of outlet that can be used to power accessories. Like with any other outlet type, there tends to be an ecosystem of extension cables, splitters, and more for the wheelchair's outlet type. Such accessories can taken from old wheelchairs, purchased from the manufacturer, or purchased from used parts stores like Liberty Mobility. Specifically, to power the system from our particular power wheelchair (24V), we use:

  1. A multi-link connector to provide more outlets
  2. A cable to deliver power to the robot, procured from Kinova and its distributors.
  3. Powering the laptop and router:
    1. A cable with the right outlet type for our wheelchair
    2. A power switch
    3. A travel laptop charger
    4. A power supply for the router

Note that developing the adapter to power the laptop and router from the wheelchair involved cutting some cables and soldering wires to the appropriate connectors. As such, developing the adapter requires some familiariaty with electrical engineering and appropriate safety precautions.


                    The cables and adapters used to power the robot, laptop, and router from the power wheelchair.

5.2 Portable Power Station or Wall Power

The electronics can alternatively be powered by wall power, or alternatively by a portable power station that provides sufficient wattage. Both these options use a 3-pronged plug (U.S.) standard for power, which is screwed into the electronics mount. The pictures show the power station powering the system on the wheelchair (useful if one hasn't created the adapter for that specific wheelchair's outlet) and on the hospital table. If need be, the same plug that inserts into the power station can be plugged into wall power, although that does reduce system portability.


                    This figure shows the system being powered by the portable power
                    station, hanging on the wheelchair.

                    This figure shows the system being powered by the portable power
                    station, attached to the hospital table.

5.3 Powering the Robot's Wrist Attachments

We power the eye-in-hand system through the robot's internal 12V power BUS. Because the Jaco® arm is designed for two or three fingers, the final link has power wires for up to three fingers. Since our system only uses two fingers, we draw power from the third finger's power wires, using a step-down voltage regulator to get the 5V necessary for the eye-in-hand system and the wireless F/T transmitter. Note that the process of redirecting power intended for one use to another use can be risky. Thus, we intentionally do not include detailed instructions here. Instead, we recommend consulting with the manufacturers of your robot arm and with electrical safety experts before attempting to draw power from the robot arm to power additional attachments.

The wireless F/T transmitter requires micro-USB power. We provide that power from the Jetson Nano. One option is to directly connect a cable between them. However, this prevents the robot arm from being able to let go of the fork (since the fork assembly can be let go of, but the eye-in-hand system cannot). Instead, we use magnetic connectors to establish the connection between the Jetson Nano's USB port and the wireless F/T transmitter's micro-USB port. Thus, there is a connection when the robot is holding the fork, but the connection is broken when the robot lets go of the fork.







Bibtex

@inproceedings{nanavati2025lessons,
  title={Lessons Learned from Designing and Evaluating a Robot-assisted Feeding System for Out-of-lab Use},
  author={Nanavati, Amal and Gordon, Ethan K and Kessler Faulkner, Taylor A and Song, Yuxin (Ray) and Ko, Johnathan and Schrenk, Tyler and Nguyen, Vy and Zhu, Bernie Hao and Bolotski, Haya and Kashyap, Atharva and Kutty, Sriram and Karim, Raida and Rainbolt, Liander and Scalise, Rosario and Song, Hanjun and Qu, Ramon and Cakmak, Maya and Srinivasa, Siddhartha S},
  booktitle={Proceedings of the 2025 ACM/IEEE International Conference on Human-Robot Interaction},
  year={2025}
}