411# Nasa 3d model source: https://mars.nasa.gov/resources/25043/mars-ingenuity-helicopter-3d-model/
2# Mars surface texture source: https://www.nasa.gov/image-feature/jpl/second-color-image-taken-by-ingenuity/
3import time
4from simulation import Ingenuity
5
6drone = Ingenuity()
7TARGET_ALTITUDE = 2.5
8
9# display the countdown
10for countdown in range(5, 0, -1):
11print("Takeoff in", countdown)
12time.sleep(1)
13
14# startup rotors
15drone.spin_rotor(1, 50)
16drone.spin_rotor(2, 50)
17time.sleep(1)
18
19rotor_speed = 50
20
21while True:
22altitude = drone.get_altitude()
23if altitude < TARGET_ALTITUDE:
24rotor_speed += 5
25if rotor_speed > 100:
26rotor_speed = 100
27else:
28rotor_speed -= 5
29if rotor_speed < 0:
30rotor_speed = 0
31drone.spin_rotor(1, rotor_speed)
32drone.spin_rotor(2, rotor_speed)
33print("Rotor speed: {:3}% Altitude: {:.2f}m".format(rotor_speed, altitude))
34time.sleep(0.1)
35
36
37# Challenges
38# 1) Adjust the rotor speeds to make the drone hover at 2.5m
39# 2) Make the drone hover at 2.5m for 3s then descend to 1m for 3s
40# 3) Make the drone land safely
41