I have finished the new ROS2 Navigation(Galactic). I thank the professors that separate the giant config file of NAV2 into small pieces. It seems less scary.
I am unable to locate any error in the lecture. While waiting for it, I have already studied all the materials that are discussed in it. The knowledge is not new to me. But, I decided not to waste the study chance. I read the lecture word by word and finished major exercises. When it comes to the config files, I compare them with my local files that are already tested in Rolling or Foxy. Unfortunately, I can only install launch files with CMake. I should study ROS2 Basics (Python) course if I have enough brain volume.
Personally, here are my suggestions about the lecture.
a. I think turtlebot3_teleop is better than teleop_twist_keyboard. Or, the default speed values in teleop_twist_keyboard should be much smaller than the current. The robot runs like a rat.
b. I think we should give students a better understanding of the frames in ROS, e.g., the frame Odom and frame Map. Every textbook tells how to represent a motion in space, and there are many different ways to do it. However, no one tells us how many frames should be used. For example, every localization algorithm is trying to track the robot on the map. So, their output should be the robot’s pose on the map frame. However, the ROS needs the algorithm to output the pose on the frame Odom. By doing so, the inevitable discontinuity of the localization algorithm will not interfere with other algorithms working on the frame Odom. It shows that ROS is such a practical framework.
The students will not get confused. ‘You should see the arrow from the center of the robot to the map frame. That is the transformation from Odom to Map frames that the AMCL publishes.’ The students should see two arrows. One is from the robot to Odom, and the other is from Odom to Map.
c. I think the RewrittenYaml function should be included since it is used so widely in the official example code.
d. The official config file in the nav2_bringup package uses folders to classify associated items of NAV2. I think it is a good idea.
e. I think the web-based Virtual Machine goes slowly and slowly, and the fan in my laptop runs crazy. I have to reboot the computer after each chapter is finished.
Finally, there are long-term goals. We can show a global Cost map with the planner node only, or we can show a local Cost map with the controller node only. Students may ask why we should use almost all the nodes to show a planned path. Planning a path is the planner’s mission. By the way, can I design a path manually, then let the turtle bot move alone with the controller node? The truth is that they are asking the detail interfere of the nodes in NAV2 and the detailed flow chart in a classic navigation task. This information does not contain in the official manual of the NAV2. Using each node separately is not the intention of the designer; the associated information is not contained in the NAV2’s manual. The node (do not be confused with ROS nodes) in the behavior tree knows the correct interference.
However, the information about the interference and the flow chart is good for study. Driving a single node can be their exercise in the lecture. If students can master the detailed interference of the NAV2 nodes, they can understand the config files. They will have an experience with planner algorithms and control algorithms. After finishing these tasks, students will be ready to program their plugins for NAV2, which is the goal of the advanced NAV2 lecture.