Rosanswers logo

Hi to the forum.

I am new to ROS (just getting around in the documentation) but I am not new to hardware design. Been doing in for nearly 40 years.

Would it be correct to say that ROS will work on embedded systems which can support a linux kernel? Is ROS itself built around a linux kernel?

Since I am a hardware engineer I am wondering about the hardware requirements of ROS. I have been looking through the documentation but have not come up with anything WRT hardware requirements. That is, are there restrictions concerning processors, RAM, communication protocols? The drivers included in ROS must have hardware interface requirements.

I expect that there are specific models of "off the shelf" boards, such as the Pi, (and others) but there must be more generalized hardware requirements. Where can I find this kind of information?

Thank You Tom

Originally posted by miner_tom on ROS Answers with karma: 21 on 2018-01-09

Post score: 2


1 Answer 1


Rosanswers logo

The short answer is that it depends on what you want to do.

It's best not to think of ROS as a single project with hardware requirements. It's better to think of it as a collection of individual packages, either with their own hardware requirements, and often those hardware requirements vary significantly based on your application.

The ROS middleware and the talker tutorials can be run on just about anything that will run a Linux kernel.

Each of the hardware driver packages has its own interface requirements for the hardware that it supports, and that is usually listed on the ROS wiki page for that hardware. These drivers usually have minimal CPU and memory requirements.

For ROS algorithms, the hardware requirements can be very difficult to determine because they are very dependent on the parameter settings. For example, the performance and memory usage of the move_base package scales with the square of the local map size, and scales linearly with the update rate. There are simply too many parameters to characterize the performance space, and the choice of parameters like map size and resolution often depends on the size, speed, and sensing capability of your robot, and the size of your operating environment. At best, you can look for similar robots running the same ROS packages that you're interested in, and look or ask for information about their hardware and parameters.

In general, I've seen a few groups running SLAM with a Raspberry Pi 3 mounted on a Neato. It seems to work well, but they're using lower resolutions, low speeds and low update rates.

If you're going for an ARM processor, choose one that has support for one of the Ubuntu versions that is supported by ROS. This will allow you to install binary ROS packages instead of building ROS from source on your target platform. (Stay away from the original Raspberry Pi; they use an ARMv6 instruction instead of the more modern ARMv7 that is supported by Ubuntu and Debian, and it makes them that much harder to support).

Originally posted by ahendrix with karma: 47576 on 2018-01-10

This answer was ACCEPTED on the original site

Post score: 3

Original comments

Comment by gvdhoorn on 2018-01-10:\

t's best not to think of ROS as a single project with hardware requirements

+100 to this.

ROS isn't a monolithic application, and although it seems like a sane enough question, asking whether ROS "can do something" or about its requirements is strange if you start to accept the fact that it's ..

Comment by gvdhoorn on 2018-01-10:
.. essentially a bunch of regular programs which happen to use networking as their primary form of data input and output.

The question then quickly becomes: "ok, but what are the requirements of those programs?".

And that actually does make sense.

Comment by saurabh on 2018-08-29:
@gvdhoorn after all the development has been done, is it possible to include all the dependencies and our own code in a single executable and then port it to an embedded platform. If so, can you please provide some suitable link.

Comment by gvdhoorn on 2018-08-29:
re: single executable: perhaps, with a lot of work, but it will completely depend on what dependencies your application has.

If you're looking for a scalable solution for deployment to embedded platforms, look at bmwcarit/meta-ros.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.