This is a robotics project for the CS5478 - Intelligent Robots
class taught by Lin Shao at NUS.
Project lead by :
- Guilhem Mathieux @guimath
- Louth Bin Rawshan @louth-bin
- Nuran Kasthuriarachchi @nuran
The primary objective of this project is to design a robot capable of assisting with everyday tasks. Specifically, our team will concentrate on a common activity in daily routines: opening a bottle and subsequently pouring its contents into a glass. We aim to create a robotic system with the following capabilities
- Grasp the cap and unscrew it
- Grasp the bottle and move it to a position above the glass
- Adjust the bottle’s position over the glass and pour without spillage
Initially we used the mujoco simulator.
All python libraries need to run MujocoController are in the requirements The Mujoco210 binaries need to be installed seperately (see mujoco-py installation)
We employed baseline control algorithms to direct the arm to specified locations and manage the gripper’s operations.This involved:
- Utilizing inverse kinematics to deduce joint values configuration for the desired end effector pose.
- Employing PID controllers to navigate each joint from its present q-value towards the goal q-value.
Utilizing this ability to position the arm at desired locations, we programmed the following procedure:
- Relocate end-effector within the bottle’s grasping range.
- Secure the bottle ensuring no slippage.
- Transport the bottle to a new position while maintaining its upright position
- Tip it over
To improve our motion planning algorithm, we moved on the differentiable simulator Nimblephysics.
The NimbleController requires pytorch and nimblephysics (the original nimblephysics library should be enough to run the code, but we recommend installing the Jade/Adamas fork as this is what we used and it provides better collision detection)
This change of simulator allowed for much more in depth motion planning and open the door to a lot of new possibilities.
Here is a list of all actions done :
- Move the arm just above the cap
- Uncap the bottle
- Grasp the bottle
- Move the bottle and pour its contents
For much more detailed information see the project report