-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathcontacts.py
More file actions
26 lines (20 loc) · 836 Bytes
/
contacts.py
File metadata and controls
26 lines (20 loc) · 836 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import numpy as np
from crazyflow.sim import Physics, Sim
from crazyflow.sim.sim import use_box_collision
def main():
"""Spawn multiple drones in multiple worlds and check for contacts."""
n_worlds, n_drones = 2, 3
sim = Sim(n_worlds=n_worlds, n_drones=n_drones, physics=Physics.so_rpy, device="cpu")
use_box_collision(sim, enable=True) # Enable box collision for all drones
fps = 60
cmd = np.zeros((sim.n_worlds, sim.n_drones, 4))
cmd[..., 3] = sim.data.params.mass[0, 0, 0] * 9.81 * 1.04
for i in range(int(2 * sim.control_freq)):
sim.attitude_control(cmd)
sim.step(sim.freq // sim.control_freq)
if ((i * fps) % sim.control_freq) < fps:
sim.render()
print(f"Contacts: {sim.contacts().any()}")
sim.close()
if __name__ == "__main__":
main()