← Back to Portfolio

Mobile Manipulator – KUKA YouBot Capstone

Skills: Python, Motion Planning, Robot Kinematics, Task-Space Control, Joint Limits, Mobile Manipulation, Feedback Control, CoppeliaSim Simulation

GitHub Repo

Project Overview

This capstone project implements motion planning and kinematic task-space feedback control of a KUKA YouBot mobile manipulator. The goal was to autonomously complete a pick-and-place task using a 5-DOF arm and mecanum wheels, simulated in CoppeliaSim.

Key features include:

Trajectory Generator

The reference trajectory is defined by 8 via points for the pick-and-place task, including standoff positions, cube approach, and gripper operations. Using Modern Robotics Cartesian_Trajectory, the end-effector path is interpolated in SE(3) coordinates.

Pseudocode:

  1. Def Trajectory_Generator()
  2. Unpack via points
  3. For each via point: compute move time and generate Cartesian trajectory
  4. Save trajectory with gripper states to CSV

Feedback Controller

The mobile manipulator is controlled with task-space PI feedback with feed-forward control. Twist error X_err is calculated between the desired and current end-effector configurations, and used to generate an optimal twist response to minimize this error:

New task results

Joint speeds are computed using a concatenated Jacobian of wheels (J_base) and arm (J_arm), with pseudoinverse to solve for least-squares optimal joint velocities.

New task results
Using forward euler integration, we can simulate the behavior of the system and observe how well the control system is tuned. See the comparison below in the twist error plots and corresponding simulations.
New task results New task results
Comparison of well controlled system on the left vs. a poorly controlled system (underdamped) on the right

Joint Limits

Joint limits prevent self-collision and infeasible configurations. Violations are detected during the FeedbackControl step, and offending joints are excluded from the pseudoinverse calculation. This ensures the robot maintains a physically achievable trajectory while completing the task.

Comparison of robot movement without joint limits on the left vs. with joint limits on the right

Reflections

This project was my first foray into the world of robotic control and I have to say - it's got me hooked. The combination of controls engineering, computer science, and mechanical engineering keeps in interesting from start to finish. I am looking forward to more projects like this!