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-8.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-8-py3-none-any.whl
(11.5 kB
view details)
File details
Details for the file mrtautopilot-8.tar.gz.
File metadata
- Download URL: mrtautopilot-8.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 |
e5382e1f06a5f654ba09c4ad2da1a542566b6ed0e65f1dd802cc72d13d1d2a98
|
|
| MD5 |
739e962fe63de651bf3c948fb1af488f
|
|
| BLAKE2b-256 |
e570df92148445c27226ac5079d19ae3d41a0c9755022860b00bb6725e43856c
|
File details
Details for the file mrtautopilot-8-py3-none-any.whl.
File metadata
- Download URL: mrtautopilot-8-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 |
ef0ad2b375975fb6eeee290ddb7134effbc801c4ecf1ccd486187a4772a3c7ce
|
|
| MD5 |
4a7b9929682eb85bc25929bc6a689676
|
|
| BLAKE2b-256 |
3182722da40d30fe5fe4d89ee2f0c07a4bc72cca4c9700bbde3e9a9b5ac69432
|