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

Custom robot and ROS

asked 2014-03-04 05:31:33 -0500

Maya gravatar image


My question is kind of really general in some sense but I don't think it's an endless question. I'm currently trying to build a custom robot similar to a turtle bot and I'm thinking about having ROS onboard, having heard lot of good things about it. So I'm fairly familiar with how everything is working but some stuff don't really make sense to me. For exemple it seems to be a pain to have ROS running on a custom robot which limit a lot its use from my point of vue.

It is really hard to find information about start from scratch a robot with ROS for example and it seems really complicated to build from scratch something especially because of the motor part. So, either you use what is already available or it feels to me that the other choice is pretty much like building everything again but just following a certain "convention". I see no way to reuse ROS code on a custom robot. I can just see way of adding sensor, encoder and stuff on an already on ROS robot. And when I search how to build ROS on a custom robot, I can not find any clear information on what to do or where to start.

I'm pretty sure my conception is wrong and I'm just waiting for someone to prove me wrong. I've been reading a lot about ROS those day and my head is full of new stuff so I might be confusing everything.

So in the end my question would be : is there an "easy way" to put ROS on a custom robot or does it has to be a painful process ? Am I missing something or is it just not in ROS philosophy ?

I'm sorry if I'm not really clear or if does not really make sense. Just tell me and I'll try to reformulate it.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2014-03-04 06:05:11 -0500

brice rebsamen gravatar image

Is there an easy way to put ROS on a custom robot?

It depends what you are comparing it to... Creating a robot from scratch is not easy, no matter what software you use. You will have to write drivers for your actuators and sensors anyway.

At least ROS gives you: - good design conventions - the messaging part that helps you write modular code - the ros parameter server to help you configure your code - the logging and visualization tool that will help you debug

then once the base of your robot is working with ROS it will be easier to plug in new sensors (they might be a ROS driver for them), and new algorithms (think localization and navigation for instance)

To get started: let's say you have non ROS drivers for your robot or some of its parts. It's should be relatively straight forward to wrap them in ROS. You might have to create a few custom messages, and wrap the driver calls in some nodes. If you don't have any existing code, then starting from scratch is not difficult either (if you know how to write drivers, but this has nothing to do with ROS).

Good luck

edit flag offensive delete link more


So basically the idea is mostly to have a convention and then reusable code. It is more a question of help "in the long term". Thanks as well for the explanation about the integration of the non ROS driver, I was getting confused about that.

Maya gravatar image Maya  ( 2014-03-04 14:39:29 -0500 )edit

answered 2014-03-07 13:12:17 -0500

Ryan gravatar image

It can be pretty straightforward. In the end, the easiest way to get started if you have nothing is to use rosserial on an Arduino to convert a Twist command into a set of motor outputs. If you do have a platform driver already, get it compiling with catkin, subscribe to a Twist, and add a basic relationship between the driver output and the Twist input.

Then, I would suggest looking at some of the existing guidelines for advice on extending that driver (ex. REP 103, REP 105, REP 135, REP 107)

edit flag offensive delete link more


Rosserial is definitely the best way, especially if you use an arduino to develop the real-time part of your robot (speed controller). There's great integration there that'll help you get started quickly.

paulbovbel gravatar image paulbovbel  ( 2014-03-07 17:36:40 -0500 )edit

In the simplest case for ROS development on a brand new mobile robot, you have to write the 'driver' that takes in cmd_vel speed commands from ROS, controls the motors to reach those velocities, and then outputs odometry data. Everything else like sensor input, navigation, and visualization is plug and play, as long as you use sensors on your robot that already have ROS drivers developed for them.

paulbovbel gravatar image paulbovbel  ( 2014-03-07 17:37:11 -0500 )edit

Question Tools



Asked: 2014-03-04 05:31:33 -0500

Seen: 1,712 times

Last updated: Mar 07 '14