-
Notifications
You must be signed in to change notification settings - Fork 120
Running with SLAM
Any SLAM module that has 6 DOF pose estimation capabilities can be used to correct odometry drift while running our autonomy stack.
The high level idea is that, since the VIO-based odometry system outputs high-frequency smooth estimates while the SLAM system outputs more accurate but less smooth estimates (e.g. jumps in pose estimates upon loop closure), the former is preferable for the controller. We use the two-reference-frame system setup to compensate for the odometry drift, and propagate the drift correction into planning and control modules (this allows the reuse of the motion primitive graph, speeding up the replan process while guaranteeing planner optimality and controller stability). For more details please refer to our paper section IV-D-(3) Real-time drift compensation module
.
The SLAM module needs to publish the transformation between the odometry reference frame (/ROBOT_NAMESPACE/odom) and the SLAM reference frame (/ROBOT_NAMESPACE/map), which will be used by the local-global-replanner in this autonomy stack to guide the robot to plan trajectories to drift-compensated goals, as shown in this file (TransformGlobalGoal function).
Our semantic SLAM for forest under-canopy environment is open-sourced here. The the transformation between the odometry reference frame and the SLAM reference frame is published in sloam/src/core/inputNode.cpp
(specifically, in this part and this function call PublishOdomAsTf
)
- Build and Install:
- Simulation Experiments:
- Real-world Experiments:
- Hardware requirements
- Install real robot code stack
- Safety protocol & preflight check
- Launch experiment and gain tuning
- Supported features:
- Integrate (semantic) SLAM for drift correction
- LIDAR-only autonomous flight
- Full coverage experiments
- Customize configurations: