I have finished the new ROS2 Navigation(Galactic)

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.

1 Like

Thanks a lot for your feedback about the course @bluebird It is really appreciated!

a. Agreed. Let us change it.

b. You are completely right. It needs to be clarified what frames are (because many students may not know at that point what they are), and specially, the /map and /odom must be clearly understood. Let us add it

c. Agreed. Let us add it

d. Thanks! That is our idea to better explain the Nav2 system

e. Let us test more that and se what we can reduce. Which O.S and which browser were you using?

Yes you can create your own planner and then the result of it will be sent to the controller to follow it. We have some examples of how to do that in the Path Planning Algorithms course (for ROS1).
How the behavior tree works and the interaction with the navigation system is going to be explained in the Advanced Nav2 course to be published by the end of this month.

Yes, plugins is also included in the Advanced course.

Thanks a lot for your suggestions. They mean that you really master Nav2!

Keep pushing your ROS learning!