This repository containes all files necessary to compete in the ISAAC Challenge during Aerial Robotics course (summer 2024).
- ISAAC-SIM - https://developer.nvidia.com/isaac-sim
- ROS2 Humble - https://docs.ros.org/en/humble/index.html
- PX4-Autopilot - https://docs.px4.io/main/en/
- Fast-DDS - https://docs.px4.io/main/en/ros/ros2_comm.html
- PegasusSimulator - https://pegasussimulator.github.io/PegasusSimulator/
- Clone this repository.
- Open repository in VSCode.
- Reopen repository in container (left bottom in VSCode).
- Run
./initialize_image.sh
command inside container. - The container is ready to be used.
- Make sure that you have a compatible NVIDIA GPU for ISAAC SIM.
- Set up nvidia-container (till the end).
- Install Omniverse Streaming Client.
- If you want to access ROS2 topics outside of container, install ROS2 Humble or Foxy.
Open 1st terminal and...
- Source ROS2 with
source /opt/ros/humble/setup.bash
- Run
export FASTRTPS_DEFAULT_PROFILES_FILE=/workspaces/ar_challenge_isaac/fastdds.xml
- Run ISAAC SIM demo with
"/isaac-sim/python.sh /workspaces/ar_challenge_isaac/demo.py"
- You can access ISAAC SIM GUI with Omniverse Streaming Client (default server).
Open 2nd terminal and...
- Go to
cd /workspaces/px4_ros2_comm_ws
directory. - Source ROS2 with
source /opt/ros/humble/setup.bash
- Set up workspace with
source ./install/setup.sh
- Run PX4-ROS2 communication with
MicroXRCEAgent udp4 -p 8888
Open 3rd terminal and...
- Go to
cd /root/PX4-Autopilot
directory. - Run PX4 backend with
make px4_sitl none_iris
The goal of this challenge is to implement control for a UAV to complete three laps of a race around a track marked with gates. The obligatory task takes into account a race based on a set trajectory. The trajectory is to be determined on the basis of the position of the gates. An additional task is the implementation of control without a predetermined trajectory. This is done using the UAV-mounted camera and the detection of ArUco markers mounted on the gates.
The gates located at different heights on the stage area (warehouse) constitute the race route. Once the entire demo is running (simulation, PX4, Fast-DDS communication), the publlishers and subscribers necessary to control the UAV and access the sensors are available in the ROS environment (you can list them with ros2 topic list
).
The way to evaluate the solution will be the time it takes to complete three laps of the race. The time required for takeoff should not be taken into account. The race time will be counted as the time between the first and last passing of the first gate.
A good way to start approaching the challenge is to familiarise yourself with the environment used (including ISAAC SIM with PegasusSimulator, PX4 and ROS2). In this challenge, control of the drone is performed by the PX4 autopilot and executed by ROS2 via Fast-DDS communication. The links found in this README
in the Used Tools
section will be useful (especially PX4 documentation and ROS2 tutorials). A simple sample UAV offboard control (takeoff) application from the px4_ros_com
package, can be used as a starting point. Try running it as follows:
Open 4th terminal and...
- Go to
cd /workspaces/px4_ros2_comm_ws
directory. - Source ROS2 with
source /opt/ros/humble/setup.bash
- Set up workspace with
source ./install/setup.sh
- Run example ROS2 drone control (takeoff) with
ros2 run px4_ros_com offboard_control
- You can also use adittional terminal to run sensors listener with
ros2 launch px4_ros_com sensor_combined_listener.launch.py