-
Notifications
You must be signed in to change notification settings - Fork 0
[DRAFT] Add Lidar 2D SLAM EKF for indoor autonomy testing #25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
| # Pointcloud to LaserScan conversion | ||
| ComposableNode( | ||
| package="pointcloud_to_laserscan", | ||
| plugin="pointcloud_to_laserscan::PointCloudToLaserScanNode", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I maybe did something weird by converting the 3d pointcloud from the ouster into a laser scan instead of just giving the laser scan from the ouster to the slam toolbox. This does let me configure a bit more about what ranges points to accept and min/max threshold, but now that I think about it there must exist a laser scan trimming package that is better than doing this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a new EKF profile for lidar-based 2D SLAM localization to enable indoor autonomy testing without GPS. The implementation integrates the Ouster lidar with SLAM Toolbox to generate pose estimates that replace GPS odometry in the EKF, allowing performance testing of the elevation mapping pipeline in GPS-denied environments.
Key changes:
- Added
lidar_2dslamEKF profile with dedicated local and global configuration files - Created new launch file
lidar_2dslam.launch.pythat orchestrates SLAM components with composable nodes - Added SLAM Toolbox parameter configuration optimized for the Ouster lidar sensor
Reviewed Changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| package.xml | Added dependencies for pointcloud_to_laserscan and slam_toolbox packages |
| ouster_composable.launch.py | Added target_container argument for flexible container assignment and improved documentation |
| lidar_2dslam.launch.py | New launch file that sets up SLAM container with pointcloud conversion and SLAM nodes |
| slam_toolbox_params.yaml | New parameter file with tuned settings for lidar-based online SLAM mapping |
| localization.launch.py | Added ekf_profile argument to support profile selection |
| ekf.launch.py | Updated to support lidar_2dslam profile with improved constant naming and default handling |
| lidar_2dslam_ekf_local.yaml | New local EKF configuration using SLAM pose instead of GPS |
| lidar_2dslam_ekf_global.yaml | New global EKF configuration using SLAM pose instead of GPS |
Comments suppressed due to low confidence (2)
src/Nav/navigation/launch/lidar_2dslam.launch.py:2
- Import of 'Path' is not used.
from pathlib import Path
src/Nav/navigation/launch/lidar_2dslam.launch.py:9
- Import of 'IfCondition' is not used.
from launch.conditions import IfCondition
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
A few general concerns:
|
Created an efk profile and a lidar_2dslam.launch.py which will launch all the regular autonomy stuff as normal, except it will launch the ouster lidar and use a different efk profile that just replaces the gps odom with a pose from slam_toolbox. That way the system operates very closely to how it will with proper gps, and we can performance test the elevation mapping pipeline without worrying about the ouster potentially interfering with it (which other solutions might have that problem).
JIRA: https://jira.engsoc.net/browse/ROVER-673
Copliot summary
This pull request introduces a new EKF (Extended Kalman Filter) profile for lidar-based 2D SLAM localization and adds configuration support for it throughout the launch and configuration files. Additionally, it provides a tailored parameter file for
slam_toolboxto optimize SLAM performance with lidar data. The main changes are grouped below:EKF profile support for lidar-based 2D SLAM:
lidar_2dslam_ekf_local.yamlandlidar_2dslam_ekf_global.yamlfor local and global EKF settings specific to lidar-based 2D SLAM. These files include sensor topics, frame settings, and covariance parameters optimized for lidar and IMU integration. [1] [2]ekf.launch.pyto support selection of the newlidar_2dslamprofile, including changes to profile constants, default handling, and error messages. [1] [2]Launch file integration for EKF profile selection:
localization.launch.pyto propagate theekf_profileargument, allowing users to select betweengpsandlidar_2dslamEKF profiles at launch time. This includes argument declaration, passing, and default handling. [1] [2] [3] [4]SLAM toolbox configuration for lidar mapping:
slam_toolbox_params.yamlwith settings tuned for lidar-based online mapping, including solver configuration, scan matching, keyframe creation, loop closure, and penalty parameters. These changes are designed to improve mapping accuracy and robustness for lidar-based SLAM.