Difficulty implementing end-to-end gradient flow for differentiable drone physics on Genesis platform #2505
Unanswered
sycamore-yu
asked this question in
Q&A
Replies: 1 comment
-
|
This is not supported for now unfortunately. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Description
I am trying to migrate the DiffPhysDrone project to Genesis because I would like to use a simulator with native differentiable rigid-body physics instead of maintaining a separate custom differentiable quadrotor model.
While doing this migration, I found conflicting signals about the current status of differentiable rigid-body control support for drone training.
In particular, this discussion states:
References:
However, from the perspective of migrating a differentiable drone project, it is still unclear which control inputs are expected to be differentiable today, and which Genesis version or branch should be used.
To Reproduce
1. Official reference behavior
The official
tests/test_grad.pyexamples seem to validate differentiability for:set_velocity()in the official reference examplesThis suggests that rigid-body differentiability exists at least at the simulator level.
2. Local test with rigid control input
I wrote a minimal rigid-body comparison test to check whether control inputs passed via
set_dofs_velocity()can receive gradients from a terminal position loss.Observed behavior on our current local Genesis
0.4.0/ quadrants-based branch:loss.backward()failed with:This suggests that, at least on the tested version,
set_dofs_velocity()is not yet a reliable end-to-end differentiable rigid-body control interface for training.3. Drone-specific control path
For drones, the most natural API seems to be:
DroneEntity.set_propellels_rpm()This is much closer to real quadrotor control than directly writing DOF velocities.
However, I could not find clear documentation stating whether gradients are expected to propagate from a terminal drone loss back to RPM inputs passed to
set_propellels_rpm().4. Open PR related to rigid differentiability
I also found:
This PR is still open and appears to contain key work related to differentiable rigid-body control inputs.
Because of that, I am unsure whether:
Expected Behavior
For users trying to migrate projects like DiffPhysDrone, it would be very helpful to have explicit clarification on:
DroneEntity.set_propellels_rpm()is expected to be differentiable today#2078is still open means differentiable rigid-body control is still incompleteset_propellels_rpm()control_dofs_force()control_dofs_velocity()set_dofs_velocity()Environment
Tested in the following context:
0.4.0on a local quadrants-based branch#2078branchQuestions
1. Is
DroneEntity.set_propellels_rpm()expected to support gradient propagation?For differentiable quadrotor training, RPM is the most physically meaningful control input because it maps to thrust and torque. If this API is not intended to be differentiable today, it would be very helpful to state that explicitly.
2. Does PR
#2078still being open imply that differentiable rigid-body control is not yet fully supported?This is the main source of confusion. The discussion suggests rigid-body simulation is fully differentiable, but the open PR seems to indicate that important rigid-control differentiability work is still ongoing.
3. What is the recommended control API for end-to-end differentiable drone training?
My current understanding is:
set_dofs_velocity()looks more like direct state writing than a preferred training interfacecontrol_dofs_force()seems closer to the intended differentiable rigid-control pathCould maintainers clarify which interface should actually be used?
4. Is native end-to-end differentiable drone training already recommended in Genesis today?
Or is the current practical recommendation still to:
Additional Context
This clarification matters because native differentiable drone control in Genesis would allow users to combine:
Right now it is difficult to tell whether this workflow is already supported, partially supported, or still experimental.
It would be especially helpful if future documentation explicitly separated:
Beta Was this translation helpful? Give feedback.
All reactions