{"repo":"JacopoPan/aerial-autonomy-stack","free":true,"listed":false,"github":"https://github.com/JacopoPan/aerial-autonomy-stack","clone":"git clone https://github.com/JacopoPan/aerial-autonomy-stack.git","description":"An open framework to simulate and deploy perception-based PX4/ArduPilot drone swarms with ROS2, YOLO, LiDAR, NVIDIA Jetson","language":"C++","stars":566,"topics":["ardupilot","drone","fixed-wing","gazebo","gymnasium","hitl","jetpack","lidar","multi-agent","offboard","orin","px4","quadrotor","ros2","simulation","swarm","tailsitter","uav","vtol","yolo"],"license":"MIT","category":"robotics_simulation","readme_excerpt":"# aerial-autonomy-stack\n\n*Aerial autonomy stack* (AAS) is a \"batteries included\", flight-proven, open software and the simplest/fastest way to:\n\n1. **Develop** multi-drone autonomy—with PX4, ArduPilot, and ROS2\n2. **Simulate** faster-than-real-time perception and control—with YOLO and 3D LiDAR\n3. **Deploy** in real drones—with JetPack, DeepStream, and NVIDIA Orin\n\nFor an example bill of materials, read [`BOM.md`](/tools_and_docs/docs/BOM.md); for motivation, read [`RATIONALE.md`](/tools_and_docs/docs/RATIONALE.md)\n\nhttps://github.com/user-attachments/assets/57e5bc91-8bee-4bae-8f81-a9aacef471e7\n\n<details>\n<summary><b>Features</b> <i>(click to expand)</i></summary>\n\n- **PX4 and ArduPilot multi-vehicle** simulation (**quadrotors, quadplane VTOLs, and tailsitters**)\n- ROS2 action-based autopilot interface (*via* XRCE-DDS or MAVROS)\n- **YOLO** (with ONNX GPU Runtimes) and **LiDAR** Odometry (with [KISS-ICP](https://github.com/PRBonn/kiss-icp))\n- 3D worlds for perception-based simulation\n- **Steppable** [Gymnasium environment](https://gymnasium.farama.org/index.html) and **faster-than-real-time**, **multi-instance** simulation\n- Gazebo's wind effects and [waves](https://github.com/srmainwaring/asv_wave_sim) plugins\n- **Dockerized simulation** based on [Ubuntu with CUDA and cuDNN](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/cuda/tags)\n- **Dockerized deployment** based on [NVIDIA JetPack](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-jetpack/tags) with [DeepStream](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Installation.html#platform-and-os-compatibility)\n- **Windows 11** compatibility *via* WSL\n- Multi-**Jetson-in-the-loop (HITL) simulation** to test NVIDIA- and ARM-based on-board compute\n- Dual network to separate simulated sensors (`SIM_SUBNET`) and inter-vehicle comms (`AIR_SUBNET`)\n- [Zenoh](https://github.com/eclipse-zenoh/zenoh-plugin-ros2dds) inter-vehicle ROS2 bridge\n- [PX4 Offboard](https://docs.px4.io/main/en/flight_modes/offboard.html) interface (e.g. CTBR/`VehicleRatesSetpoint` for agile, GNSS-denied flight)\n- [ArduPilot Guided](https://ardupilot.org/copter/docs/ac2_guidedmode.html) interface (i.e. `setpoint_velocity`, `setpoint_accel` references)\n- Logs analysis with [`flight_review`](https://github.com/PX4/flight_review) (`.ulg`), MAVExplorer (`.bin`), and [PlotJuggler](https://github.com/facontidavide/PlotJuggler) (`rosbag`)\n</details>\n\n## 1. Installation\n\n> AAS is developed on Ubuntu 24.04 with `nvidia-driver-580` using an i7-11 with 16GB RAM and RTX 3060\n>\n> Read [`REQUIREMENTS_UBUNTU.md`](/tools_and_docs/docs/REQUIREMENTS_UBUNTU.md) (or [`REQUIREMENTS_WSL.md`](/tools_and_docs/docs/REQUIREMENTS_WSL.md) for Windows 11) to install the requirements\n\n```sh\nsudo apt update && sudo apt install -y git xterm xfonts-base wget unzip\n\ngit clone https://github.com/JacopoPan/aerial-autonomy-stack.git\ncd aerial-autonomy-stack/tools_and_docs/\n\n./tests/check_requirements.sh                         # AAS requires nvidia-driver-580, docker, and nvidia-container-toolkit\n./sim_build.sh                                        # The 1st build takes ~45' with good internet (`Ctrl + c` and restart if needed, cached stages will be preserved)\n```\n\n<details>\n<summary><b>ghcr.io pre-built images</b> <i>(click to expand)</i>\n<a href=\"https://github.com/JacopoPan/aerial-autonomy-stack/actions/workflows/aas-amd64-build-and-test.yml\"><img align=\"right\" src=\"https://github.com/JacopoPan/aerial-autonomy-stack/actions/workflows/aas-amd64-build-and-test.yml/badge.svg\" alt=\"aas build-and-test amd64\"></a>\n</summary>\n\n```sh\n# ghcr.io images are re-built from `main` every Friday night\nfor name in aircraft ground simulation; do\n  docker pull ghcr.io/jacopopan/${name}-image:latest\n  docker tag ghcr.io/jacopopan/${name}-image:latest ${name}-image:latest\ndone\n```\n</details>\n\n## 2. Multi-drone Simulation\n\n![workspace](https://github.com/user-attachments/assets/81b6df7f-f85f-4764-acb3-055e37f6419d)\n\nStart AAS:\n\n```sh\ncd aerial-autonomy-stack/tools_and_docs/\n\nNUM_QUADS=1 NUM_VTOLS=1 WORLD=swiss_town RTF=3 PLOT=true ./sim_run.sh    # Start a simulation, check the script for more options (note: ArduPilot SITL checks take ~30s of simulated time before being ready to arm)\n\n# Simulation options:\n#  AUTOPILOT=px4, ardupilot\n#  HEADLESS/CAMERA/LIDAR=true, false\n#  NUM_QUADS/NUM_VTOLS/NUM_TAILS=0, 1, ...\n#  WORLD=impalpable_greyness, apple_orchard, crematoria, shibuya_crossing, swiss_town, waterworld\n#  RTF=1, 2, ... (real-time-factor, use 0 for \"as fast as possible\")\n#  INSTANCE=0, 1, ... (integer ID to run multiple parallel simulations)\n#  PLOT/RECORD_ROSBAG=true, false (plotting requires pymavlink, pyulog, pymap3d)\n```\n\nThere are **3 different ways** to autonomously fly the drones (plus QGroundControl for operator supervision)\n\n1. From the `Ground`'s terminal, fly all drones in a **synchronized formation** with [`dtc_controller_node`](/ground/ground_ws/src/drone_traffic_controller/drone_traffic_controller/dtc_controller_node.py):\n```sh\nros2 run drone_traffic_controller dtc_controller --ros-args -p use_sim_time:=true\n```\n\n2. From any `QUAD`/`VTOL`/`TAIL` terminal, fly its own **behavior tree mission** (e.g., [`yalla.yaml`](/aircraft/aircraft_resources/missions/yalla.yaml)):\n```sh\nros2 run mission mission --conops yalla.yaml --ros-args -r __ns:=/Drone$DRONE_ID -p use_sim_time:=true\n```\n\n3. From any `QUAD`/`VTOL`/`TAIL` terminal, use **ROS2 actions** for [`px4_offboard`](/aircraft/aircraft_ws/src/offboard_control/src/px4_offboard.cpp)/[`ardupilot_guided`](/aircraft/aircraft_ws/src/offboard_control/src/ardupilot_guided.cpp) controllers:\n```sh\ncancellable_action \"ros2 action send_goal /Drone${DRONE_ID}/takeoff_action \\\n    autopilot_interface_msgs/action/Takeoff '{takeoff_altitude: 30.0}'\"\n# Press Enter to cancel the action or regain the terminal when it finishes\n\ncancellable_action \"ros2 action send_goal /Drone${DRONE_ID}/offboard_action \\\n    autopilot_interface_msgs/action/Offboard \\\n    '{controller_name: att-test, max_duration_sec: 10.0}'\"\n# Add or re-implement offboard controllers in `px4_offboard.cpp`, `ardupilot_guided.cpp`\n```\n\n![logs](https://github.com/user-attachments/assets/d207f4da-6560-4d90-abf6-aac598a168c5)\n\n![worlds](https://github.com/user-attachments/assets/97c736df-eba4-456d-9b44-42e19ba20cd9)\n\n> `WORLD`s:\n> *(i)* `apple_orchard`, a GIS world created using [BlenderGIS](https://github.com/domlysz/BlenderGIS)\n> / *(ii)* `impalpable_greyness`, an empty world with simple shapes\n> / *(iii)* `shibuya_crossing`, a 3D world adapted from [cgtrader](https://www.cgtrader.com/)\n> / *(iv)* `swiss_town`, a photogrammetry world courtesy of [Pix4D / pix4d.com](https://support.pix4d.com/hc/en-us/articles/360000235126)\n> / *(v)* `waterworld`, a dynamic world using the [`asv_wave_sim`](https://github.com/srmainwaring/asv_wave_sim) wave plugin\n> / *(vi)* `crematoria`, based on DARPA SubT's [`simple_cave_02`](https://github.com/osrf/subt) (CC BY 4.0)\n\n> [!TIP]\n> Edit [`sensor_config.yaml`](simulation/simulation_resources/aircraft_models/sensor_config.yaml), then run `sim_build.sh`, to customize the sensor parameters\n>\n> <details>\n> <summary>Use ROS2 drone and gimbal <b>control primitives</b> from CLI <i>(click to expand)</i></summary>\n>\n> ```sh\n> # Takeoff action (quads and VTOLs/tailsitters)\n> cancellable_action \"ros2 action send_goal /Drone${DRONE_ID}/takeoff_action autopilot_interface_msgs/action/Takeoff '{takeoff_altitude: 40.0, vtol_transition_heading: 330.0, vtol_loiter_north: 200.0, vtol_loiter_east: 100.0, vtol_loiter_alt: 120.0}'\"\n>\n> # Land (at home) action (quads and VTOLs/tailsitters), note: on ArduPilot, overwrites params RTL_ALT/Q_RTL_ALT\n> cancellable_action \"ros2 action send_goal /Drone${DRONE_ID}/land_action autopilot_interface_msgs/action/Land '{landing_altitude: 60.0, vtol_transition_heading: 60.0}'\"\n>\n> # Orbit action (quads and VTOLs/tailsitters), note: on ArduPilot, overwrites param CIRCLE_RATE\n> cancellable_action \"ros2 action send_goal /Drone${DRONE_ID}/orbit_action autopilot_interface_msgs/action/Orbit '{east: 500.0, north: 0.0, altitude: 150.0, radius: 200.0}'\"\n>\n> # Reposition service (quads only)\n> ros2 service call /Drone${DRONE_ID}/set_reposition autopilot_interface_msgs/srv/SetReposition '{east: 50.0, north: 100.0, altitude: 60.0}'\n>\n> # Offboard action (Specify the flight behavior via `controller_name`, e.g., \"traj-test\" for PX4 or \"vel-test\" for ArduPilot)\n> cancellable_action \"ros2 action send_goal /Drone${DRONE_ID}/offboard_action autopilot_interface_msgs/action/Offboard '{controller_name: traj-test, max_duration_sec: 5.0}'\"\n>\n> # SetSpeed service (ephemeral, limited by the autopilot params, for quads applies from the next command, not effective on ArduPilot VTOLs)\n> ros2 service call /Drone${DRONE_ID}/set_speed autopilot_interface_msgs/srv/SetSpeed '{speed: 3.0}'\n>\n> # Gimbal status and position control (in radians)\n> ros2 topic echo /gimbal_state\n> ros2 topic pub -1 /gimbal_pitch_cmd std_msgs/msg/Float64 \"{data: 1.57}\"\n> ```\n> To analyze the flight logs, in the `Simulation`'s terminal:\n> ```sh\n> /aas/simulation_resources/scripts/analyze_logs.sh                                           # Analyze the flight logs at http://10.42.90.100:5006/browse or in MAVExplorer\n> ```\n> </details>\n> <details>\n> <summary>Add or disable <b>wind effects</b>, in the <kbd>Simulation</kbd>'s terminal <i>(click to expand)</i></summary>\n> \n> ```sh\n> python3 /aas/simulation_resources/scripts/gz_wind.py --from_west 0.0 --from_south 3.0\n> python3 /aas/simulation_resources/scripts/gz_wind.py --stop_wind\n> # Note: only use with the quadrotor models as the simulated airspeed sensors on VTOLs/tailsitters are not Gazebo wind-aware\n> ```\n> </details>\n> <details>\n> <summary>Develop within <b>live containers</b> <i>(click to expand)</i></summary>\n> \n> Launching the `sim_run.sh` script with `DEV=true` does **not** start the simulation and mounts folders, `[aircraft|ground]_ws/src` as volumes to more easily track,","default_branch":"main","files":222,"tree":[".dockerignore",".github/workflows/aas-amd64-build-and-test.yml",".github/workflows/aas-gym-pip-install.yml",".github/workflows/aircraft-amd64-build.yml",".github/workflows/aircraft-arm64-build.yml",".github/workflows/clang-tidy-aircraft-amd64-build.yml",".github/workflows/clang-tidy-ground-amd64-build.yml",".github/workflows/cleanup-old-packages.yml",".github/workflows/ground-amd64-build.yml",".github/workflows/shell-and-python-linting.yml",".github/workflows/simulation-amd64-build.yml",".gitignore","LICENSE","README.md","aas-gym/pyproject.toml","aas-gym/src/aas_gym/__init__.py","aas-gym/src/aas_gym/aas_env.py","aircraft/aircraft.yml.erb","aircraft/aircraft_resources/comms/zenoh_config_air.json5.erb","aircraft/aircraft_resources/missions/condition.yaml","aircraft/aircraft_resources/missions/cone.yaml","aircraft/aircraft_resources/missions/inf_loiter.yaml","aircraft/aircraft_resources/missions/test.yaml","aircraft/aircraft_resources/missions/yalla.yaml","aircraft/aircraft_resources/patches/apm_pluginlists.yaml","aircraft/aircraft_resources/patches/camera_calibration.yaml","aircraft/aircraft_resources/patches/cancellable_action.py","aircraft/aircraft_resources/patches/imx219_dewarper_config.txt","aircraft/aircraft_resources/patches/kiss_icp.rviz","aircraft/aircraft_resources/patches/nvinfer_config.txt","aircraft/aircraft_resources/scripts/analyze_bag.sh","aircraft/aircraft_resources/scripts/gymnasium_setup.py","aircraft/aircraft_resources/scripts/inspect_topics.py","aircraft/aircraft_ws/src/autopilot_interface/CMakeLists.txt","aircraft/aircraft_ws/src/autopilot_interface/package.xml","aircraft/aircraft_ws/src/autopilot_interface/src/ardupilot_interface.cpp","aircraft/aircraft_ws/src/autopilot_interface/src/ardupilot_interface.hpp","aircraft/aircraft_ws/src/autopilot_interface/src/px4_interface.cpp","aircraft/aircraft_ws/src/autopilot_interface/src/px4_interface.hpp","aircraft/aircraft_ws/src/autopilot_interface_msgs/CMakeLists.txt","aircraft/aircraft_ws/src/autopilot_interface_msgs/action/Land.action","aircraft/aircraft_ws/src/autopilot_interface_msgs/action/Offboard.action","aircraft/aircraft_ws/src/autopilot_interface_msgs/action/Orbit.action","aircraft/aircraft_ws/src/autopilot_interface_msgs/action/Takeoff.action","aircraft/aircraft_ws/src/autopilot_interface_msgs/msg/OffboardFlag.msg","aircraft/aircraft_ws/src/autopilot_interface_msgs/package.xml","aircraft/aircraft_ws/src/autopilot_interface_msgs/srv/SetReposition.srv","aircraft/aircraft_ws/src/autopilot_interface_msgs/srv/SetSpeed.srv","aircraft/aircraft_ws/src/drone_traffic_client/CMakeLists.txt","aircraft/aircraft_ws/src/drone_traffic_client/package.xml","aircraft/aircraft_ws/src/drone_traffic_client/src/dtc_client_node.cpp","aircraft/aircraft_ws/src/imu_publisher/CMakeLists.txt","aircraft/aircraft_ws/src/imu_publisher/package.xml","aircraft/aircraft_ws/src/imu_publisher/src/imu_publisher_node.cpp","aircraft/aircraft_ws/src/mission/mission/__init__.py","aircraft/aircraft_ws/src/mission/mission/behaviors.py","aircraft/aircraft_ws/src/mission/mission/mission_node.py","aircraft/aircraft_ws/src/mission/mission/tree_builder.py","aircraft/aircraft_ws/src/mission/package.xml","aircraft/aircraft_ws/src/mission/setup.cfg","aircraft/aircraft_ws/src/mission/setup.py","aircraft/aircraft_ws/src/offboard_control/CMakeLists.txt","aircraft/aircraft_ws/src/offboard_control/package.xml","aircraft/aircraft_ws/src/offboard_control/src/ardupilot_guided.cpp","aircraft/aircraft_ws/src/offboard_control/src/ardupilot_guided.hpp","aircraft/aircraft_ws/src/offboard_control/src/px4_offboard.cpp","aircraft/aircraft_ws/src/offboard_control/src/px4_offboard.hpp","aircraft/aircraft_ws/src/state_sharing/CMakeLists.txt","aircraft/aircraft_ws/src/state_sharing/msg/SharedState.msg","aircraft/aircraft_ws/src/state_sharing/package.xml","aircraft/aircraft_ws/src/state_sharing/src/state_sharing_node.cpp","aircraft/aircraft_ws/src/yolo_py/package.xml","aircraft/aircraft_ws/src/yolo_py/setup.cfg","aircraft/aircraft_ws/src/yolo_py/setup.py","aircraft/aircraft_ws/src/yolo_py/yolo_py/__init__.py","aircraft/aircraft_ws/src/yolo_py/yolo_py/yolo_node.py","ground/ground.yml.erb","ground/ground_resources/comms/mavlink_router_base.conf","ground/ground_resources/comms/udp_gst_receiver.py","ground/ground_resources/comms/zenoh_config_ground.json5","ground/ground_resources/patches/QGroundControl.ini","ground/ground_ws/src/drone_traffic_controller/drone_traffic_controller/__init__.py","ground/ground_ws/src/drone_traffic_controller/drone_traffic_controller/dtc_controller_node.py","ground/ground_ws/src/drone_traffic_controller/package.xml","ground/ground_ws/src/drone_traffic_controller/setup.cfg","ground/ground_ws/src/drone_traffic_controller/setup.py","ground/ground_ws/src/ground_system/CMakeLists.txt","ground/ground_ws/src/ground_system/package.xml","ground/ground_ws/src/ground_system/src/ground_system.cpp","ground/ground_ws/src/ground_system/src/ground_system.hpp","ground/ground_ws/src/ground_system_msgs/CMakeLists.txt","ground/ground_ws/src/ground_system_msgs/msg/DroneObs.msg","ground/ground_ws/src/ground_system_msgs/msg/SwarmObs.msg","ground/ground_ws/src/ground_system_msgs/package.xml","simulation/simulation.yml.erb","simulation/simulation_resources/aircraft_models/alti_transition_quad/ardupilot-4.6.params","simulation/simulation_resources/aircraft_models/alti_transition_quad/model.config","simulation/simulation_resources/aircraft_models/alti_transition_quad/model.sdf.erb","simulation/simulation_resources/aircraft_models/create_sdfs_using_sensor_config.rb","simulation/simulation_resources/aircraft_models/iris_with_ardupilot/ardupilot-4.6.params","simulation/simulation_resources/aircraft_models/iris_with_ardupilot/model.config","simulation/simulation_resources/aircraft_models/iris_with_ardupilot/model.sdf.erb","simulation/simulation_resources/aircraft_models/quadtailsitter/5142_gz_aas_quadtailsitter","simulation/simulation_resources/aircraft_models/quadtailsitter/model.config","simulation/simulation_resources/aircraft_models/quadtailsitter/model.sdf.erb","simulation/simulation_resources/aircraft_models/sensor_camera/model.config","simulation/simulation_resources/aircraft_models/sensor_camera/model.sdf.erb","simulation/simulation_resources/aircraft_models/sensor_config.yaml","simulation/simulation_resources/aircraft_models/sensor_gimbal/model.config","simulation/simulation_resources/aircraft_models/sensor_gimbal/model.sdf","simulation/simulation_resources/aircraft_models/sensor_lidar/model.config","simulation/simulation_resources/aircraft_models/sensor_lidar/model.sdf.erb","simulation/simulation_resources/aircraft_models/standard_vtol/5141_gz_aas_standard_vtol","simulation/simulation_resources/aircraft_models/standard_vtol/model.config","simulation/simulation_resources/aircraft_models/standard_vtol/model.sdf.erb","simulation/simulation_resources/aircraft_models/swan_k1_hwing/ardupilot-4.6.params","simulation/simulation_resources/aircraft_models/swan_k1_hwing/model.config","simulation/simulation_resources/aircraft_models/swan_k1_hwing/model.sdf.erb","simulation/simulation_resources/aircraft_models/x500/5140_gz_aas_x500","simulation/simulation_resources/aircraft_models/x500/model.config","simulation/simulation_resources/aircraft_models/x500/model.sdf.erb","simulation/simulation_resources/comms/gz_gst_bridge/CMakeLists.txt","simulation/simulation_resources/comms/gz_gst_bridge/gz_gst_bridge.cpp","simulation/simulation_resources/patches/create_ardupilot_drones_and_world.sh","simulation/simulation_resources/patches/dds_topics.yaml","simulation/simulation_resources/patches/extract_spherical_coords.py","simulation/simulation_resources/patches/px4-v1.17.0.patch","simulation/simulation_resources/patches/tmux.conf","simulation/simulation_resources/scripts/analyze_logs.sh","simulation/simulation_resources/scripts/gz_step.py","simulation/simulation_resources/scripts/gz_wind.py","simulation/simulation_resources/simulation_worlds/airstream/model.config","simulation/simulation_resources/simulation_worlds/airstream/model.sdf","simulation/simulation_resources/simulation_worlds/apple/model.config","simulation/simulation_resources/simulation_worlds/apple/model.sdf","simulation/simulation_resources/simulation_worlds/apple_grid/model.config","simulation/simulation_resources/simulation_worlds/apple_grid/model.sdf","simulation/simulation_resources/simulation_worlds/apple_grid/procedural_trees.sh","simulation/simulation_resources/simulation_worlds/apple_orchard.sdf","simulation/simulation_resources/simulation_worlds/aruco/materials/aruco_marker.png","simulation/simulation_resources/simulation_worlds/aruco/model.config","simulation/simulation_resources/simulation_worlds/aruco/model.sdf","simulation/simulation_resources/simulation_worlds/birch/model.config","simulation/simulation_resources/simulation_worlds/birch/model.sdf","simulation/simulation_resources/simulation_worlds/birch_row/model.config","simulation/simulation_resources/simulation_worlds/birch_row/model.sdf","simulation/simulation_resources/simulation_worlds/cave_3_way_01_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_3_way_01_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_cap_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_cap_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_corner_01_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_corner_01_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_corner_02_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_corner_02_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_elevation_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_elevation_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_starting_area_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_starting_area_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_straight_01_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_straight_01_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_straight_02_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_straight_02_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_straight_03_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_straight_03_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_straight_04_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_straight_04_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_straight_05_type_b/model.config","simulation/simulation_resources/simulation_worlds/cave_straight_05_type_b/model.sdf","simulation/simulation_resources/simulation_worlds/cave_straight_type_a/model.config","simulation/simulation_resources/simulation_worlds/crash/model.config","simulation/simulation_resources/simulation_worlds/crash/model.sdf","simulation/simulation_resources/simulation_worlds/crematoria.sdf","simulation/simulation_resources/simulation_worlds/duckie/model.config","simulation/simulation_resources/simulation_worlds/duckie/model.sdf","simulation/simulation_resources/simulation_worlds/gazebo/model.config","simulation/simulation_resources/simulation_worlds/gazebo/model.sdf","simulation/simulation_resources/simulation_worlds/impalpable_greyness.sdf","simulation/simulation_resources/simulation_worlds/jansport_backpack_red/model.config","simulation/simulation_resources/simulation_worlds/jansport_backpack_red/model.sdf","simulation/simulation_resources/simulation_worlds/jeep/model.config","simulation/simulation_resources/simulation_worlds/jeep/model.sdf","simulation/simulation_resources/simulation_worlds/person_standing/model.config","simulation/simulation_resources/simulation_worlds/person_standing/model.sdf","simulation/simulation_resources/simulation_worlds/rabbit/model.config","simulation/simulation_resources/simulation_worlds/rabbit/model.sdf","simulation/simulation_resources/simulation_worlds/rescue_randy_sitting/model.config","simulation/simulation_resources/simulation_worlds/rescue_randy_sitting/model.sdf","simulation/simulation_resources/simulation_worlds/shibuya_crossing.sdf","simulation/simulation_resources/simulation_worlds/skibidi/model.config","simulation/simulation_resources/simulation_worlds/skibidi/model.sdf","simulation/simulation_resources/simulation_worlds/subaru/model.config","simulation/simulation_resources/simulation_worlds/subaru/model.sdf","simulation/simulation_resources/simulation_worlds/suburb/model.config","simulation/simulation_resources/simulation_worlds/suburb/model.sdf","simulation/simulation_resources/simulation_worlds/swiss_town.sdf","simulation/simulation_resources/simulation_worlds/unicorn/model.config","simulation/simulation_resources/simulation_worlds/unicorn/model.sdf","simulation/simulation_resources/simulation_worlds/waterworld.sdf","simulation/simulation_ws/src/zmq_bridge_cpp/CMakeLists.txt","simulation/simulation_ws/src/zmq_bridge_cpp/package.xml","simulation/simulation_ws/src/zmq_bridge_cpp/src/zeromq_bridge.cpp","tools_and_docs/deploy_build.sh","tools_and_docs/deploy_run.sh","tools_and_docs/docker/aircraft.dockerfile","tools_and_docs/docker/ground.dockerfile","tools_and_docs/docker/simulation.dockerfile","tools_and_docs/docs/BOM.md","tools_and_docs/docs/RATIONALE.md","tools_and_docs/docs/REQUIREMENTS_UBUNTU.md","tools_and_docs/docs/REQUIREMENTS_WSL.md","tools_and_docs/docs/SETUP_AVIONICS.md","tools_and_docs/docs/SETUP_CHRONY.md","tools_and_docs/docs/params/x650-arducopter-4.6.params","tools_and_docs/docs/params/x650-px4-1.17.params","tools_and_docs/gym_run.py","tools_and_docs/plot_logs.py","tools_and_docs/sim_build.sh","tools_and_docs/sim_run.sh","tools_and_docs/tests/.clang-tidy","tools_and_docs/tests/check_env_vars.sh","tools_and_docs/tests/check_requirements.sh","tools_and_docs/tests/performance.sh"],"storefront":"/r/JacopoPan","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/JacopoPan/aerial-autonomy-stack/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}