AMBF Controller

AMBF Controller

A generic Forward and Inverse Kinematics Solver for Robotic arms with controller connecting to AMBF (Asynchronous Multi-Body Framework) simulator.

AMBF is a ground breaking work by Adnan Munawar, a Multi-body simulator where all bodies (even every link of the body) is an independent entity, a radically different approach for simulating robots. This is one of the few simulators which natively support parallel mechanisms. Check the video below introducing AMBF.

Asynchronous Multi-Body Framework (AMBF) Simulator — YouTube

Our work had been to develop a generic FK-IK solver for the simulator. It is developed as a ROS package which can be run with AMBF.

Architecture of Controller

AMBF Controller architecture diagram AMBF Controller architecture

The Controller package reads the robot file (AMBF YAML) which AMBF uses and then loads an appropriate solver from the solvers available.

The Solver package is developed using a pluggable (addon) method of extending the supported robots. A new solver (for a different kind of kinematic chain that cannot be solved by existing solvers) can be implemented by creating a subclass of the BaseSolver class and implementing all the abstract functions. Once this file is placed in the appropriate folder, the solver is available right away, without interfering with the existing system.

Commands and communication to the controller is done using ROS topics. Below is an example of code written to control a robot in AMBF using ROS (given 3 waypoints, the robot moves in linear steps).

Testing of Solvers

For a custom solver created for serial manipulators, this is how it was tested by solving for Forward kinematics and giving the same input to inverse — and vice versa — to expect the robot to be in the same position.