Personally, I found the ROS documentation adequate for addressing the needs of beginners. There are excellent tutorials to learn basic concepts and to refer to the advanced concepts. However, developing even a simple custom robot (even in simulation) requires us to combine a lot of concepts. For a beginner or intermediate ROS user, the amalgamation is not readily apparent. This book addresses precisely that pain point – to provide a *big picture* understanding of ROS concepts.
In a nutshell, by end of this book, you will be able to model a simple differential drive robot from scratch and configure it to navigate autonomously in a given custom simulation environment. Nothing more, nothing less!
To avoid going too broad, the book focuses only on a simple 2-wheeled differential drive robot. I named this robot as KBot, but you are free to choose your name. Again, the focus is not to develop a robotic application rather to gain a deeper understanding of few advanced ROS concepts. To trim down the complexity further, (just a bit of) the programming is done in Python.
Here are some of the questions this book tries of answer:
- How to configure ROS Navigation Stack components?
- How to send high-level navigation goals to robot?
- How to implement obstacle avoidance robot navigation in Gazebo & rviz?
- How to integrate Gazebo sensor models with ROS?
- How to use SLAM for autonomous navigation?
Chapter-02 : Describing ROS Robot with URDF
Robot Operating System (ROS) is an open-source middle-ware robotics framework that provides services such as hardware abstraction, low-level device control, message passing and package management. It has huge number of tool and libraries to write, build and run robot application code across one or more computers.
Gazebo is a physics-based (realistic) robot simulator that interfaces well with ROS.
Differential Drive Robot is typically a two or four wheeled robot that is driven by controlling velocities of the wheels.
URDF (Universal Robot Description Format) is a format used to describe physical, visual, collison, transmission properties of a robot. Typically uses XML or XACRO notation.
Host or Host System is usually PC or Workstation running a ROS instance and/or Gazebo. A Host is used for driving goals to the robot and visualize its response.
KBot is the name given to simple differential drive robot referred in this book.
Plugin is a piece of software that can be plugged into an existing software framework. Plugins let users integrate new software functionality without the need to re-compile the whole framework.
Hardware & Software Configuration
I strongly recommend installing ROS on Ubuntu on a decent system with graphics card installed. Below is my system configuration for your reference:
|Host System||Intel i7, Nvidia GeForce GTX-960M, RAM 16GB|
|Host ROS Distro||Kinetic (Desktop Full version)|
Book Source Code
The source code snippets and the concepts introduced in each chapter rely on the learning in previous chapters. Source code used in this book is available on BitBucket.
$ git clone https://firstname.lastname@example.org/kiranpalla/autonomous_navigation_of_ros_robot_diffdrive_sim__book_code.git
My sincere gratitude to all the brilliant developers & maintainers of ROS, Gazebo & Ubuntu. They are awesome! As a token of appreciation for their efforts, I decided to distribute this book for FREE!