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

Question about generalizing a system

asked 2012-02-13 07:07:50 -0600

updated 2012-02-13 11:52:45 -0600

joq gravatar image

This question is about the best practices when generalizing a working ROS stack. I have a system that has many nodes working together to control a dynamic system. There is a vision processing node, an estimation node, a controller node, a wireless communication node, and a keyboard interface node (that allows the user to control all of the rest of the system). The way that the system runs is that there are a few rosparams that govern everything. For instance, there is a param that says what state the system is in e.g. calibration, running, idling, etc.; there is a param that says where the robot is supposed to start in a world frame (used for calibration and initializing an ekf); and there is a param that sets an index that tells my wireless system which robot I am talking to.

I have this system fully debugged and working nicely, and now I am looking to run multiple robots at the same time. I could make a parameter that specifies the number of robots I'm using, and then in every node add for-loops around all of the relevant pieces of code to handle multiple robots. However it seems to me that there should be a far easier solution. If I can just start up multiple instances of each node, and then have each node only have access to parameters in its own namespace, then I can create the functionality I want by just creating a bit more complicated launch file.

Does this seem possible? Where should I go to look for examples?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2012-02-13 08:04:52 -0600

DimitriProsser gravatar image

The easiest ways to do this is to use the <group> tag in a roslaunch XML. You can find that documentation here. Essentially, it would just launch each "system" (aka group of nodes) under a unique namespace. Thus, each robot would operate with its own set of parameters, and your launch file is actually quite simple.

edit flag offensive delete link more

Question Tools

Stats

Asked: 2012-02-13 07:07:50 -0600

Seen: 294 times

Last updated: Feb 13 '12