Saturday, February 21, 2015

Loadable Trajectory Modules

Michael Haberler has recently succeeded in separating the trajectory planner from the motion controller and made it a new HAL vtable module.  While the details quickly get into technical programming issues, this seemingly esoteric feature actually means big changes are possible with higher level configurations.

The new vtable modules allows HAL components, kinematics modules, and now the trajectory planner to be loaded and instantiated dynamically.  That means you no longer need to know ahead of time how many of a particular component your HAL file needs, and you can do things like load more than one kinematics module or trajectory planner.

What good is that, you ask?  Well, the ability to dynamically load modules means you can craft modular HAL files without jumping through hoops to add up all the modules before you load anything.  One HAL file might instantiate three PID loops for XYZ motion, and another included HAL file might add two more PIDs for temperature control.  Even better, since you can use Python to work with HAL, you could have a Python program setup a complete HAL configuration based on a few parameters with a library of subroutines to craft basic modules like a servo driven axis, a stepper driven axis, a temperature control loop, etc.

As for being able to dynamically load things like the trajectory planner and kinematics modules, that means you can now essentially have more than one "machine" running in the same HAL space.  This provides an advanced way to handle things like tool changers and is helpful anywhere you need more than one control system.  Perhaps you have a pick-and-place machine that includes a separate mechanism to place finished PCBs on a conveyer and load a new blank PCB.  Maybe your robot arm also has a gimbal mounted camera you want to control independently.  There are lots of times having more than one trajectory planner and kinematics module available is very helpful once you go beyond the world of traditional CNC machine tool applications.

No comments:

Post a Comment