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

Navigation Stack Computation from External Computer

asked 2015-04-03 02:43:11 -0600

ronaldh12 gravatar image

Hello everyone!

I am working on a ROS Indigo project where we are going to be reading all of our sensor information from an Ubuntu Trusty install on a BeagleBone Black Rev C and sending that information over the appropriate topics (odometry, laser scan topics, etc) to an external computer over the network (also Ubuntu Trusty running ROS Indigo), which will then send back the appropriate twist messages to the base controller node that exists within the workspace on the BeagleBone Black. So, the only nodes that should be running on the BeagleBone are the IMU Node, the SICK LMS wrapper node, and the tf_configuration nodes (We still haven't figured out how to get those set up exactly, so insight on that is also appreciated).

I had been following the tutorial here:

My only concern is that the only way for me to get my_robot_name_2dnav package to compile correctly with the 'move_base' dependency that is apparently required was for me to install 'ros-indigo-navigation' on the BeagleBone. My concern with this is that we don't want the BeagleBone to be computing any of this information as it is at almost 80% CPU usage just to read and send the LaserScan message from the LIDAR.

Am I doing this correctly? Or am I missing something to connect the navigation stack to the external computer that will be able to handle all of the processing necessary?

Thanks for all input

edit retag flag offensive close merge delete



Do you not want move_base installed on the beaglebone due to storage limitations on beaglebone? or do you just not want move_base running on the beaglebone?

l0g1x gravatar image l0g1x  ( 2015-04-03 11:26:31 -0600 )edit

I just do not want move_base running on the beaglebone. It's going to require too much processing power, when we have an external computer to do that.

ronaldh12 gravatar image ronaldh12  ( 2015-04-03 11:30:03 -0600 )edit

so if you dont care about it being installed, then you can still install move_base on the beaglebone, but just dont run the move_base node on it. instead run it on your external computer. Did you properly setup your ros network ?

l0g1x gravatar image l0g1x  ( 2015-04-03 11:33:42 -0600 )edit

So, what you're saying is that it won't matter that it's on there or not. So, I can technically take that dependency off? Or would that screw something up? And from there I should just run 'roslaunch move_base move_base_0.3_to_0.2.launch' from the external computer?

ronaldh12 gravatar image ronaldh12  ( 2015-04-03 11:37:18 -0600 )edit

Yes, we got that working last week! It's amazing how fast it sends LIDAR information over the network. It's only ~1 sec delay, which is way better than we expected.

ronaldh12 gravatar image ronaldh12  ( 2015-04-03 11:37:56 -0600 )edit

Ah, I just found where it shows to create the move_base.launch file. I think it's finally starting to make a little sense!

ronaldh12 gravatar image ronaldh12  ( 2015-04-03 11:51:46 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2015-04-03 11:59:21 -0600

l0g1x gravatar image

updated 2015-04-06 07:11:27 -0600

Continuing off the comments, I dont know how your system/packaging is setup, so its hard to say if you want to take the dependency off or not. For example, if you have say 1 github repo that you clone to both the beaglebone and the external computer so that they both have the same files, then you probably wouldnt want to remove move_base as a dependency since it will also affect your external computer.

Ideally, I think you may want to setup your system in a way similar to how Clearpath organizes there github repo for their jackal robot . You would basically divide the different parts related to the robot into separate repos. For example you could have say two repo's:

  • robot_control (this repo could contain any driver/sensor related items)
  • robot_navigation (this repo would have your move_base related items)

That way you could only clone the robot_control repo to your beaglebone (and not even have to install/have move_base on the beaglebone) and clone the robot_navigation repo to your external computer (where you would have move_base listed as a dependency just like they tell you to in the setting up the navigation stack tutorials)

If you setup your network correctly, then just run the sensors and robot driving related stuff on your beaglebone, and run move_base on your external computer. You can also look at the roslaunch machine examples to launch nodes on different machines, from a single computer (all on same network)

EDIT 1: My understanding of it (may be wrong) is that "jackal" is a common package used amongst all the different types of jackal setups (simulation or real world). Things like the URDF of the robot, and custom messages the robot sends. Jackal_robot is specific to the physical robot itself (boot up/onstart procedures). If you spend some time looking through clearpath's repo's you will learn ALOT. It just takes time and curiosity :)

edit flag offensive delete link more


Brilliant. Absolutely brilliant. Will update if I run into problems. Thank you so much!

ronaldh12 gravatar image ronaldh12  ( 2015-04-04 13:24:46 -0600 )edit

Could you help distinguish the difference the "jackal_robot" packages and the "jackal" packages?

ronaldh12 gravatar image ronaldh12  ( 2015-04-04 13:40:07 -0600 )edit

@ronaldh12 The jackal_robot package/repo contains things that are completely specific to the real world jackal robot (i.e. scripts for network setup, robot_upstart, etc..). The jackal package contains common info that can be used across any testing platform (simulation, or real world)

l0g1x gravatar image l0g1x  ( 2015-10-20 11:46:46 -0600 )edit

Question Tools


Asked: 2015-04-03 02:43:11 -0600

Seen: 629 times

Last updated: Apr 06 '15