Anuj Natraj

Resume LinkedIn Github

Project Title & GitHub Link

KUKA Mobile Manipulator Simulation

Technologies

Python, FK, IK, PI Control, Coppeliasim

Project

The aim of this project was to use the KUKA Youbot to move a block and simulate this in Coppelisim to verify the controller gains. The implementation first generates tarjectories of the end-effector then applies a feedback control to move the Youbot.



Video Demo

This video show the best behaviour using gains of Kp 5 and Ki 0.1.



Algorithm Implementation

The function NextState calculates the robot’s configuration at the next time step using first-order Euler method. It takes in the intial configuration of the robot, the velocity to be applied, the time step and the max velocities that the joints can take.

The kinematic model is given by:

Kinematics

where u is the driving angular speed, Vb is the chassis’ planar twist, r is the radius of the wheel, l is the distance from the center of the robot frame to the wheel in the x axis, and w is the distance from the center of the robot to the wheel center in the y axis. Using this we update the odometry by using the formula:

Odometry

This is used to update the position of the robot based on the twist Vb.

The function TrajectoryGenerator generates the reference trajectory for the end-effector frame {e}. This trajectory consists of eight concatenated trajectory segments:

  • End_effector initial configuration to standoff from cube initial configuration in 4 seconds
  • Standoff from cube initial configuration to cube initial configuration in 4 seconds
  • Gripper close in 1 second
  • Cube initial configuration to standoff from cube initial configuration in 4 seconds
  • Standoff from cube initial configuration to standoff from cube goal configuration in 4 seconds
  • Standoff from cube goal configuration to cube goal configuration in 4 seconds
  • Gripper open in 1 second
  • Cube goal configuration to standoff from cube goal configuration in 4 seconds


In each step, the algorithm uses the ScrewTrajectory function from the modern robotics python library. The function takes in the start and end Transformation of the gripper. It generates discrete trajectory as a list of end-effector transformation matrices using the third-order/ fifth-order polynomial time-scaling method.

The FeedbackControl function is used to calculate the kinematic task-space feedforward plus feedback control law, as shown:

Feedback