You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First of all, thank you for this outstanding work and for making the code
publicly available. The paper is truly impressive, and the training pipeline
works flawlessly on our side.
We are currently attempting to deploy the pretrained model (checkpoint0004)
to a PX4 SITL simulation with an X500 drone in Gazebo Garden, and have been
encountering a persistent sim-to-real gap. We would be very grateful for any
guidance or suggestions you might have.
GRU hidden state and coordinate transforms (heading frame → world → NED)
are all verified to match main_cuda.py exactly
CUDA environment evaluation (native, no PX4):
checkpoint0004: ~87% success rate, ~5.7 m/s average speed in the
single-agent training configuration
The model clearly knows how to navigate and avoid obstacles in CUDA
What we tried (none resolved the gap):
Velocity setpoint with full integrator (v += a·dt, damping=1.0)
Direct acceleration setpoint (OffboardControlMode.acceleration = True, TrajectorySetpoint.acceleration = acc_cmd)
Training with a 2nd-order Butterworth low-pass filter (fc=3–4 Hz,
~105–135 ms step response) on the action before CUDA dynamics
PPO fine-tuning in CUDA with reward = speed − collision penalty
In all cases, the model either cannot track the reference stably, or collides
with obstacles that it should be avoiding in the CUDA environment.
Our analysis:
We believe the root cause is that CUDA training assumes instant force
application (act is applied directly as acceleration, v += a·dt, p += v·dt), whereas PX4 has a cascaded control chain
(position → velocity → attitude → motor) with ~150–250 ms total response
delay. The pretrained model has no way to compensate for this actuation lag.
We also noticed from Section F and Appendix of the paper that the real-world
flights used a custom 365g quadrotor with BetaFlight, and PX4 was only
mentioned as one of the comparison platforms. This might explain why we
are struggling with PX4 specifically.
Questions
On the BetaFlight platform used in the paper, what was the control
interface between the model and the flight controller? Was it direct
motor commands, attitude rate setpoints, or something else?
Was the model ever tested on a PX4-based platform (e.g., the 1.2 kg
drone mentioned in the appendix)? If so, could you share any details on
how the model output was bridged to PX4's offboard interface?
Do you have any plans or suggestions for deploying to PX4/ArduPilot SITL
(Gazebo)? A reference configuration—even a rough one—would be immensely
valuable for the community.
Thank you very much for your time, and again for the excellent research.
Dear authors,
First of all, thank you for this outstanding work and for making the code
publicly available. The paper is truly impressive, and the training pipeline
works flawlessly on our side.
We are currently attempting to deploy the pretrained model (checkpoint0004)
to a PX4 SITL simulation with an X500 drone in Gazebo Garden, and have been
encountering a persistent sim-to-real gap. We would be very grateful for any
guidance or suggestions you might have.
gz_px4_diff.mp4
What we have done
Environment:
DiffPhysModel.forward()→acc_cmd(NED)main_cuda.py:a_pred - v_predin body heading frame → world net acceleration → NEDVerification of the visual pipeline:
3/depth.clamp(0.3, 24) - 0.6,MaxPool2d(4,4)to16×12, plusrandn(0.02)noiselocal_v(3) + target_v_local(3) + body_up(3) + margin(1)= 10 dimsare all verified to match
main_cuda.pyexactlyCUDA environment evaluation (native, no PX4):
checkpoint0004: ~87% success rate, ~5.7 m/s average speed in thesingle-agent training configuration
What we tried (none resolved the gap):
v += a·dt, damping=1.0)OffboardControlMode.acceleration = True,TrajectorySetpoint.acceleration = acc_cmd)~105–135 ms step response) on the action before CUDA dynamics
In all cases, the model either cannot track the reference stably, or collides
with obstacles that it should be avoiding in the CUDA environment.
Our analysis:
We believe the root cause is that CUDA training assumes instant force
application (
actis applied directly as acceleration,v += a·dt,p += v·dt), whereas PX4 has a cascaded control chain(position → velocity → attitude → motor) with ~150–250 ms total response
delay. The pretrained model has no way to compensate for this actuation lag.
We also noticed from Section F and Appendix of the paper that the real-world
flights used a custom 365g quadrotor with BetaFlight, and PX4 was only
mentioned as one of the comparison platforms. This might explain why we
are struggling with PX4 specifically.
Questions
On the BetaFlight platform used in the paper, what was the control
interface between the model and the flight controller? Was it direct
motor commands, attitude rate setpoints, or something else?
Was the model ever tested on a PX4-based platform (e.g., the 1.2 kg
drone mentioned in the appendix)? If so, could you share any details on
how the model output was bridged to PX4's offboard interface?
Do you have any plans or suggestions for deploying to PX4/ArduPilot SITL
(Gazebo)? A reference configuration—even a rough one—would be immensely
valuable for the community.
Thank you very much for your time, and again for the excellent research.
Best regards