# How it works
The RoboDK are python scripts that are included in the repository as a submodule (don't forget to initialize the submodules otherwise it won't work). I have added a ``__init__.py`` to make sure Python treats the directory as a package.
The RoboDK post processors have a common interface for every robot and also specialized functions/members.
I have described ROS services that exposes the common interface.
If the services are called with the right arguments and in the right order it is possible to generate programs for different robots. (at the moment only Motoman and Fanuc R30ia are in my test package)
There are many with this approach:
- How to add custom commands for each post processor? (eg: ``GO=6`` on Fanuc, which may not have an equivalent on other robots)
- How to handle external axes? groups?
- How to add an option on a pose? (I use it a lot on Fanuc, not sure if it is useful for other robots)
- How to handle multi-program generation? (when generating a lot of poses, it is common to split the program into multiple programs)