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.
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
The Controller package reads the robot file(AMBF YAML) which AMBF uses and then loads an appropriate solver from the solvers available.
Solver package is developed in for pluggable (addon) method of extending the supporting robots. A new solver (may be for a different kind of kinematic chain, which cannot be solved by existing solvers) can be implemented just by creating a subclass of "BaseSolver" class and implementing all the abstact functions. Once this file is placed in the appropriate folder, the solver is available right away, also without interfering the existing system.
Commands and communication to the controller is done using ROS-topics. Below is an example code written to control a robot in AMBF using ROS. (given 3 waypoints, move the robot 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.