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

run erratic_navigation on my robot

asked 2011-05-23 19:27:55 -0500

sam gravatar image

updated 2011-05-28 05:13:52 -0500

kwc gravatar image

Hi, Is it able to run erratic_navigation on my own robot?

I have checked all the files on erratic_navigation, but I only can find a lot of conf files and launch files.

Also, I have found that navigation tutorials has many sources, but why I didn't find any source code on erratic_navigation?

If I want to write my own navigation package, how do I use erratic_navigation? Thank you~

edit retag flag offensive close merge delete

4 Answers

Sort by ยป oldest newest most voted

answered 2011-05-28 16:38:08 -0500

Bart gravatar image

To provide a complete answer to your question would require a lot of additional information about "your robot". But a question that general is probably not practical to fully answer in this format.

Most custom robots need some lower level processing for analogue and digital input/output processing. This could be done directly from a netbook or notebook computer using something like Phidgets IO, but my robot uses two microcontrollers to control the low level robot hardware. I use an Atmel ATMega 128 for controlling the Sabertooth motor controller and reading/accumulating the wheel encoders. It also interfaces a sonar, gyro, and analogue compass. I use a second Atmel ATMega 16 to control the servos including pan/tilt and a 6 degree of freedom arm. I interface to both of these microcontrollers using two serial ports (RS232) from a netbook running ROS that is mounted on the robot, using a simple serial message protocol for setting the velocity and reading the encoder data. A Kinect structured light "laser" is also mounted on the robot. The netbook communicates over wireless ethernet to a desktop computer running ROS computer where I run rviz and debug ROS nodes using the Eclipse IDE. Once all this is working the enjoyable part is working with the ROS stacks. I am using the Turtlebot navigation stack but the Erratic stack is probably similar.

The point of all of this detail is that it gets complicated at the hardware level below the ROS functionality. The microcontroller code and customer written ROS node to interface with my robot took many months. The ROS program that communicates to the drive microcontroller is 775 lines including comments. The ATMega code base is larger still. The whole setup has taken years to get to this point. If your are taking the same path, I can post the ROS interface code as it may contain some useful hints. The Erratic robot hardware interface code is based on Player to abstract the hardware interface, but there still has to be some custom code below this if you are using a custom robot. I believe that there is documentation available on the Erratic lower level communication protocol (serial) and hardware programs.

My advice to most people starting out with ROS would be to look at the "Turtlebot" recently marketed by Willow Garage. Unless you really enjoy solving low level hardware problems this looks like an ideal entry level ROS robot at a good price. You could be tweaking the navigation stack and experimenting with VSLAM soon after taking it out of the box. Another advantage for this robot is size and weight. As it is built on a Roomba so it is suitable for operation in smaller spaces and it doesn't weigh 25 or 50 pounds. It wont' cost you more than a custom built robot with the same capability, probably less.

edit flag offensive delete link more

answered 2011-05-24 07:36:23 -0500

arebgun gravatar image

updated 2011-05-25 13:54:45 -0500

I suggest you read the Navigation Tutorials page to learn how you can use ROS navigation stack on your own robot. Specifically, read the first tutorial very carefully. erratic_navigation package only contains configuration and launch files since it just uses standard ROS Navigation stack without any code specific to Erratic robot (except the actual hardware driver to control the mobile base and a 3D model that TF needs to work properly).

edit flag offensive delete link more

answered 2011-05-25 00:35:35 -0500

sam gravatar image

Thank you for the answer~ I am reading that tutorials and already writing some codes to test(simple simulation : tf,odom,base...). You said that erratic robot can use standard ROS Navigation stack without any code specific to Erratic robot. So If I also want to use standard ROS Navigation stack without any code specific to my robot. How could I do it? I have no idea that how erratic_navigation connect with laser and motor? And what is the difference between navigation_global,navigation_local,navigation_slam?

edit flag offensive delete link more


navigation_global is used when you already have a map of an area you'd like to navigate, navigation_slam is used when you want to build a map and navigation_local is used when you don't have a map and don't want to build one, you just navigate in the odometric frame of the robot.
arebgun gravatar image arebgun  ( 2011-05-25 13:57:37 -0500 )edit
Thanks. I see. So If I also want to use standard ROS Navigation stack without any code specific to my robot. How could I do it?
sam gravatar image sam  ( 2011-05-25 20:30:35 -0500 )edit
See the above link in @arebgun's answer for the Navigation Tutorials. They walk you through how to setup the navigation stack's configuration files for your own robot as well as making sure your robot publishes the data the navigation stack requires.
Eric Perko gravatar image Eric Perko  ( 2011-05-25 20:33:02 -0500 )edit
Thank you~I have already in trying follow the tutorials before post this question. But what my question is why erratic stack seems not have package in tutorial said (tf,odom...)? What I found is diffdrive_plugin.cpp,erratic_player.cpp,keyboard.cpp.
sam gravatar image sam  ( 2011-05-26 00:12:25 -0500 )edit
erratic_player package contains hardware interface to the robot, it also has code to publish odometry information to TF. erratic_description package contains a 3D model of the robot, that's where robot_footprint, base_link, etc. frames are defined.
arebgun gravatar image arebgun  ( 2011-05-26 04:07:39 -0500 )edit

answered 2011-05-27 23:23:49 -0500

sam gravatar image

Could I ask if I don't want to change anything about erratic's navigation but I want to use all the codes in erratic to my own robot. Which portion I should change? And how I run this whole stack on my robot? (which launch file?) Thank you~

edit flag offensive delete link more

Question Tools


Asked: 2011-05-23 19:27:55 -0500

Seen: 706 times

Last updated: May 28 '11