Preparing for Udacity’s Robotics Nanodegree…

Trim Bresilla
May 8, 2017 · 6 min read

Few days back (well, depending when you read this), i got this mail that i was accepted to Robotics Nanodegree at Udacity.

Beside the huge excitement and high expectations for it, i was thinking why not share my preparations for it!

First thing first: Who am I, and why will I be taking this program?!

Well, I’m not an engineer “per se”. I am actually taking a PhD at University of Bologna, in Faculty of Agronomy, department of Fruits Physiology, and my research is towards Precision Agriculture, Sensorics and Decision Support Systems! Very mouthful but, sounds “smart” when you shout out while drinking a beer in a pub.

Essentially i need to come up with prototypes and assembled devices that will make it easier to obtain research data from the field. So even though i am not engineer “per se”, i am always hand dirty in electronics and programming.


I assume that everyone taking this degree/program already read In Depth Robotics Nanodegree Program Syllabus for 1st term by Ryan Keenan.

I suppose that everyone doing robotics or interested in robotics has already heard about ROS. The ROS webpage is very resourceful. Obviously the best place to start there is the Documentation page:

Warm up videos…

If you are like me, you already know what ROS is and how it works, but never worked directly with it to know the details. Well, in that case then there are some cool videos on YouTube as warm up:

Firstly some very basic ROS concepts:

ROS basic tutorials Justin Huang

Some academic view of basics of ROS from amazing ETHzürich:

Then the best part, some hands on with ROS and GAZEBO from Erle Robotics:

Apart from being a company that wants to sell their staff (smart and obviously), there are many other good and interesting resources in their webpage documentation, worth checking out:

Books and Docs…

There are many books, documentation, articles, papers… on ROS and Robotics in general. The best place to start is official ROS tutorials from the ROS webpage:

If you really want much more details and go really deep, here are some books (list taken from the ROS website):

  1. ROS Robotics Projects (2017–03, I, Python)
  2. Effective Robotics Programming with ROS — Third Edition (2016–12, I, Python)
  3. ROS in 5 days: Entirely Practical ROS Training (2016–12, I. Python)
  4. ROS_Robotics_By_Example (2016–6, I, Python)
  5. MasteringROSforRoboticsProgramming (2015–12, IJ, C++)
  6. Programming_Robots_with_ROS (2015–12, I, Python)
  7. ROS_Robot_Programming_Japanese japanese (2015–11, I, C++)
  8. LearningROSforRoboticsProgramming_second_edition (2015–08, HIJ, C++)
  9. Robot Programming by ROS Japanese (2015–06, I, C++ & Python)
  10. LearningRoboticsUsingPython (2015–05, IJ, Python
  11. ROS_Robot_Programming Korean (2015–03, I, C++)
  12. ROSBook_KR korean (2014–12, I, C++)
  13. ROSbyExampleVol2 (2014, HI, Python)
  14. AGentleIntroductiontoROS (2013–10, G, C++)
  15. AGentleIntroductiontoROS_Chinese chinese (2013–10, I, C++)
  16. LearningROSforRoboticsProgramming (2013–09, FG, C++)
  17. ROSbyExample (2013, GH, Python)

In my case i decided to go with:

If you read the Robotics Nanodegree syllabus, and if you check this books syllabus, you’ll see they are very compatible. And that’s why i decided to go with this (but most importantly it has a bat on the cover: “its a book that you deserve, not a book that you need” — get it? Batman? Commissioner Gordon quote? Anyone?).

Setting up the laptop

I own a Dell XPS 15, a beast in performance, and gorgeous in design! It has 32GB or RAM, i7–6th gen Intel processor, one 500GB NVMi SSD and another 500GB of SATA SSD, 4K screen and so on... I use Windows and Ubuntu, and I described in another post how i run those as dual-boot and virtualized as well.

Signing up on Slack community

Setting up slack on my Android phone and PC the same time.

Udacity’s Robotic slack :)

I signed up for it, and while checking it, I immediately learned a lot of things. The community there is amazing!

(I have taken many online courses, but i have never been part of active forums and any community, and just by being part of this slack community, i have realized how much i have missed)

Setting up UBUNTU and ROS

I have installed Ubuntu 16.04 with GNOME desktop environment. Somehow love the interface of gnome, especially extensions!

1. Obviously I installed ROS. The guide to install it on Ubuntu is very clear from the ROS website.

2. Umake: Ubuntu Make is a command line tool which allows you to download the latest version of popular developer tools on your installation.

3. OpenCV, as this is going to be integral part of the course. I have made a GIST/.sh script that installs all the dependencies and python bindings:

4. RoboWare: It is an IDE environment for ROS development, makes the ROS development visual, simple and manageable, provides ROS workspace management, code editing, building and debugging:

5. PyCharm: Just for kicks another IDE.

6. GitKraken: A Git GUI!

7. Terminix/Tilux: A tiling terminal emulator for Linux using GTK+ 3. It makes tiling and tabs for terminal very easy. And is important as with ROS you need many tabs open.

8. tmux: is a "terminal multiplexer", it enables a number of terminals (or windows) to be accessed and controlled from a single terminal. tmux is intended to be a simple and yet modern.

9. Z Shell instead of BASH. Zsh is a shell designed for interactive use, although it is also a powerful scripting language. It uses community plugins for: auto completion, highlighting, navigation and so on…

0. Drop down terminal: A gnome shell extension for quake-like drop down terminal.

Everything is ready now! (i think)

So, this is my long but short guide (or share) on how i am preparing!

I am convinced this will be a excellent opportunity and kind of game-changer in my career and life. Maybe i am exaggerating , maybe not, but, man, i am sooo excited for it.

So, cheers to everyone reading this, and hope to meet you “virtually” in slack and/or class forums.

Trim Bresilla

Written by

Engineer and biologist. Making robots that (hopefully) will make food production a breeze. Trying to make sense of patterns & regularities with the help of AI.