Slightly off-topic: two tools for making Fanuc development a little easier

For some time now I’ve worked on two tools that may make development of Karel programs for Fanuc controllers a little easier. As there might be developers here who work with Fanuc robots – outside of ROS(-Industrial) – and may be interested in this, I thought I’d post a link to them in this Discourse category.

The first is ktransw. It’s a wrapper around the regular ktrans.exe (the Karel compiler). The wrapper is not a compiler itself, but adds some functionality which I found missing from ktrans:

  • preprocessor support (based on GPP): include guards, macros, defines, conditional compilation and inclusion, etc
  • gcc style dependency tracking (ie: -MM -M -MT -MF -MP support)
  • support for multiple include directories

and some other minor conveniences.

It does not integrate with Roboguide, but is intended to be used from the command line.

Manual command line invocation gets tedious pretty quickly, so the second tool tries to provide a solution for that: rossum. This is a CMake like “makefile generator” that supports a workspace-style workflow. It introduces a package based approach where packages have manifests, export include files (headers) and buildable targets which rossum consumes and generates a single top-level .ninja file for. Building an entire workspace requires only ninja to be invoked. Dependency tracking and build ordering (for generated code fi) is built-in.

Together with ktransw, this enables a more modern Karel development workflow where reusable libraries can be created and some form of redistributable package management can be integrated.

An example workspace may be found here: rossum_example_ws.

Right now only Karel is supported, but a member of the community is looking into adding TP support (ie: .ls -> .tp) to rossum.

2 Likes