← All projects

Robotics / Software

Space Panda.

In progress

A force-feedback teleoperation prototype that controls a UR20 using a Franka Emika Panda for hard-surface grinding tasks.

Using Space Panda to guide the UR20 while grinding a weld

The idea

During my eight-week summer internship at MFI, I explored a different way to control a robot: move one arm by hand, have a second arm follow, and feel the forces it encounters. The goal was to use a Franka Emika Panda as a teleoperation device with force feedback from the UR20’s end effector.

The name

The name combines the Franka Emika Panda with the SpaceMouse, the teleoperation device I was trying to improve on.

Initial challenges

Mounting the Panda was fairly easy: I built a support frame from aluminum extrusion. Integrating it into our ROS 2 environment proved much harder than expected. Since our specific robot was no longer supported by the software, I had to create a custom version of libfranka and my own fork of franka_ros2.

Developing the input method

My first approach mapped the Panda’s estimated end-effector forces to motion, but the result was difficult to guide naturally. Commanding zero joint torque while retaining the robot’s internal gravity compensation gave the operator a much easier way to move the arm.

Linking the robots

I then developed space_panda_link, a ROS 2 node that links the two robots and supports motion scaling. On the UR20, MoveIt Servo’s Pose Servo follows the Panda’s target pose.

Diagram linking Panda motion to the UR20 and returning force feedback to the Panda, with filtering, scaling, and virtual damping
Motion travels from the Panda to the UR20; measured contact forces return as force feedback.
UR20 following the Panda.

Contact and force feedback

A custom ros2_control controller uses the transpose of the Panda’s Jacobian to translate a desired end-effector force or torque into joint torques that the operator can feel. Direct force coupling worked during soft contact, but rigid surfaces caused sharp force spikes and overcorrection. I introduced contact-dependent damping, filtered the sensor data, and tuned the proportional gains to make the prototype usable.

Guiding the UR20 with force feedback through the Panda.

Results and next steps

Multiple users tried the system at the AIDF demo. The prototype demonstrated force-feedback teleoperation, but it did not yet feel like holding the remote tool directly. Still, I was able to demonstrate grinding with the system:

Grinding with Space Panda.

Near the end of the internship, I began exploring an admittance controller for the UR20. It was not yet functional and remains the next step toward more compliant contact.

More builds. More experiments.Back to the collection