Creating a Softwar Architecture for a rescue bot using ROS as a basis

Hi everyone,

I am a 36-year-old bachelor’s student from Austria in my fifth semester. I have to write two papers to get my degree; both will be centred around robots.

To give a little bit of context:
The FH Campus Vienna has a robotics team that is designing and building a disaster relief robot under the name of “ResQbots”. You can look here for more information and a picture of the prototype:

Last semester, a colleague and I implemented this robot’s motor control and power supply system. It became quickly apparent that the design is a dead end if this robot should tackle any complex task. The most problematic was the missing space for more powerful hardware that could run autonomous functions.

So, as the topic for the first paper, my colleague and I will redesign the fundamental aspects of this bot from the ground up. He will tackle the hardware architecture, and I will design or propose some designs for the software architecture.
It has always been the idea to use ROS2 for the bot, so it is only natural for me to take this as a basis and try to use as much as possible “out of the box” what ROS has to offer. This would leave more time for designing bespoke solutions where necessary.

I plan to post progress updates here and am happy for any feedback, encouragement, or general input. Also, feel free to ask me about the project or the paper if you are interested.

For now, I have one topic I would like input on: I want to try keeping the architecture as modular as possible. As a robot like this can never know what obstacles it may face, I think it may be interesting to design it as a “platform” that makes it easy to integrate new sensors or other capabilities later. From the first look, it seems the model ROS uses to carry out tasks is well suited for such a modular design. But do any of you know of any projects that tried something like that, or maybe you have tried something like that and have tips on what to look out for or be wary of?


Do it! And please do post progress updates.

design it as a “platform” that makes it easy to integrate new sensors or other capabilities later

The ROS / ROS 2 sensor driver model is very solid. It provides a unified way to bring data into the unified time domain and unified coordinate system.

I work in automotive, so I’m a bit skewed perhaps, but the Autoware.Auto project (link) is a great, just big enough, and yet just small enough sized project to approach and dissect. If you spend a little time with that stack for any of the active or previous ODDs, you’ll get a good sense of how to define the interfaces for your systems, and you’ll also have tangible examples of how to write drivers for various hardware devices and sensors.