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

Complete n00b: Getting Started via ROS or MoveIt!?

asked 2015-12-08 16:45:24 -0600

tommytwoeyes gravatar image

updated 2015-12-08 16:46:20 -0600

I'm an amateur/hobby roboticist who loves robots but has only built a couple of simple, fairly dumb Arduino- and AVR-based robots that can avoid obstacles (most of the time), wander around aimlessly, etc.

I'd like to advance my skills, and learning to develop in ROS is an obvious place to start. I do have software development experience as a web developer (+12 years), and some experience with Python.

My robot will be an autonomous rover based on the 6WD Wild Thumper (34:1 gear ratio) chassis, using either a Radxa Rock Pro or Raspberry Pi 2 (haven't decided which yet), with an AVR ATmega1284 (possibly more than one) working as an intermediary to control the motors and possibly other peripherals, such as sensors, Bluetooth comms, etc.

My question is, I'm not sure of the best way to get started with ROS. There seem to be multiple good entry points to working with ROS; e.g. the ROS tutorials, of course. But while googling ROS tutorials today, I stumbled onto the MoveIt! project, which I had not heard of before.

The MoveIt! FAQ page said it MoveIt! is quickly becoming the preferred entry point to ROS development (for n00bs like me, presumably). However, some of the pictures and text on the home page cause me to wonder if the MoveIt! project isn't intended for mobile-manipulator-type robots, like stationary robotic arms and such. On the other hand, it did include robots like PR2 and other mobile robots in its list of supported robots. So, I guess, in short, I'm asking if the MoveIt! project would be appropriate and/or ideal for a complete ROS beginner.

Secondly, I wanted to ask whether diving into a somewhat complex project like the one I described above with the Wild Thumper chassis, with multiple devices involved, is the wisest approach, or whether it might be better to begin with a fairly simple project, like taking my new Raspberry Pi 2, installing ROS on it, and interfacing it with a single sensor, or something like a Bluetooth module. Is it reasonable to use a mobile rover-type robot project as your first intro to ROS (or MoveIt!), or would it be better to start small?

I've been wanting to learn ROS for a long time and just reached a long break in school (I'm a pre-engineering undergrad student, planning to major in electrical engineering), during which time I'll have almost 4 weeks of uninterrupted time in which to get comfortable with ROS programming.

Any advice, links, recommendations, etc., are quite welcome. Thank you!

edit retag flag offensive close merge delete

4 Answers

Sort by ยป oldest newest most voted

answered 2015-12-10 02:38:45 -0600

Humpelstilzchen gravatar image

updated 2015-12-21 22:56:07 -0600


since my robot is based on a 4wd wild thumper I probably should tell you that in order for the ros navigation stack to work your vehicle needs to do odometry. Probably the easiest way for you is to replace the middle motors with a version with encoders, e.g. this one. My setup is indeed very similar. I have a Hummingboard which controls one Atmega32 for the drive and one Atmega328 for the other electronic (sonar/ir distance sensors, voltage monitoring etc) over I2C. Main navigation sensors is an Asus xtion.

For starters I would recommend to start with the ros tutorials, then interface your hardware and finally look at the ros navigation tutorials.

Moveit is basically for manipulators and if you look closely you will see that the PR2 has two of them.

edit flag offensive delete link more


Oh, great! I was planning to get the encoder-equipped motors from Pololu, of course, since odometry is important. But I did not realize ROS wouldn't work without it. That sucks, because it may be a while before I can afford those motors.

tommytwoeyes gravatar image tommytwoeyes  ( 2015-12-21 15:36:05 -0600 )edit

That ros will not work, was a bit misphrased, the navigation stack will not work. There are also other possibilities like using Hector Mapping or rtabmap. You can also try to attach encoders to your current motors.

Humpelstilzchen gravatar image Humpelstilzchen  ( 2015-12-21 23:05:04 -0600 )edit

Humpelstilzchen How's the community activity & support for the Hummingboard? It's a Pi clone, isn't it? I don't know much about it, but if I remember correctly, it has more RAM than the Pi 3. Was it easy (or at least, as easy as with the Pi) to get ROS installed and your robot running with it?

tommytwoeyes gravatar image tommytwoeyes  ( 2017-01-11 08:07:22 -0600 )edit

My Hummingboard has 1GB RAM, so its equal to the rpi3 here. I started this project around two years ago, thats why rpi was not an option.The Hummingboard (i.mx6) Linux community is really good and active. For ROS I choosed to compile from source on Debian jessie, which I do not recommend.

Humpelstilzchen gravatar image Humpelstilzchen  ( 2017-01-11 08:42:12 -0600 )edit

Afaik there is no ready to use ros image for the Hummingboard. Also I'm currently evaluating if the Cortex-A53 of the rpi3 delivers more power/watt as the Hummingboards older Cortex-A9 for my use case, so maybe I'll switch..

Humpelstilzchen gravatar image Humpelstilzchen  ( 2017-01-11 08:44:08 -0600 )edit

answered 2015-12-23 08:47:14 -0600

BrettHemes gravatar image

Personally, I found the book: A Gentle Introduction to ROS by Jason O'Kane to be a great starting point. It distills a bunch of the info available on the ROS wiki down to a more readable format.

The book is free for download at the author's website (currently down for maintenance?). You can also get a printed copy if you like on Amazon.

If you want more Python examples you can also check out the ROS by Example books by Patrick Goebel.


edit flag offensive delete link more


Yes, that is a great book. I bought it after reading your recommendation. Thanks

tommytwoeyes gravatar image tommytwoeyes  ( 2017-01-11 08:19:15 -0600 )edit

answered 2016-06-10 05:05:19 -0600

Tom, I'm wondering how it has gone for your project! I have questions like you asked. I wanted to use the Turtlebot stack but my base is so different, more like the Husky. I don't know if differential_drive or diff_drive, or MoveIt! would do better for motion control. Or maybe I should install the whole Husky package and see how that goes. Odometry in hardware is also something I'm currently adding, and an IMU.

edit flag offensive delete link more


Hi Rodolfo8: sorry for the late reply. I'm in eng school, and it's kept me too busy for my hobbies this year. So I haven't made much progress. The Husky pkg might work better. Turtlebot has a diff. drive, but the pkg is built around the iRobot Create API, which might not be too useful for your base.

tommytwoeyes gravatar image tommytwoeyes  ( 2017-01-11 07:29:16 -0600 )edit

I'm adding an IMU, and will replace 2 motors with some w/ odometry encoders. Can't afford them now, so I will try to hack a solution with Hall sensors and magnets and put my Calculus & Trig courses to good use (I hope). As for MoveIt!, I plan to get comfortable with ROS, then look at MoveIt later

tommytwoeyes gravatar image tommytwoeyes  ( 2017-01-11 07:35:25 -0600 )edit

How's your project going? Are you also using a Wild Thumper as your base, or something else? Are you using a single-board computer or laptop? If an SBC, how well does ROS work with it? I'm planning to use a Pi 3, but not sure if it has enough memory or processing power. May wait for Pi 4 release

tommytwoeyes gravatar image tommytwoeyes  ( 2017-01-11 07:38:33 -0600 )edit

answered 2015-12-09 10:08:33 -0600

fabian77 gravatar image

Hi, i just can tell you, how i did. In the beginning ROS was a sealed book for me. Am also an hobbyist using ROS now for nearly 2 years and am still learning everytime doing something new. I just started with simple examples like publisher and subscriber, then headed over to write my own base_controller for my robot. The base_controller simply listens to /cmd_vel topics and "translates" them into serial commands to drive an motor-driver board with attached motors. Next task was to publish encoder-values from the drives, done this also in the base_controller node/package.

Next task was to teleop the robot with a usb-gamepad. Therefore I used the ROS- Package joystick_drivers which publishes to a topic /joy. Then i programmed a node which listens/subscribes to that topic and "translates" into corresponding /cmd_vel commands.

In the meantime i programmed a node that computes encodervalues to odometry data and publishing to /tf and /odom-topic. With an URDF- model of my robot i now can visualize the robot and its movements in RViz... and there is so much more to do with the project and possible with ROS that i am still exited and don't worry if i sometimes struggle with it.

In parallel i am working on webtools for my robot using rosbridge_suite and rosjs now. That way i stumbled into web- programming as well, thanks to my project and ROS :-)

There are much tutorials around the internet and on ROS Webpages itself, that after reading them several times i understand more and more as getting deeper into it. Just begin with...

My Setup is a embedded Linux Board on the robot,(pcduino) with ROS-Indigo and my Ubuntu Desktop-PC as workstation also with ROS-Indigo installed on it. ROS Master is running on the Desktop PC and connected via local wireless Network to the robot.

You can find my ROS Workspace on my ROS Repo on github. Maybe you can find some inspiration there.


edit flag offensive delete link more


@Fabian Thanks, that's a lot of helpful info. I hope I'll soon have made as much progress as you have

tommytwoeyes gravatar image tommytwoeyes  ( 2015-12-21 15:37:26 -0600 )edit

Question Tools



Asked: 2015-12-08 16:45:24 -0600

Seen: 987 times

Last updated: Jun 10 '16