Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
run: |
python3 -m pip install pycodestyle
export PATH=$PATH:$HOME/.local/bin
pycodestyle examples/*
pycodestyle --max-line-length=100 examples/*

- name: Install prerequisites
run: |
Expand Down
1 change: 1 addition & 0 deletions examples/all_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@ async def run():
for param in all_params.float_params:
print(f"{param.name}: {param.value}")


# Run the asyncio loop
asyncio.run(run())
1 change: 0 additions & 1 deletion examples/calibration.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@


async def run():

drone = System()
await drone.connect(system_address="udpin://0.0.0.0:14540")

Expand Down
2 changes: 1 addition & 1 deletion examples/camera.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import asyncio
import logging

from mavsdk.camera import (CameraError, Mode)
from mavsdk.camera import CameraError, Mode
from mavsdk import System

# Enable INFO level logging by default so that INFO messages are shown
Expand Down
75 changes: 39 additions & 36 deletions examples/camera_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from aioconsole import ainput
from mavsdk import System
from mavsdk.camera import (CameraError, Mode, Option, Setting)
from mavsdk.camera import CameraError, Mode, Option, Setting


usage_str = """
Expand All @@ -31,10 +31,10 @@ async def run():
while True:
entered_input = await ainput(usage_str)

if (entered_input == "p"):
if entered_input == "p":
print(f"\n=== Current settings ===\n")
print_current_settings()
elif (entered_input == "m"):
elif entered_input == "m":
print(f"\n=== Possible modes ===\n")
print(f"1. PHOTO")
print(f"2. VIDEO")
Expand All @@ -45,7 +45,7 @@ async def run():
print("Invalid index")
continue

if (index_mode == 1):
if index_mode == 1:
chosen_mode = Mode.PHOTO
else:
chosen_mode = Mode.VIDEO
Expand All @@ -57,13 +57,12 @@ async def run():
print(f" --> Succeeded")
except CameraError as error:
print(f" --> Failed with code: {error._result.result_str}")
elif (entered_input == "s"):
elif entered_input == "s":
print(f"\n=== Possible settings ===\n")
print_possible_settings(possible_setting_options)

try:
index_setting = await \
make_user_choose_setting(possible_setting_options)
index_setting = await make_user_choose_setting(possible_setting_options)
except ValueError:
print("Invalid index")
continue
Expand All @@ -73,36 +72,39 @@ async def run():

print(f"\n=== Available options ===")
print(f"Setting: {selected_setting.setting_id}")
if (not selected_setting.is_range):
if not selected_setting.is_range:
print(f"Options:")
try:
print_possible_options(possible_options)
index_option = await \
make_user_choose_option(possible_options)
index_option = await make_user_choose_option(possible_options)
selected_option = possible_options[index_option - 1]

print(f"Setting {selected_setting.setting_id} "
f"to {selected_option.option_description}!")
print(
f"Setting {selected_setting.setting_id} "
f"to {selected_option.option_description}!"
)
setting = Setting(
selected_setting.setting_id,
"",
selected_option,
selected_setting.is_range)
selected_setting.setting_id,
"",
selected_option,
selected_setting.is_range,
)
except ValueError:
print("Invalid index")
continue
else:
try:
selected_value = await \
make_user_choose_option_range(possible_options)
selected_value = await make_user_choose_option_range(
possible_options
)

print(f"Setting {selected_setting.setting_id}"
f" to {selected_value}!")
print(f"Setting {selected_setting.setting_id} to {selected_value}!")
setting = Setting(
selected_setting.setting_id,
"",
Option(selected_value, ""),
selected_setting.is_range)
selected_setting.setting_id,
"",
Option(selected_value, ""),
selected_setting.is_range,
)
except ValueError:
print("Invalid value")
continue
Expand Down Expand Up @@ -148,7 +150,7 @@ def print_current_settings():
async def make_user_choose_camera_mode():
index_mode_str = await ainput(f"\nWhich mode do you want? [1..2] >>> ")
index_mode = int(index_mode_str)
if (index_mode < 1 or index_mode > 2):
if index_mode < 1 or index_mode > 2:
raise ValueError()

return index_mode
Expand All @@ -163,12 +165,12 @@ def print_possible_settings(possible_settings):

async def make_user_choose_setting(possible_settings):
n_settings = len(possible_settings)
index_setting_str = await \
ainput(f"\nWhich setting do you want to change?"
f" [1..{n_settings}] >>> ")
index_setting_str = await ainput(
f"\nWhich setting do you want to change? [1..{n_settings}] >>> "
)

index_setting = int(index_setting_str)
if (index_setting < 1 or index_setting > n_settings):
if index_setting < 1 or index_setting > n_settings:
raise ValueError()

return index_setting
Expand All @@ -183,11 +185,12 @@ def print_possible_options(possible_options):

async def make_user_choose_option(possible_options):
n_options = len(possible_options)
index_option_str = await \
ainput(f"\nWhich option do you want? [1..{n_options}] >>> ")
index_option_str = await ainput(
f"\nWhich option do you want? [1..{n_options}] >>> "
)

index_option = int(index_option_str)
if (index_option < 1 or index_option > n_options):
if index_option < 1 or index_option > n_options:
raise ValueError()

return index_option
Expand All @@ -202,12 +205,12 @@ async def make_user_choose_option_range(possible_options):
interval_value = float(possible_options[2].option_id)
interval_text = f"interval: {interval_value}"

value_str = await \
ainput(f"\nWhat value do you want?"
f" [{min_value}, {max_value}] {interval_text} >>> ")
value_str = await ainput(
f"\nWhat value do you want? [{min_value}, {max_value}] {interval_text} >>> "
)

value = float(value_str)
if (value < min_value or value > max_value):
if value < min_value or value > max_value:
raise ValueError()

return str(value)
Expand Down
19 changes: 11 additions & 8 deletions examples/do_orbit.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ async def run():
break

position = await drone.telemetry.position().__aiter__().__anext__()
orbit_height = position.absolute_altitude_m+10
orbit_height = position.absolute_altitude_m + 10
yaw_behavior = OrbitYawBehavior.HOLD_FRONT_TO_CIRCLE_CENTER

print("-- Arming")
Expand All @@ -30,17 +30,20 @@ async def run():
await drone.action.takeoff()
await asyncio.sleep(10)

print('Do orbit at 10m height from the ground')
await drone.action.do_orbit(radius_m=10,
velocity_ms=2,
yaw_behavior=yaw_behavior,
latitude_deg=47.398036222362471,
longitude_deg=8.5450146439425509,
absolute_altitude_m=orbit_height)
print("Do orbit at 10m height from the ground")
await drone.action.do_orbit(
radius_m=10,
velocity_ms=2,
yaw_behavior=yaw_behavior,
latitude_deg=47.398036222362471,
longitude_deg=8.5450146439425509,
absolute_altitude_m=orbit_height,
)
await asyncio.sleep(60)

await drone.action.return_to_launch()
print("--- Landing")


if __name__ == "__main__":
asyncio.run(run())
8 changes: 4 additions & 4 deletions examples/failure_injection.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ async def run():
break

print("-- Enabling failure injection")
await drone.param.set_param_int('SYS_FAILURE_EN', 1)
await drone.param.set_param_int("SYS_FAILURE_EN", 1)

print("-- Arming")
await drone.action.arm()
Expand Down Expand Up @@ -51,14 +51,14 @@ async def run():
await asyncio.sleep(5)

print("-- Injecting GPS failure")
await drone.failure.inject(
FailureUnit.SENSOR_GPS, FailureType.OFF, instance=0)
await drone.failure.inject(FailureUnit.SENSOR_GPS, FailureType.OFF, instance=0)

print("-- Waiting 20s before exiting script...")
await asyncio.sleep(20)

print("-- Disabling failure injection")
await drone.param.set_param_int('SYS_FAILURE_EN', 0)
await drone.param.set_param_int("SYS_FAILURE_EN", 0)


if __name__ == "__main__":
# Run the asyncio loop
Expand Down
21 changes: 15 additions & 6 deletions examples/follow_me_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import asyncio
from mavsdk import System
from mavsdk.follow_me import (Config, FollowMeError, TargetLocation)
from mavsdk.follow_me import Config, FollowMeError, TargetLocation


follow_height = 8.0 # in meters
Expand All @@ -18,9 +18,11 @@

# This list contains fake location coordinates
# (These coordinates are obtained from mission.py example)
fake_location = [[47.398039859999997, 8.5455725400000002],
[47.398036222362471, 8.5450146439425509],
[47.397825620791885, 8.5450092830163271]]
fake_location = [
[47.398039859999997, 8.5455725400000002],
[47.398036222362471, 8.5450146439425509],
[47.397825620791885, 8.5450092830163271],
]


async def run():
Expand All @@ -45,8 +47,14 @@ async def run():

# Follow me Mode requires some configuration to be done before starting
# the mode
conf = Config(follow_height, follow_distance, responsiveness,
altitude_mode, max_follow_vel, follow_angle_deg)
conf = Config(
follow_height,
follow_distance,
responsiveness,
altitude_mode,
max_follow_vel,
follow_angle_deg,
)
await drone.follow_me.set_config(conf)

print("-- Taking Off")
Expand Down Expand Up @@ -79,6 +87,7 @@ async def run():
print("-- Landing")
await drone.action.land()


if __name__ == "__main__":
# Run the asyncio loop
asyncio.run(run())
1 change: 0 additions & 1 deletion examples/ftp_download_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@


async def run():

drone = System(mavsdk_server_address="localhost", port=50051)
await drone.connect(system_address="serial:///dev/ttyACM0:57600")

Expand Down
3 changes: 1 addition & 2 deletions examples/ftp_list_dir.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@


async def run():

drone = System(mavsdk_server_address='localhost', port=50051)
drone = System(mavsdk_server_address="localhost", port=50051)
await drone.connect(system_address="serial:///dev/ttyACM0:57600")

print("Waiting for drone to connect...")
Expand Down
1 change: 0 additions & 1 deletion examples/geofence.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@


async def run():

# Connect to the Simulation
drone = System()
await drone.connect(system_address="udpin://0.0.0.0:14540")
Expand Down
8 changes: 3 additions & 5 deletions examples/gimbal.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ async def run():
gimbals = await get_gimbals(drone)

for gimbal in gimbals:

# Start printing gimbal position updates
print_gimbal_position_task = asyncio.create_task(
print_gimbal_attitude(gimbal.gimbal_id, drone)
Expand Down Expand Up @@ -107,9 +106,7 @@ async def run():

# Set the gimbal to track a region of interest (lat, lon, altitude)
# Units are degrees and meters MSL respectively
print(
"Look at a ROI (region of interest) with gimbal ID",
gimbal.gimbal_id)
print("Look at a ROI (region of interest) with gimbal ID", gimbal.gimbal_id)
await drone.gimbal.set_roi_location(
gimbal.gimbal_id, 47.39743832, 8.5463316, 488
)
Expand All @@ -133,7 +130,8 @@ async def print_gimbal_attitude(gimbal_id, drone):
print(
f"Gimbal ID {gimbal_id} "
f"pitch: {attitude.euler_angle_forward.pitch_deg}, "
f"yaw: {attitude.euler_angle_forward.yaw_deg}")
f"yaw: {attitude.euler_angle_forward.yaw_deg}"
)
await asyncio.sleep(0.5)


Expand Down
1 change: 1 addition & 0 deletions examples/highres_imu.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ async def get_imu_data():
print(f"Temperature (°C): {imu.temperature_degc}")
print("-----------------------------------------")


if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(get_imu_data())
2 changes: 1 addition & 1 deletion examples/logfile_download.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ async def download_log(drone, entry):
print(f"Downloading: log {entry.id} from {entry.date} to {filename}")
previous_progress = -1
async for progress in drone.log_files.download_log_file(entry, filename):
new_progress = round(progress.progress*100)
new_progress = round(progress.progress * 100)
if new_progress != previous_progress:
sys.stdout.write(f"\r{new_progress} %")
sys.stdout.flush()
Expand Down
3 changes: 1 addition & 2 deletions examples/manual_control.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,7 @@ async def manual_controls():
# get current state of yaw axis (between -1 and 1)
yaw = float(input_list[3])

await drone.manual_control.set_manual_control_input(
pitch, roll, throttle, yaw)
await drone.manual_control.set_manual_control_input(pitch, roll, throttle, yaw)

await asyncio.sleep(0.1)

Expand Down
Loading
Loading