A collection of robotics algorithms (Kinematics, Dynamics, Control) based on Pranav Bhounsule's bootcamp, fully refactored and modernized for the new DeepMind mujoco Python bindings.
The original course uses the deprecated mujoco-py wrapper which no longer works on modern Linux systems. This repository contains the modernized translations of those algorithms using the native DeepMind API.
- Language: Python 3.10+
- Physics Engine: DeepMind MuJoCo (2.x/3.x)
- IDE: VS Code (Linux)
-
Projectile Motion: Basic physics and simulation.
-
2-Link Manipulator: Double pendulum dynamics and chaotic motion.

- File:
3d_reach.py - Description: Upgraded the system to a 3-DOF (Degree of Freedom) robotic arm capable of moving in 3D space (X, Y, Z).
- Math Used: Implements Jacobian Inverse Kinematics with Damping (
mu_jacSiteandnumpy.linalg.pinv) to solve for joint angles based on a 3D target position.
- File:
car.py - Description: A simulation of a 3-wheeled differential drive robot (like a Roomba or Pioneer robot).
- Physics Features:
- Implements a Skid-Steering kinematic model.
- Uses a Free Joint (6DOF) to allow navigation anywhere in the environment.
- Features a friction-less caster wheel for stability.
- Control Logic: A state-machine loop that executes a "Figure 8" driving pattern (Forward -> Left Turn -> Right Turn -> Spin).
-
File:
7_projectile_drag.py - Description: A physics experiment comparing ideal motion vs. real-world air resistance.
-
The Physics:
- Red Ball: Vacuum physics (Ideal Parabola).
-
Blue Ball: Applies a custom drag force
$F = -c \cdot v$ injected directly into the simulation loop.
-
Implementation: Uses
data.qfrc_appliedto apply custom forces to specific degrees of freedom at every simulation step.
- File:
8_bouncing.py - Description: Demonstrates how to control the Coefficient of Restitution (Bounciness) using MuJoCo's
solrefparameters. - The Setup (Left to Right):
- Red: High Damping (Inelastic / Mud).
- Blue: Zero Damping (Elastic / Superball).
- Green: Medium Damping (Basketball).
- Key Concept: Shows how we can tune the simulation to model different material properties, from energy-absorbing clay to high-energy rubber.


