In this chapter, we mainly covered interfacing a DIY autonomous mobile robot to ROS and the Navigation package. We looked at an introduction to this robot and the necessary components and connection diagrams. We looked at the robot firmware and saw how to flash it into the real robot. After flashing the firmware, we learned how to interface it to the ROS and saw the Python nodes for interfacing the LaunchPad controller in the robot and the nodes for converting twist messages to motor velocities and encoder ticks to odom and tf.
After discussing the interconnection of the Chefbot nodes, we covered the C++ port of some important nodes for odometry calculation and the base controller node. After discussing these nodes, we looked at detailed configurations of the ROS Navigation stack. We also did gmapping and AMCL and looked at a detailed description of each option in...