This repository implements a UAV system for automatic radar and camera surveys.
Please cite our accompanying publication when using this repository.
Bähnemann, Rik, et al.
"Under the Sand: Navigation and Localization of a Small Unmanned Aerial Vehicle for Landmine Detection with Ground Penetrating Synthetic Aperture Radar"
Field Robotics. 2021 (submitted).
The system uses ROS as middle ware to implement interfaces to various sensors and the DJI Onboard SDK. Please follow the supervised installation guide to install the versioned stack on the onboard computer as well as base station computer and RTK base station.
The custom dependencies are managed through wstool. If not stated otherwise, update the following way.
cd ~/catkin_ws/src
catkin clean -y
wstool update -j8
cd mav_findmine
git checkout v1.0.5
cd ..
wstool merge --merge-replace -y ./mav_findmine/install/dependencies.rosinstall
wstool update -j8
catkin build
The user workflow to perform a survey with either camera or radar is organized in the following steps:
- Plan a mission offline
- Setup the field test sequentially
2.1 Survey the base station position (old/new)
2.2 Power the UAV - Upload the mission file into the
/home/$USER/trajectories
folder on the UAV - Configure the mission on the UAV
configure_mission $UAV_NAME
- Open the mission control center
mission_control $UAV_NAME
- Load the trajectory on the UAV
trajectory_start $UAV_NAME my_trajectory.yaml
- Inspect the trajectory in the mission control center and press
approve trajectory - The resulting sensor logs are placed in a folder
/home/$USER/bags/YYMMDDHHMMSS
The repository is separated into two main categories.
The packages in the integration folder gather different external dependencies into single system applications.
Package | Summary |
---|---|
fm_missions | Scripts to start all system components and state machine to execute automatic survey. |
fm_vicon | Scripts to perform Vicon ground truth evaluation experiments. |
The packages in the libs folder are custom self-contained applications tailored for the automatic survey system.
Package | Summary |
---|---|
fm_altitude_estimator | A Kalman filter to fuse GNSS change in altitude, lidar, and radar altimeter into single altitude above ground estimate. |
fm_comm | Custom message definitions, services, and interface wrappers. |
fm_control | A PID controller for DJI M600 Pro. |
fm_mission_planner | A RVIZ plugin to plan and visualize survey trajectories. |
fm_pix4d | A pipeline to prepare rosbags for Pix4d mapper, create google tiles from Pix4d products, and host the tiles to be used as backdrop in mission planner. |
fm_ppk | Scripts to perform a PPK survey using rtklib and swiss topo correction services. |
fm_radar_driver | A slightly modified version of the THU GPR driver. |
fm_sensor_watchdog | A PyQT GUI to monitor sensor status and engage a mission. |
fm_task_manager | A collection of robot tasks, e.g., take off, waypoints, and sensor recording, based on ros_task_manager. |
fm_trajectories | A library to create custom trajectories, e.g, circles, strips, and rectangles based on mav_trajectory_generation. |