A ROS1 package for odometry-assisted 2D LiDAR SLAM and click-to-goal navigation on a Unitree Go1. The system converts LaserScan measurements into a persistent occupancy grid, refines odometry with local scan matching, and plans collision-aware paths with A*.
LaserScan ──> point conversion ──> local scan matching ──┐
├─> fixed-map occupancy grid
Odometry ──> pose relative to startup ──────────────────┘
RViz goal + map + pose ──> obstacle inflation ──> A* ──> look-ahead controller
└─> stop/slowdown from front scan
The key design decision is to anchor the map at the startup pose. Odometry supplies continuous motion prediction, while scan matching searches only near that prediction. This avoids the earlier failure mode in which obstacles were repeatedly written around a moving local origin.
LaserScanfiltering and Cartesian conversion- Odometry-relative pose initialization
- Local correlative scan matching
- Log-odds occupancy-grid updates with ray tracing
- Persistent obstacle visualization
- ROS TF publication (
map -> odom) - Occupancy-aware A* with obstacle inflation
- Look-ahead path following and front-sector emergency stopping
- RViz launch/configuration for map, path, pose and obstacle inspection
Inputs:
/slamware_ros_sdk_server_node/scan
/slamware_ros_sdk_server_node/odom
/move_base_simple/goal
Outputs:
/slam_v44/map
/slam_v44/pose
/slam_v44/slam_path
/slam_v44/global_path
/slam_v44/debug_cmd_vel
/slam_v44/persistent_obstacle_markers
TF: map -> odom
Requirements: Ubuntu with ROS Melodic, catkin, a compatible 2D LiDAR/odometry source, and the message packages declared in package.xml.
mkdir -p ~/catkin_ws/src
cp -r slam_v44 ~/catkin_ws/src/
cd ~/catkin_ws
catkin_make
source devel/setup.bash
roslaunch slam_v44 slam_v44.launchThe launch file publishes controller output to a debug topic by default. Verify map, TF, path and velocity direction before remapping it to the robot motion topic.
Download the RViz/navigation recording
- The scan matcher is local and relies on usable odometry prediction.
- This version has no full pose-graph loop closure, so long trajectories may accumulate drift.
- Parameters were tuned in a classroom environment and need recalibration for different sensors or spaces.
- Navigation is a compact research controller, not a safety-certified robot stack.
This package was developed and evaluated as part of a team robotics course assignment. The repository presents the shared implementation and team result; it should not be interpreted as sole authorship of every team artifact. Third-party robot drivers and SDKs are intentionally excluded.

