This is our solution to the DRDO Navigation Challege in Inter IIT Tech Meet 10.0 In the problem statement, we were asked to use a UAV to explore and
map a mountainous terrain during summer time. After mapping, the UAV must be used to guide a UGV to traverse through the
terrain during the winter time when roads are covered with snow.
Key points from the PS
• The UAV has an IMU, a GPS and a RGBD camera as sensors.
• The UGV has no sensor.
• The mapping needs to be completed in the textured world while
the UGV navigates in the untextured world.
Mapping: We segmented roads based in UAV Camera feed using U-Net, and used frontier exploration to map the
entire terrain.
UAV Localization and Control: We used Ardupilot coupled with our own control and
planning algorithms for UAV control. The UAV localization was
done by filtering and combining the GPS and IMU data.
UGV Localization and Control: For
localization of UGV, we used Yolov5 on
the UAV camera feed and localized it relative to the UAV. We used the
Se2_Navigation and Navfn RIS packages for path planning and UGV control.
UAV Localization
In the problem
statement, we were provided with GPS and IMU sensors on the UAV. We fused the incoming data from these sensors using Extended Kalman Filter to produce our desired odometry.
The node ekf_localization in robot_localization ROS package provided us with the 15D odometry. Maximum observed error after multiple-goal points turned out to be ±0.5 meters in all three axes.
Terrain Mapping
Road Segmentation
We prepared a dataset containing simulated environment images and manually annotated them using CVAT. Then we fit a UNET to segment the roads in those images. For better training, we used standard augmentation techniques and obtained ~96% accuracy on testing data. More details can be found in our report.
UNET Segmentation Results
Exploration Pipeline
The mapping performed by the UAV has been implemented using
the RTABMAP ROS package. The package uses RGB-D SLAM approach
and create a 2D Occupancy grid map using the 3D
pointcloud values obtained by RGBD camera atop the drone.
The package takes in the values from the camera as well as the
odometry, and publishes the projected 2D map of the 3D environment.
Next, we implemented the Frontier Exploration approach using the
Frontier_Exploration ROS package in order to explore the world terrain.
Frontiers are regions on the boundary between open space and
unexplored space. By moving to a new frontier, we can keep building
the map of the environment, until there are no new frontiers left to
detect.
UGV Navigation
UGV Detection and Tracking
Detection and Tracking Pipeline
UGV Controls
For UGV control Pure Pursuit Controller was used which is a path tracking algorithm.It computes the angular velocity command that moves the robot from its current position to reach some look-ahead point in front of the robot.
UGV Planning
Local Planner-OMPL(Open Motion Planning Library) is a collection of state-of-the-art sampling-based motion planning algorithms.
Global Planner-TEB (Timed Elastic Band) locally optimizes the robot's trajectory with respect to trajectory execution time, separation from obstacles and compliance with kinodynamic constraints at runtime.
We used se2_navigation ROS package
which subscribes to the odometry topic of car with respect
to a suitable odom frame to receive car's odometry w.r.t initial starting position
and orientation of the drone.
Now when we publish a suitable goal point in the same odom frame, the
se2 OMPL planner inside this package plans a proper trajectory for the
car to follow which is a sequential array of poses in the odometry frame.
This webpage template was borrowed from some colorful folks.