Skip to main content

ROV control and image library

Project description

ROV Library

A custom library that exactly fits our needs, be it programmatically controlling a Remote Operated Vehicle (ROV) or processing image data from the on-board cameras, it's got you covered.

Table of contents 🗒

General-Usage ⬇

Like any other 3rd party module you can easily import the desired sub-module by specifying what you want from the main rovlib module

from rovlib.cameras import RovCam

# or

from rovlib.control import RovMavLink, Mode

More about rovlib.cameras ? ➡ Cameras module


More about rovlib.control ? ➡ Control module


ROV-cameras 🎥

-- brief description 📝

The camera module is required to receive frames from ROV cameras being sent by the On board camera system

How to use it 🔧

-- steps on how to use it 💻


ROV-control 🕹

It is a python sub-module that simplifies the use of pymavlink APIs, to ease the control of our beloved Alenda (the ROV).

How to use it 🔧

Establish communication 🤝

# create an instance of RovMavlink

# Those are the default constructor params.

rov = RovMavlink(connection_type = 'udpin', connection_ip = '0.0.0.0', connection_port = '14550', silent_mode = True)

# Binds to the port in the given address

rov.establish_connection()

To start controlling the vehicle you should Arm it first. To arm it use there following commands.

# Silent mode is used to shut off prints from the used functions for instance - > 'vehicle Armed successfully'

rov = RovMavlink(silent_mode=False).establish_connection()

rov.arm_vehicle() # you only need to arm the vehicle once, there is no need to arm it every time you want to stablize it



# to disarm vehicle

rov.disarm_vehicle()

Set vehicle mode 🎯

rov = RovMavlink().establish_connection()

rov.arm_vehicle()

rov.set_vehicle_mode(Mode.STABILIZE)

Those are all the modes you would need to use. If you used set_vehicle_mode() with any thing other that Mode enum it would raise a violation ❌🔞. blash fakaka 😘

class Mode(IntEnum):

    STABILIZE = 0

    ACRO = 1

    ALT_HOLD = 2

    AUTO = 3

    GUIDED = 4

    CIRCLE = 7

    SURFACE = 9

    POSHOLD = 16

    MANUAL = 19



# use them as follows

# rov.set_vehicle_mode(Mode.STABILIZE)

sending custom control 🎮

⚠ Take care the throttle of x, y, z and rotation is a value between -1 to 1. any value out side this boundry will raise a violation. ❌🔞

rov.send_control(JoyStickControl(x_throttle = 0.5, y_throttle = 0.5, z_throttle = 0, rotation_throttle = 1, delay = 0.1))

also you can it as follows ⬇

rov = RovMavlink(silent_mode=False).establish_connection()

period = 10 # period for moving the joystick control in seconds

rov.arm_vehicle()

# my_lovely_fake_joy_stick = JoyStickControl(x_throttle=1, y_throttle=1) # name the param u want to add and give it a value between -1 to 1

my_lovely_fake_joy_stick = JoyStickControl(y_throttle=1)

rov.send_control(my_lovely_fake_joy_stick, period)

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

rovlib-0.0.1.tar.gz (5.6 kB view hashes)

Uploaded Source

Built Distribution

rovlib-0.0.1-py3-none-any.whl (6.1 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