Software Navigation Stack - rsx-utoronto/rsx-rover GitHub Wiki
Navigation Stack Overview
This section explains the core components of our robot's navigation system. It covers how we localize, plan paths, avoid obstacles, and control movement.
Localization
What it does:
Determines the robot's position in the environment using sensor data.
What we use:
- Sensor inputs: [ZED Camera / IMU / Realsense] /EXPAND ON THIS
Key files / nodes:
- /TO BE COMPLETED
Mapping
Overview
Generates a 3D occupancy map of the environment using incoming sensor data. This enables elevation-aware navigation and obstacle detection in complex terrains.
Primary Launch File: octomap.launch
Basic Usage
roslaunch rover octomap.launch
Core Components
-
OctoMap
Probabilistic 3D mapping system that builds occupancy maps from PointCloud2 data- Captures multi-height obstacles
- Handles dynamic environments
- Official Documentation
-
octomap_serverNode
Real-time map builder that publishes:- Binary octomaps (
/octomap_binary) - Full-resolution maps (
/octomap_full) - Visualization markers (
/occupied_cells_vis_array) - Node Documentation
- Binary octomaps (
-
octomap_rvizNode - Visualization- Visualizes 3D occupancy grid in RViz
octomap_rviz_file
-
Input Topic
<remap from="cloud_in" to="/zed_node/point_cloud/cloud_registered"/>
Planning
Overview
Provides real-time navigation and collision avoidance using sensor data. Implements Dynamic Window Approach (DWA) for local path planning in dynamic environments.
Primary Launch File: dwa_planner.launch
Basic Usage
roslaunch rover dwa_planner.launch
Core Components
-
DWA (Dynamic Window Approach)
Real-time local planner that:- Evaluates feasible velocity windows
- Optimizes for obstacle clearance and path alignment
- Dynamically adjusts to new obstacles
-
dwa_plannerNode
Custom implementation that:- Processes occupancy maps and localization data
- Generates collision-free trajectories
- Publishes velocity commands
-
'dwa_rviz' Node
- Visualization interface for planning
dwa_rviz_file
- Core Topics
<param name="odom_topic" value="/rtabmap/odom" />
<param name="octomap_topic" value="/octomap_full"/>
<param name="map_topic" value="/map" />
Control
What it does:
Translates the planned path into actual robot movement.
Key files / nodes:
- /TO BE COMPLETED
Obstacle Avoidance
What it does:
Uses real-time sensor data to update the robot's local costmap and avoid collisions.
Key files / nodes:
- /TO BE COMPLETED
GPS
What it does:
Provides global positioning data, primarily used for outdoor navigation. Fused with IMU and odometry through the EKF to improve localization accuracy.
Key files / nodes:
- /TO BE COMPLETED