Programming Robots with ROS: A Practical Introduction to the Robot Operating System