Wilson Mar bio photo

Wilson Mar


Email me Calendar Skype call

LinkedIn Twitter Gitter Instagram Youtube

Github Stackoverflow Pinterest

Learn the operating system for controlling simple robots

US (English)   Español (Spanish)   Français (French)   Deutsch (German)   Italiano   Português   Estonian   اَلْعَرَبِيَّةُ (Egypt Arabic)   中文 (简体) Chinese (Simplified)   日本語 Japanese   한국어 Korean


NOTE: Content here are my personal opinions, and not intended to represent any employer (past or present). “PROTIP:” here highlight information I haven’t seen elsewhere on the internet because it is hard-won, little-know but significant facts based on my personal research and experience.


VIDEO: The “first human-like robot to space” went onboard the NASA STS-133 ULF-5 mission to the International Space Station “to become a permanent resident” on the orbiting spacecraft. With a pair of robotic arms and nimble hands, the humanoid robot known as Robonaut2 (R2) can “one day venture outside the station (for EVA) to help spacewalkers to make repairs or additions to the station or perform scientific work.”

“It can lift heavy objects in space. But then, since everything is weightless, anyone can.”


Why ROS?

ROS (Robotic Operating System) is the de facto standard for robot programming. It provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more.

ROS was originally developed in 2007 at Stanford university’s Artificial Intelligence Laboratory. Since 2013 it is managed by OSRF (Open Source Robotics Foundation) and offered free to use under open source BSD license.


ROS runs within Ubuntu 14.04 (not other Linux flavors).

ROS modules can be written in any language for which a client library exists (C++, Python, Java, MATLAB, etc.).




Richard Wang https://www.youtube.com/watch?v=lgWnBWncRkU Closed-loop Control of a Hardware Robot in ROS (part 5)






Gazebo 3D Simulator

Gazebo visually simulates (displays) what the robot does.



  1. The Gazebo software includes a database of many robots and environments (Gazebo worlds)

      rosrun gazebo_ros gazebo


    Catkin is the ROS build system to generate executables, libraries, and interfaces.

    A CMake-based build system that is used to build all packages in ROS.

  2. Build the Eclipse project files with additional build flag

    § The project files will be generated in ~/catkin_ws/build

  3. Setup a Project in the Eclipse IDE:

     catkin build package_name -G"Eclipse CDT4 - Unix Makefiles"


  4. Directly clone to your catkin workspace.

    Using a common git folder is convenient if you have multiple catkin workspaces.

  5. Open a terminal and browse to your git folder

    cd ~/gits
  6. Clone the Git repository with

     git clone https://github.com/ethzasl/ros_best_practices.git
  7. Symlink the new package to your catkin workspace

    ln -s ~/git/ros_best_practices/ ~/catkin_ws/src/


  8. Launch files are written in XML as *.launch files


    The ROS Master manages the communication between nodes.

    Every node registers at startup with the master.

  9. Start a master with

  10. See http://wiki.ros.org/Master


  11. Run a talker demo node with

     rosrun roscpp_tutorials talker




Justin Huang

(jstnhuang on GitHub), PhD student in robotics at the University of Washington in Seattle, Washington

ROS tutorial #1: Introduction, Installing ROS, and running the Turtlebot simulator 135K views

ROS tutorial #2: Publishers and subscribers 39K views

ROS tutorial #2.1: C++ walkthrough of publisher / subscriber lab 41K views

Tutorial Thursday! #1: ROS basics 47K views

Peter Frankhauser

pfankhauser@ethz.ch rsl.ethz.ch at rsl.ethz.ch in Zurich, Switzerland

Programming for Robotics (ROS) Course

Course 1 Slides PDF

2 Eclipse IDE C++ Slides at PDF

3 UI, Robot Models TF Transformation System http://wiki.ros.org/tf2 rqt User Interface Robot models (URDF) Unified Robot Description Format describes your robot. (composition, length of the different parts of the arm, which joints it contains, etc.) The MoveIt! assistant for configuration.

roslaunch moveit_setup_assistant setup_assistant.launch

Simulation descriptions (SDF) sdformat.org See PDF

4 Slides at https://github.com/ethz-asl/ros_best_practices/wiki

[ROS tutorial for beginners] Chapter 1- Intro to Robot Operating System The Construct 12K views

Lentin Joseph

Mastering ROS for Robotics Programming - Second Edition February 26, 2018 By Lentin Joseph, Jonathan Cacace | $39.99 $8 Discover best practices and troubleshooting solutions when working on ROS.

ROS Robotics Projects By Lentin Joseph | $39.99 $8

Build a variety of awesome robots that can see, sense, move, and do a lot more using the powerful Robot Operating System.

Anil Mahtani

Effective Robotics Programming with ROS - Third Edition By Anil Mahtani et al. | $39.99 $20.00 Find out everything you need to know to build powerful robots with the most up-to-date ROS.

  • ROS Programming: Building Powerful Robots (Packt)

Robot Ignite Academy

ROS in 5 days by the Robot Ignite Academy at theconstructsim.com/robotigniteacademy_learnros/ros-courses-library


rosrobots.com Exciting Robotics Projects and Tutorials using ROS Build a variety of awesome robots that can see, sense, move, and more using the powerful Robot Operating System. Packt Book talks about interfaces to self-driving cars, Leap Motion VR, Tensor Flow.

ROS Robotics By Example - Second Edition November 30, 2017 By Carol Fairchild, Dr. Thomas L. Harman | $39.99 $20.00 Learning how to build and program your own robots with the most popular open source robotics programming framework.



PDF in GitHub


“All I want is a two-finger robot that presses up/down buttons on a remote device.”

VIDEO http://www.openbionics.org focus on robotic hands with 5 fingers.

VIDEO: The microdot push by Naran is it (for $50). But it’s out of stock.