ROS (Robot Operating System)

The Robot Operating System is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it’s all open source. It runs on Linux OS and can be easily installed on PC and also on Linux compatible development boards like Raspberry pi, beagle bone, etc. Details about ROS are available at http://www.ros.org/ Many of the ROS features are listed below.

  • It is open source and supported with very large community
  • Distributed communication system which is powerful and well manageable across one or multiple devices.
  • Message Passing, Record and playback of messages, remote procedural calling, distributed parameter system
  • Robot specific libraries like Localization, mapping, navigation, pose estimation, etc.to start quickly with development
  • ROS diagnostics
  • Visualization tool like Rviz
  • rqt, a Qt-based framework for developing graphical interfaces for your robot
  • ROS navigation stack for autonomous mobile robots
  • robot_model package for developing 3D models of robot for simulation purpose
  • ROS has integration with many other libraries,
    • Gazebo – 3D indoor and outdoor multi-robot simulator, complete with dynamic and kinematic physics, and a pluggable physics engine
    • openCV – It provides many common computer vision algorithms and utilities, used in academia and in products around the worldROS has integration with many other libraries
    • PCL (Point Cloud Library) – a perception library focused on the manipulation and processing of three-dimensional data and depth images which provides many point cloud algorithms, including filtering, feature detection, registration, kd-trees, octrees, sample consensus, etc.
    • MoveIt – a motion planning library that offers efficient, well-tested implementations of state of the art planning algorithms that have been used on a wide variety of robots, from simple wheeled platforms to walking humanoids

Reference Material

For ROS, the main website itself contains vast amount of documentation and tutorials to work. Apart from that some other books which I found interesting and efficient to learn and implement various ROS related work are included in this section.

1. Book: Mastering ROS for Robotics Programming by Lentin Joseph

  • create a robot model of a Seven-DOF robotic arm and a differential wheeled mobile robot
  • Work with motion planning of a Seven-DOF arm using MoveIt!
  • Implement autonomous navigation in differential drive robots using SLAM and AMCL packages in ROS
  • Dig deep into the ROS Pluginlib, ROS nodelets, and Gazebo plugins
  • Interface I/O boards such as Arduino, Robot sensors, and High end actuators with ROS
  • Simulation and motion planning of ABB and Universal arm using ROS Industrial
  • Explore the ROS framework using its latest version

2. Book: Effective Robotics Programming with ROS by Anil Mahatani, Lui Sanchez, E. Fernandez, A. Martinez

  • Understand the concepts of ROS, the command-line tools, visualization GUIs, and how to debug ROS
  • Connect robot sensors and actuators to ROS
  • Obtain and analyze data from cameras and 3D sensors
  • Use Gazebo for robot/sensor and environment simulation
  • Design a robot and see how to make it map the environment, navigate autonomously, and manipulate objects in the environment using MoveIt!
  • Add vision capabilities to the robot using OpenCV 3.0
  • Add 3D perception capabilities to the robot using the latest version of PCL

3. ROS Robotics Projects by Lentin Joseph

  • Create own self-driving car using ROS
  • Build an intelligent robotic application using deep learning and ROS
  • Master 3D object recognition
  • Control a robot using virtual reality and ROS
  • Build own AI chatter-bot using ROS
  • Get to know all about the autonomous navigation of robots using ROS
  • Understand face detection and tracking using ROS
  • Get to grips with tele-operating robots using hand gestures
  • Build ROS-based applications using Matlab and Android
  • Build interactive applications using TurtleBot