This project includes an implementation of operating the snow sampler drone.
This work has been submitted to ISSW 2024.
cd ~
mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://github.com/Jaeyoung-Lim/adaptive-snowsampler.git -b ros1
git clone https://github.com/ethz-asl/grid_map_geo.git
git clone https://github.com/ethz-asl/mav_comm.git
git clone https://github.com/ethz-asl/terrain-navigation.git
cd ..
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -y
catkin build
# post building tasks
echo 'ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="fc5f", GROUP="dialout"' | sudo tee /etc/udev/rules.d/99-actuonix.rules #setting usb permissions
sudo usermod -aG dialout user # add user to the dailout group
sudo reboot # needed for the usb permissions to take effect
# installation of GeographicLib dependency
cd ~
git clone https://github.com/mavlink/mavros.git
sudo apt install geographiclib-tools libgeographic-dev
sudo ~/mavros/mavros/scripts/install_geographiclib_datasets.sh
Run the code with the following launch file
source ~/ros2_ws/install/setup.bash
ros2 launch adaptive_snowsampler launch.xml
Set the Package Paths
cd ~/PX4-Autopilot/
DONT_RUN=1 make px4_sitl_default gazebo-classic
source ~/catkin_ws/devel/setup.bash # (optional)
source Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic
Set the takeoff location
export PX4_HOME_LAT=46.785479
export PX4_HOME_LON=9.846803
export PX4_HOME_ALT=2301.23
Run the node
roslaunch adaptive_snowsampler sitl_run.launch
To control the vehicle from the ground, we need to connect to the ROS Master on the drone. Whereby its important that the IP is correct and that the drone and ground station are in the same zerotier network. Run rviz with the following command.
ROS_MASTER_URI=http://172.30.132.111:11311
roslaunch snowsampler_rviz run.launch