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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

Supported by

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