All projects

PROJECT 01 / ROBOT INTERACTION

UR5e Joystick Control.

From a gamepad to robot motion.

A ROS 2 teleoperation tool that maps a gamepad to UR5e end-effector motion and Robotiq gripper commands.

  • ROS 2
  • Python
  • UR5e
  • Robotiq
HUMAN INPUT → ROBOT MOTIONSCHEMATIC
01 / TELEOP COMMAND IN GAMEPAD ARTICULATED ARM MOTION OUT
Control flowRobotics tool

01 / OVERVIEW

The idea.

A compact bridge between human input and a robot arm. The control node reads joystick input and the current joint configuration, converts requested end-effector motion into joint velocities, and publishes commands to the arm’s velocity controller.

  • Six-axis Cartesian input
  • Jacobian-based velocity mapping
  • Gripper control from the same gamepad

02 / IMPLEMENTATION

How it works.

Control flow
  1. Gamepad input

    Joystick axes specify translation and rotation.

  2. Cartesian velocity

    Six motion components describe the requested end-effector movement.

  3. Jacobian mapping

    Current joint angles determine the velocity transformation.

  4. Joint commands

    Joint velocities are published to the ROS 2 controller.

Joint-state feedback supplies the robot configuration. Gamepad buttons control the gripper alongside arm motion.

Move in end-effector space

Joystick axes map to three translational and three rotational velocity components. The node waits for joint-state feedback before calculating motion commands.

Translate motion into joint velocities

The implementation computes a geometric Jacobian from the arm’s kinematic parameters and current joint angles. Its pseudoinverse maps the requested end-effector velocity to six joint velocities.

Keep arm and gripper input together

Two gamepad buttons adjust the Robotiq gripper position. A ROS 2 launch file starts the joystick driver and control node together.

PROJECT CONTEXT

Code and launch configuration for a hardware-dependent ROS 2 setup, using a UR5e velocity controller and a Robotiq gripper.

03 / CODE

Explore the code.

A few useful places to start in the public repository.