Robotics FASE Toolbox

Project information

  • Category: Robotics / Software Development
  • Focus: Robotic Modelling Symbolic Computing Kinematics & Dynamics Mobile Robotics Simulation Controllability Analysis
  • Tech Stack: Python SymPy NumPy Matplotlib
  • Status: 🚧 Work in Progress
  • Official Repository

Overview

A symbolic robotics toolbox built in Python using SymPy, designed to model, analyse, and control robotic systems using exact symbolic mathematics rather than numerical approximations. It covers two domains: serial manipulators and autonomous mobile robots (AMR).

For manipulators, given a joint string (e.g. "RRR" or "2R1P"), the toolbox automatically computes forward kinematics via DH parameters, the geometric Jacobian $J(q)$, and the full Lagrangian dynamics — inertia matrix $M(q)$, Coriolis vector $c(q,\dot{q})$, and gravity vector $G(q)$ — with configurable per-link inertia-tensor assumptions.

The AMR module derives kinematic models $\dot{q} = G(q)\,u$ from explicit Pfaffian constraints or from built-in presets (Unicycle, Bicycle RWD/FWD, Car-with-Trailer with articulated body support). Models are integrated numerically (Euler / RK4) through a multi-robot Environment, rendered via a static and animated Displayer, and analysed for controllability through iterated Lie brackets.

Key Elements

Manipulator Modelling

From a joint string, automatically derives the DH kinematic chain, geometric Jacobian, and full Lagrangian dynamics with configurable per-link inertia-tensor assumptions.

$$\tau = M(q)\ddot{q} + c(q,\dot{q}) + G(q)$$

Kinematic Model Derivation

Builds $\dot{q} = G(q)\,u$ from Pfaffian constraints (null-space method) or from four built-in presets, including a 5-DOF Car-with-Trailer with articulated body rendering.

$$A^\top(q)\,\dot{q} = 0 \;\Rightarrow\; G = \ker A^\top$$

Multi-Robot Simulation

A shared Environment runs multiple robots with independent inputs via Euler or RK4, logging all trajectories. The Displayer renders them as static or frame-by-frame animated plots.

Controllability Analysis

Computes the involutive closure of the input distribution via iterated Lie brackets, checking whether the control matrix reaches full rank (STLC).

$$[g_i,g_j] = \tfrac{\partial g_j}{\partial q}g_i - \tfrac{\partial g_i}{\partial q}g_j$$

Contacts

Get in touch with me!