Ada client library for ROS2

Hello,

I’m just starting to write an Ada client library for ROS2. The Ada language is a strong fit for the aims of the ROS2 project: it was designed with safety, real time, embedded, high integrity, long maintenance concerns in mind and is today one of the languages of choice in industries like aerospace, air control, and the like (see e.g. here for a nice overview).

I’m going to work mostly full time on this for the next three months, and assuming it reaches an acceptable level of maturity I intend to continue maintaining it for the foreseeable future, since it will be a tool used internally in our laboratory.

At the moment there is nothing available (I’m still in the documentation phase) but any progress will be published here: https://github.com/ada-ros/rclada

Besides announcing this here for anyone interested, I welcome any pointers, suggestions or experiences on writing a new client library for ROS2 that you may have. I’m reading all I can find out there but if you have some direct advice it will be much appreciated.

4 Likes

Wow, that’s really cool. A lot of my former colleagues favored Ada (for avionics project) exactly due to the points you mentioned. They would love to play around with rclada I guess.

I would love to have that much free time allowing me to contribute more than I actually do :slight_smile:

Some time ago I collected some high level “finger pointers” in a short list for some probable implementation of a ROS2 client library in D. It was meant for people which never worked with ROS2 before. Anyway probably helpful…

Thanks a lot, Florian. That sure helps in getting my bearings around.

As a followup to my original post, and in the wake of the ROS2 Bouncy release, it’s my pleasure to announce that RCLAda has reached its first milestone and is ready for public use.

RCLAda comes with several examples mimicking the ones in the C++/Python client libs for topics and services. There are also examples of concurrent event processing and custom memory allocators. At this time the API might still change a bit but all critical functionality should be in place for initial testing.

Currently missing, and the target for the next release, are options for QoS (which for now is always at the default setting) and static type generation of messages (which is currently sidestepped by using the introspection features of ROS2 and Ada typed reference views).

Check it out at https://github.com/ada-ros/ada4ros2

Cheers,
Álex

3 Likes

That sounds great! You might want to consider releasing the individual packages into Bouncy to make them available as Debian packages.

1 Like

Yup, that’s among the list of pending issues I have :slight_smile:

1 Like