URDF description of Skydio X2 quadrotor
It is derived from publicly available MJCF description and transformed to URDF manually.
Model can be easily loaded to various libraries such as pinocchio.
For proper simulation one should use specific selector matrix pre-multiplying the input vector of the actuators. Input from actuators should be only positive.
import pinocchio as pin
import numpy as np
model = pin.buildModelFromUrdf("urdf/skydio_x2.urdf")
data = model.createData()
# Selector matrix for actuators
selector = np.array(
[
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[1.0, 1.0, 1.0, 1.0],
[-0.18, 0.18, 0.18, -0.18],
[0.14, 0.14, -0.14, -0.14],
[-0.0201, 0.0201, 0.0201, -0.0201],
]
)
# joint-space force
qfrc_u = selector @ np.array([tau1, tau2, tau3, tau4])
Derivation of the selector matrix is described in this notebook.
Notice, that much attention is put towards dynymics matching the MuJoCo model, collisions are not considered and will be welcomed as a contribution.