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

Should I be using ROS?

asked 2013-09-15 19:53:32 -0600

nc61 gravatar image

updated 2013-09-16 02:10:54 -0600

felix k gravatar image

I'm making a pretty basic robot powered by a single board Linux computer. It will communicate serially with one servo controller and one microcontroller. It takes in sensor data from both and outputs commands back (there is also a camera, and I will be doing onboard image processing). I want to learn ROS, but I'm not sure how to use it effectively in this situation. Is the normal procedure to make a node that repeatedly reads sensor data and publishes it to a node that reacts to this data and sends it back out? Is there a more effective way to use ROS? How do I know that multiple nodes using serial ports won't 'overlap' and cause errors?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2013-09-16 08:40:32 -0600

William gravatar image

You should only ever have one node which interacts with the serial port.

There are a few reasons you might consider using ROS. One way to take advantage of ROS, would be to take all of the data you're receiving over the serial port and publishing it as ROS topics. This way you can record it and play it back off-line using rosbag, you can introspect it on the live system easily using rostopic echo, rqt_plot, or other rqt plugins, and you can visualize it (depending of the type of data it is) in rviz.

The other way you can take advantage of ROS would be with your camera. ROS provides tools for recording, playing back, and visualizing the camera data. It also probably has a driver for your camera. ROS has good integration with opencv, so if you are using opencv for your image processing. It's is really nice to write a node which reads camera data, does some decision making, and publishes commands to the robot base, because that node can be developed with recorded data on your desktop, and then the exact same node, without modification, can be run on the live robot. ROS does a good job of abstracting the source of the data, whether it is live data, recorded data, or simulated data.

Hopefully that helps you decide whether or not to use ROS.

edit flag offensive delete link more

Question Tools


Asked: 2013-09-15 19:53:32 -0600

Seen: 309 times

Last updated: Sep 16 '13