1. Action Servers: Action servers are used for controlling long-running tasks like navigation. They allow clients to request tasks that may take a while to complete and provide feedback on progress. Action servers are essential in ROS 2 for navigation.
2. Behavior Trees: Behavior trees provide a structured way to define complex robot behaviors. They are more scalable and understandable than finite state machines. In this project, BehaviorTree CPP V3 is used as the behavior tree library.
3. Navigation Servers: Navigation servers consist of planners, controllers, smoothers, and recovery servers. These servers host algorithm plugins and environmental representations for various navigation tasks.
4. Maps and localization: The environmental representation is how the robot perceives its surroundings. In this context, it's represented as a costmap, a 2D grid with costs for navigation. State estimation involves providing transformations between map, odometry, and robot frames. It's important for accurate navigation and localization.
5. Costmaps layers and Filters: Costmap layers are plugins that buffer information into the costmap, including data from sensors like LIDAR, RADAR, and depth sensors. These layers help the robot navigate safely. Costmap filters are used to apply spatial-dependent behavioral changes based on annotated filter masks. They can define zones to avoid, speed limits, and preferred lanes for robots.
6. Planners: Planners compute paths or routes to achieve specific objectives, such as reaching a goal or covering an area. They utilize a global environmental representation like maps/costmaps and sensor data.
7.Controllers & Smoothers: Controllers, also known as local planners, follow the globally computed path or complete local tasks. They compute control efforts to guide the robot. Smoothers refine paths generated by planners, reducing path irregularities and abrupt rotations. They can improve the quality of planned paths.
8. Recovery & Behaviors: Recovery behaviors are used to handle unknown or failure conditions autonomously. They can address issues like sensor faults or getting stuck.
Next we will be seeing all the components in nav2 params and it's explanation !!
[Components of Nav2](https://abstracted-cathedral-04e.notion.site/Components-of-Nav2-122a953eacc3809f9c11e3a50d2adf5f)