ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

What hardware platforms are compatible with ROS?

asked 2018-01-09 22:22:18 -0600

miner_tom gravatar image

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

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2018-01-09 23:58:37 -0600

ahendrix gravatar image

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).

edit flag offensive delete link more


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 ..

gvdhoorn gravatar image gvdhoorn  ( 2018-01-10 02:20:23 -0600 )edit

.. 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.

gvdhoorn gravatar image gvdhoorn  ( 2018-01-10 02:21:31 -0600 )edit

@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.

saurabh gravatar image saurabh  ( 2018-08-29 02:08:00 -0600 )edit

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.

gvdhoorn gravatar image gvdhoorn  ( 2018-08-29 02:09:55 -0600 )edit

Question Tools

1 follower


Asked: 2018-01-09 22:22:18 -0600

Seen: 5,898 times

Last updated: Jan 09 '18