Skip to main content

A Python Wrapper for Pluto Drone Controller

Project description

dagger

Python package Documentation Status https://codecov.io/gh/rohithvarma3000/dagger/branch/main/graph/badge.svg?token=VtrYdLrEMV License

A Python implementation for controlling Pluto Drone.

Installation

Installing the package from source

  1. Get the latest source by cloning this repo:

    git clone https://github.com/rohithvarma3000/dagger.git
  2. Change to dagger folder:

    cd dagger
  3. Install the dependencies:

    pip install -r requirements.txt
  4. Install dagger:

    pip install .

Examples

Connecting to Pluto

import dagger
Pluto_IP = "192.168.4.1"
Pluto_PORT = 23
pluto = dagger.PlutoConnection()
pluto.connect((Pluto_IP, Pluto_PORT))

Intiating the SetRawRc Object for Controlling the pluto Drone using the RC params

rc = dagger.SetRawRC(pluto)

Arming the drone

rc.arm_drone()

Disarming the drone:

rc.disarm_drone()

General Information

How to Use?

Refer to our tutorial to get started with dagger

Working Principles

Sockets

We connected to Pluto first by connecting our device to the drone’s hotspot, then we used TCP sockets to connect to the drone using IPV4 scheme and socket library in python to do the same. The server iss hosted at 192.168.4.1:23 We sent the MSP Packet data encoded as bytes to pluto using sockets, the details about the packet is explained below.

MSP Packets

We used MSP Packet scheme to communicate with Pluto, ie send commands, request data and calibrate the drone. The data of the packet was first encoded into bytes and then sent as a byte stream (array of bytes) to the drone. The basic structure of the packet has been explained below.

Structure of the Packet

Header

Direction

Message Length

Type of Payload

Message Data

Checksum

2 Bytes

1 Byte

1 Byte

1 Byte

N Bytes

1 Byte

Details of the Packet

Type of Byte

ASCII

Hexadecimal

Header

$M

0x24 0x4d

Direction

‘<’ or ‘>’

0x3c (to the drone) or 0x3e (from the drone)

Message Length

0x00 - 0xff

Type of Payload

0x01 - 0xff

Payload

Message Body encoded into N bytes

Checksum

XOR of Bytes of “Msg length”, “Command” and all bytes of “Payload”

MSP COMMANDS

MSP_RAW_IMU

MSP_ALTITUDE

MSP_SET_RAW_RC

MSP_ANALOG

MSP_SET_COMMAND

MSP_ACC_CALIBRATION

MSP_ATTITUDE

MSP_MAG_CALIBRATION

MODULE

DESCRIPTION

AccCalibration

Calibrates the accelerometer

Altitude

Get the Altitude data from Pluto

Attitude

Get the Attitude data from Pluto

Analog

Get the Analog data from Pluto

MagCalibration

Calibrates the magnetometer

PlutoConnection

Defines API Connection

PlutoControl

Controls for the Pluto Drone

RawIMU

Get the RawIMU data from Pluto

SetCommand

Sets the command in Pluto

SetRawRC

Controls the pluto using RC params

Pluto Packet Direction Chart

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

pluto-dagger-0.1.2.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pluto_dagger-0.1.2-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file pluto-dagger-0.1.2.tar.gz.

File metadata

  • Download URL: pluto-dagger-0.1.2.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for pluto-dagger-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d620882e3baffee7c275a9ed45b21665228e17f970078b4495ee5f71085dceda
MD5 256fb843c47baedfa5105aa9aa20f446
BLAKE2b-256 b5990595a7b695f987d524ce2da53258786cd0078100cdf7663370f5a31655c9

See more details on using hashes here.

File details

Details for the file pluto_dagger-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: pluto_dagger-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for pluto_dagger-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 21971cd5f6d2ea8d8cd44b45b083016c00a36fd8b6c31f056a8958e755ff5ade
MD5 562d850231225d4f6649141a2ca3319e
BLAKE2b-256 444720c572683245ac9dbe304f7b69b5a4de87a7910da58e98613e5846a6798a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page