Communicate with the MRT Autopilot Mavlink API
Project description
MRT Autopilot Python3 API
This repository contains the Python3 API for the MRT Autopilot.
Installation
pip3 install mrtautopilot
Usage
Example usage:
#!/usr/bin/env python3
import logging
import selectors
import mrtautopilot
# example for send_protobuf_proxy
from mrtproto import autopilot_pb2
PROTO_ID = 0x5433 # defined by protocol
def main():
mavlink = mrtautopilot.MavlinkThread()
proto = autopilot_pb2.VehicleData()
proto.position.latitude_deg = 38.3
proto.position.longitude_deg = -77.1
def got_low_bandwidth():
d: mrtautopilot.LowBandwidth = mavlink.low_bandwidth_queue.get_nowait()
logging.info(f"Got Vehicle Data: {d.latitude_deg}, {d.longitude_deg}")
try:
sel = selectors.DefaultSelector()
sel.register(
mavlink.low_bandwidth_queue_fileobj,
selectors.EVENT_READ,
got_low_bandwidth,
)
count = 0
mavlink.start()
while True:
mavlink.send_heartbeat()
count += 1
if count == 5:
mavlink.send_protobuf_proxy(PROTO_ID, proto.SerializeToString())
if count == 6:
m = mrtautopilot.mission
mavlink.send_mission(
m.Mission(
fault_config=m.FaultConfig(
fault_responses={},
loiter_radius_m=30,
loiter_duration_s=365 * 24 * 60 * 60,
response_speed_mps=3,
),
rally_points=[],
fence=[],
mission_items=[
m.Waypoint(lat_deg=38.31, lon_deg=-77.02, speed_mps=6),
m.Waypoint(lat_deg=38.31, lon_deg=-77.00, speed_mps=6),
m.Waypoint(lat_deg=38.34, lon_deg=-77.00, speed_mps=7),
m.DriftLoiter(
lat_deg=38.34, lon_deg=-77.00, speed_mps=3, radius_m=50
),
],
)
)
if count == 10:
mavlink.set_motor_enablement(True)
mavlink.send_waypoint(38.3, -77.1, 3.0)
if count == 20:
mavlink.set_motor_enablement(False)
mavlink.send_autopilot_stop()
for key, mask in sel.select():
key.data()
finally:
mavlink.stop()
def setup_logging():
logging.basicConfig(
format="%(asctime)s.%(msecs)03d | %(threadName)s | %(levelname)8s | %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
logger = logging.getLogger()
logger.setLevel(logging.INFO)
if __name__ == "__main__":
setup_logging()
try:
main()
except KeyboardInterrupt:
pass
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mrtautopilot-6.tar.gz
(13.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
mrtautopilot-6-py3-none-any.whl
(11.5 kB
view details)
File details
Details for the file mrtautopilot-6.tar.gz.
File metadata
- Download URL: mrtautopilot-6.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd5b4f3ce27fa1aa45e5779f65478a7da1a00bca98ccfc9aed1c0b32d6f20874
|
|
| MD5 |
5ad247ffe2c3c4e97534fa5b091e57a5
|
|
| BLAKE2b-256 |
5e1c3067488d951233a366d8ce585e25f8ca66b42cd1116122536574da34c801
|
File details
Details for the file mrtautopilot-6-py3-none-any.whl.
File metadata
- Download URL: mrtautopilot-6-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
670473867ecafe79db61596d7f0d8f2d8df4237d5cfaccce0d4debadf253292e
|
|
| MD5 |
c9bd52a1ec461dac3f01ac6574c26850
|
|
| BLAKE2b-256 |
7f47942489258d2d0132b185d9b31fc327225454088df39e4c148d4fa1f04beb
|