# jizhang-cmu/autonomy_stack_mecanum_wheel_platform architecture

> Architecture diagram of the GitHub repository jizhang-cmu/autonomy_stack_mecanum_wheel_platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform
- Repository: https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform

## Overview

This repository is the T-Bot Mecanum-wheel autonomy stack. Its principal workflow takes sensor data and a navigation goal, builds a map with SLAM, plans a route, and uses base autonomy to avoid obstacles and follow waypoints toward the goal. Users can alternatively command the vehicle with a joystick, with collision avoidance in smart-joystick mode or without it in manual mode. The README also describes exploration, simulation, and visualization capabilities. Several subsystem links below reflect README documentation rather than sampled implementation; the supplied source excerpts mainly cover dependencies and point-cloud storage.

Main entry points: [`src/base_autonomy`](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy) (Base Autonomy), [`src/slam/arise_slam_mid360`](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/slam/arise_slam_mid360) (SLAM), [`src/base_autonomy/vehicle_simulator`](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/vehicle_simulator) (Vehicle Simulator), [`src/route_planner/far_planner`](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/route_planner/far_planner) (Route Planner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sensing["Sensing and Mapping"]
  node_slam["SLAM"]
  node_cloudstore["Point-Cloud Storage"]
  node_terrain["Terrain Analysis"]
  node_terrain_ext["Extended Terrain Analysis"]
end

subgraph group_planning["Planning"]
  node_route["Route Planner"]
  node_exploration["TARE Exploration"]
end

subgraph group_navigation["Base Autonomy"]
  node_base["Base Autonomy"]
  node_scan["Scan Generation"]
  node_local["Local Planner"]
  node_follower["Path Follower<br/>[pathFollower.cpp]"]
  node_waypoint["Waypoint Example"]
end

subgraph group_interfaces["Simulation and Tools"]
  node_simulator["Vehicle Simulator"]
  node_visualization["Visualization Tools"]
end

node_operator(("User / Operator"))
node_lidar(("Mid-360 Lidar"))
node_vehicle(("T-Bot / Simulator"))
node_unity(("Unity Environment"))
node_joystick(("Joystick Controller"))

node_lidar -->|"supplies scans"| node_slam
node_slam -->|"stores point clouds"| node_cloudstore
node_slam -->|"provides mapping"| node_route
node_operator -->|"sets goal"| node_route
node_route -->|"guides navigation"| node_base
node_operator -->|"starts exploration"| node_exploration
node_slam -->|"provides mapping"| node_exploration
node_exploration -->|"plans exploration"| node_base
node_lidar -->|"supplies sensor data"| node_terrain
node_terrain -->|"supports traversability"| node_base
node_joystick -->|"sends commands"| node_base
node_base -->|"uses scan generation"| node_scan
node_base -->|"plans locally"| node_local
node_base -->|"follows paths"| node_follower
node_waypoint -->|"sends waypoints"| node_base
node_base -->|"commands motion"| node_vehicle
node_operator -->|"views status"| node_visualization
node_simulator -->|"publishes simulation data"| node_visualization
node_unity -.->|"provides environment"| node_simulator
node_simulator -->|"simulates vehicle"| node_vehicle

click node_slam "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/slam/arise_slam_mid360"
click node_cloudstore "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/blob/jazzy/src/slam/arise_slam_mid360/include/arise_slam_mid360/LidarProcess/PointCloudStorage.h"
click node_terrain "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/terrain_analysis"
click node_terrain_ext "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/terrain_analysis_ext"
click node_route "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/route_planner/far_planner"
click node_exploration "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/exploration_planner/tare_planner"
click node_base "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy"
click node_scan "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/sensor_scan_generation"
click node_local "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/local_planner"
click node_follower "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/blob/jazzy/src/base_autonomy/local_planner/src/pathFollower.cpp"
click node_waypoint "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/waypoint_example"
click node_simulator "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/vehicle_simulator"
click node_visualization "https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/visualization_tools"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_slam,node_cloudstore,node_terrain,node_terrain_ext,node_operator toneBlue
class node_route,node_exploration toneAmber
class node_base,node_scan,node_local,node_follower,node_waypoint toneMint
class node_simulator,node_visualization toneRose
class node_lidar,node_vehicle,node_unity,node_joystick toneIndigo
```

## Components

### Sensing and Mapping

- [SLAM](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/slam/arise_slam_mid360): `src/slam/arise_slam_mid360`
- [Point-Cloud Storage](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/blob/jazzy/src/slam/arise_slam_mid360/include/arise_slam_mid360/LidarProcess/PointCloudStorage.h): `src/slam/arise_slam_mid360/include/arise_slam_mid360/LidarProcess/PointCloudStorage.h`
- [Terrain Analysis](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/terrain_analysis): `src/base_autonomy/terrain_analysis`
- [Extended Terrain Analysis](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/terrain_analysis_ext): `src/base_autonomy/terrain_analysis_ext`

### Planning

- [Route Planner](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/route_planner/far_planner): `src/route_planner/far_planner`
- [TARE Exploration](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/exploration_planner/tare_planner): `src/exploration_planner/tare_planner`

### Base Autonomy

- [Base Autonomy](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy): `src/base_autonomy`
- [Scan Generation](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/sensor_scan_generation): `src/base_autonomy/sensor_scan_generation`
- [Local Planner](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/local_planner): `src/base_autonomy/local_planner`
- [Path Follower](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/blob/jazzy/src/base_autonomy/local_planner/src/pathFollower.cpp): `src/base_autonomy/local_planner/src/pathFollower.cpp`
- [Waypoint Example](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/waypoint_example): `src/base_autonomy/waypoint_example`

### Simulation and Tools

- [Vehicle Simulator](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/vehicle_simulator): `src/base_autonomy/vehicle_simulator`
- [Visualization Tools](https://github.com/jizhang-cmu/autonomy_stack_mecanum_wheel_platform/tree/jazzy/src/base_autonomy/visualization_tools): `src/base_autonomy/visualization_tools`

### Other components

- **User / Operator**
- **Mid-360 Lidar**
- **T-Bot / Simulator**
- **Unity Environment**
- **Joystick Controller**

## Connections

- Mid-360 Lidar → SLAM: supplies scans
- SLAM → Point-Cloud Storage: stores point clouds
- SLAM → Route Planner: provides mapping
- User / Operator → Route Planner: sets goal
- Route Planner → Base Autonomy: guides navigation
- User / Operator → TARE Exploration: starts exploration
- SLAM → TARE Exploration: provides mapping
- TARE Exploration → Base Autonomy: plans exploration
- Mid-360 Lidar → Terrain Analysis: supplies sensor data
- Terrain Analysis → Base Autonomy: supports traversability
- Joystick Controller → Base Autonomy: sends commands
- Base Autonomy → Scan Generation: uses scan generation
- Base Autonomy → Local Planner: plans locally
- Base Autonomy → Path Follower: follows paths
- Waypoint Example → Base Autonomy: sends waypoints
- Base Autonomy → T-Bot / Simulator: commands motion
- User / Operator → Visualization Tools: views status
- Vehicle Simulator → Visualization Tools: publishes simulation data
- Unity Environment → Vehicle Simulator: provides environment
- Vehicle Simulator → T-Bot / Simulator: simulates vehicle
