Astral
Back to Documentation

Run in Simulation

Two ways to run the Astral SDK without hardware: lightweight ArduPilot SITL for API-level work, and Isaac Sim for full perception-in-the-loop autonomy.

Option 1 — ArduPilot SITL (lightweight)

No GPU, no Astral hardware. ~5 min setup. Best for trying the SDK API and validating flight logic before real flight.

Start SITL in one terminal, then point the SDK at it via an env var:

# Terminal 1
sim_vehicle.py -v ArduCopter --console --map

# Terminal 2
pip install astral-sdk
export ASTRAL_SDK_SERIAL_PORT=tcp:127.0.0.1:5760
python -c "
import time, astral_sdk as drone
drone.takeoff(2.0)
time.sleep(5)
drone.land()
drone.disconnect()
"

Runnable example: astral-sdk/examples/sitl.

Option 2 — Isaac Sim (perception-in-the-loop)

Full 3D world with cameras, physics, and the same MAVLink + ROS 2 + Nav2 stack you'd run on real hardware. Requires an NVIDIA RTX GPU and ~50 GB of disk.

Recorded in Isaac Sim — representative of the environments and vehicle mix this stack is built for.

How the pieces connect: your Python calls astral_sdk, which talks MAVLink to ArduPilot SITL, which is driven by Isaac Sim's physics. The astral_drone ROS 2 package bridges Nav2 goals into MAVLink velocity setpoints.

Bring up Isaac with an ArduPilot bridge (Pegasus Simulator is a good starting scene), then connect:

export ASTRAL_SDK_SERIAL_PORT=tcp:127.0.0.1:5760

# Build and launch the ROS 2 package
cd ros2_ws
colcon build --packages-select astral_drone
source install/setup.bash
ros2 launch astral_drone bringup.launch.py

Send Nav2 goals from RViz or ros2 action send_goal and the drone moves in Isaac. Pin a known-good Isaac Sim version — NVIDIA breaks APIs on a roughly quarterly cadence.

Why bother

Real drones are expensive and slow to iterate against. Most autonomy bugs (frame conventions, mode-switch races, velocity-clamp surprises) surface in sim on a laptop, in minutes, with no risk to hardware.

The SDK API is identical between sim and real flight — the only thing that changes is ASTRAL_SDK_SERIAL_PORT. What flies in sim flies on the drone.