feat: PX4Multirotor performance and lockstep improvements - #41
Closed
Tuxliri wants to merge 6 commits into
Closed
Conversation
Add px4 support - DTSW-7150
- Send magnetometer and barometer data in HIL_SENSOR with correct fields_updated bitmask (ACCEL|GYRO|MAG|BARO = 7167) — previously only ACCEL+GYRO were sent, causing PX4 to time out on MAG and BARO and fall back to SIH internal sensors - Switch physics integrator from Radau (implicit, expensive) to RK45 with max_step=0.05 to avoid double-stepping at typical engine delta_times (~9ms) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
torch, torchdiffeq, roma, and opt-einsum are only required for the batched simulator (BatchedMultirotor, simulate_batch, BatchedSE3Control, etc.). Moving them to an optional extra avoids forcing all users to install PyTorch (~2 GB) when they only need the standard single-drone simulator. - pyproject.toml: remove the four packages from core dependencies and add a new `batched` extra; also include them in `all` - Wrap top-level torch/roma/torchdiffeq imports with try/except in every file that mixes batched and non-batched classes, so those modules remain importable without the extra installed Install the batched simulator with: pip install rotorpy[batched] Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Make PyTorch an optional dependency for the batched simulator
- Add fixed-step RK4 integrator to Multirotor base class (7x faster than solve_ivp for small timesteps, identical accuracy at dt<=4ms). PX4Multirotor enables it by default. - Precompute IMU measurements once per step and pass to HIL messages, avoiding redundant computation. - Add configurable lockstep_timeout parameter (default 0.002s) with retry loop in _fetch_latest_px4_control. Allows DTPS bridge mode to use longer timeouts for higher-latency round trips. - Add per-step timing instrumentation (printed every 500 steps).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add fixed-step RK4 integrator to Multirotor base class (7x faster than solve_ivp for small timesteps, identical accuracy at dt<=4ms). PX4Multirotor enables it by default.
Precompute IMU measurements once per step and pass to HIL messages, avoiding redundant computation.
Add configurable lockstep_timeout parameter (default 0.002s) with retry loop in _fetch_latest_px4_control. Allows DTPS bridge mode to use longer timeouts for higher-latency round trips.
Add per-step timing instrumentation (printed every 500 steps).