Skip to main content

Rovpy is a simplified python library for ardusub based robots. rovpy contains pymavlink, opencv, numpy, imutils, serial libraries.

rovpy is divided into two as rovpyimage and rovpy.

Rovpy: includes basic rov control and rov communication tools. these operations are based on the pymavlink library. rovpyimage: It contains ready-made image processing tools.

Rovpy Commands:

connectrov() command is the part where you specify your rov driving mode and the connection address to your vehicle. In short, it initializes your vehicle. Example Using: connectrov(mode="STABILIZE",connect="/dev/ttyACM0") # for serial connection connectrov(mode="ACRO",connect="udpin:0.0.0.0:14550") # for companion connect (Default mode="STABILIZE",connect="/dev/ttyACM0") arm() # arm your robot

disarm() # disarmarm your robot

hiz() # Converts the pwm signal to a value between -1 and 1. return speed value

control(rcinput,speed) # rc input takes speed value. speed value must be between 1 and -1. 1 = maximum forward -1 represents maximum reverse. For RC inputs you can check here: https://www.ardusub.com/operators-manual/rc-input-and-output.html

pitch(speed) # It makes your robot pitch move. speed value must be between 1 and -1. 1 = maximum forward -1 represents maximum reverse.

roll(speed) # It makes your robot roll move. speed value must be between 1 and -1. 1 = maximum forward -1 represents maximum reverse.

throttle(speed) # It makes your robot throttle move. speed value must be between 1 and -1. 1 = maximum forward -1 represents maximum reverse.

yaw(speed) # It makes your robot yaw move. speed value must be between 1 and -1. 1 = maximum forward -1 represents maximum reverse.

forward(speed) # It makes your robot forward move. speed value must be between 1 and -1. 1 = maximum forward -1 represents maximum reverse.

lateral(speed) # It makes your robot lateral move. speed value must be between 1 and -1. 1 = maximum forward -1 represents maximum reverse.

camerapan(speed) # Turns the servo connected to your camera to the right or left. speed value must be between 1 and -1. 1 = maximum forward -1 represents maximum reverse.

cameratilt(speed) # Turns the servo attached to your camera down or up. speed value must be between 1 and -1. 1 = maximum forward -1 represents maximum reverse.

light1level(power) #adjusts the light level. It takes values between 1 and -1. 0 = off 1 and -1 = full power

light2level(power) #adjusts the light level. It takes values between 1 and -1. 0 = off 1 and -1 = full power videoswitch(speed) # It can take values between 1 and -1.

sendgps(timestamp,idd,flags,gpstime,gpsweeknumber,dgps,lat,lon,alt,gpshdop,gpsvdop,northvelocity,eastvelocity,downvelocity,gpsspeed,gpshorizontal,gpsvertical,numberofsattalities) # Allows you to send a GPS value.

rovinfo() # Allows you to receive ahrs data such as gyro, speed, altitude.

Rov Image colordetect(frame,color,w=320,h=240) #It allows you to detect already defined colors. frame = image, color = color, w = image width default 320, h = image height default 240 Returns frame, x, y, radius values to you. frame = marked image, x = x coordinate of the detected object, y = y coordinate of the detected image, radius = radius of the detected image Defined Colors:

"blue": {"upper": "126, 255, 255",
        "lower":"94, 80, 2"},

 "red": {"upper": "255, 255, 255",
        "lower":"171, 160, 60"},

"brown": {"upper": "30,255,255", 
        "lower":"20,100,100"},

"green": {"upper": "102, 255, 255",
        "lower":"25, 52, 72"},

"orange": {"upper": "25, 255, 255",
        "lower":"10, 100, 20"},

"pink": {"upper": "11,255,255",
        "lower":"10,100,100"},

"black": {"upper": "50,50,100",
        "lower":"0,0,0"},

"purple": {"upper": "120, 255, 255",
        "lower":"80, 10, 10]"},

"yellow": {"upper": "44, 255, 255",
        "lower":"24, 100, 100"},

"white": {"upper": "0,0,255",
        "lower":"0,0,0"},

circledetect(frame,param1=35,param2=50,minRadius=0,maxRadius=0,w=320,h=240) ##It allows you to detect circles. frame = marked image , param1 = Gradient value used to handle edge detection in the Yuen et al. method(Default = 35). param2 = Accumulator threshold value for the cv2.HOUGH_GRADIENT method. The smaller the threshold is, the more circles will be detected (including false circles). The larger the threshold is, the more circles will potentially be returned(Default = 50). minRadius = minimum radius of the circle to be detected(Default = 0). maxradius = maximum radius of the circle to be detected(Default = 0). w =image width (default 320). h= image height (default 240)

Returns frame, x, y, radius values to you. frame = marked image, x = x coordinate of the detected object, y = y coordinate of the detected image, radius = radius of the detected image

Examples :

Detect Red Colors :

from rovpy import rovpy
import cv2

camera = cv2.VideoCapture(0) # for webcams

while True: 
     (grabbed, frame) = camera.read() 
     frame, x ,y, radius = rovpy.colordetect(frame,"red") # default = colordetect(frame,"color",w=320,h=240)
     cv2.imshow("Color Detect", frame)
     cv2.waitKey(1)

Detect Circles :

from rovpy import rovpy
import cv2

camera = cv2.VideoCapture(0) # for webcams

while True: 
     (grabbed, frame) = camera.read() 
     frame, x ,y, radius = rovpy.circledetect(frame,30,50) # default = circledetect(image,param1=35,param2=50,minRadius=0,maxRadius=0,weight=320,height=240)
     print(x,y)
     cv2.imshow("CircleDetect", frame)
     cv2.waitKey(1)

Rov Control :

from rovpy import rovpy

rovpy.connectrov("STABILIZE","/dev/ttyACM0") #connectrov(mode,port or udp url)

rovpy.arm()
a = 0
while(a < 1000):
	a+1
	rovpy.forward(0.5) # forward(speed) 0.5 is half speed
	''' if you can want use this commands
	rovpy.pitch(speed)
	rovpy.roll(speed):
	rovpy.throttle(speed)
	rovpy.yaw(speed)
	rovpy.forward(speed)
	rovpy.lateral(speed)
	rovpy.camerapan(speed)
	rovpy.cameratilt(speed)
	rovpy.light1level(power)
	rovpy.light2level(power)
	rovpy.videoswitch(speed)
	'''
	rovpy.disarm()

Arming Rov

from rovpy import rovpy

rovpy.connectrov("STABILIZE","/dev/ttyACM0") #connectrov(mode,port or udp url)

rovpy.arm()

Get ahrs data :

from rovpy import rovpy

rovpy.connectrov("STABILIZE","/dev/ttyACM0") #connectrov(mode,port or udp url)

rovpy.rovinfo()
'''
Output:
{'mavpackettype': 'AHRS2', 'roll': -0.11364290863275528, 'pitch': -0.02841472253203392, 'yaw': 2.0993032455444336, 'altitude': 0.0, 'lat': 0, 'lng': 0}
{'mavpackettype': 'AHRS3', 'roll': 0.025831475853919983, 'pitch': 0.006112074479460716, 'yaw': 2.1514968872070312, 'altitude': 0.0, 'lat': 0, 'lng': 0, 'v1': 0.0, 'v2': 0.0, 'v3': 0.0, 'v4': 0.0}
{'mavpackettype': 'VFR_HUD', 'airspeed': 0.0, 'groundspeed': 0.0, 'heading': 123, 'throttle': 0, 'alt': 3.129999876022339, 'climb': 3.2699999809265137}
{'mavpackettype': 'AHRS', 'omegaIx': 0.0014122836291790009, 'omegaIy': -0.022567369043827057, 'omegaIz': 0.02394154854118824, 'accel_weight': 0.0, 'renorm_val': 0.0, 'error_rp': 0.08894175291061401, 'error_yaw': 0.0990816056728363}

'''

Send GPS Data :

from rovpy import rovpy
import time
timestam = time.time()
rovpy.connectrov("STABILIZE","/dev/ttyACM0") #connectrov(mode,port or udp url)

rovpy.sendgps(timestamp,0,8|16|32,0,0,3,0,0,0,1,1,0,0,0,0,0,0,7)

For your thoughts and suggestions: enis@enisgetmez.com , http://enisgetmez.com https://instagram.com/enisgetmez

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rovpy-0.0.7.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

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

rovpy-0.0.7-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file rovpy-0.0.7.tar.gz.

File metadata

  • Download URL: rovpy-0.0.7.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.7

File hashes

Hashes for rovpy-0.0.7.tar.gz
Algorithm Hash digest
SHA256 fe60ebb2108430d9955d8dcb6b70ca9fd9ad70cebf7c6c7d7aa66c002c00afa6
MD5 a56256d3235759f74a5654287de2f1de
BLAKE2b-256 f888dfee8a6e0beba0cb3c42d3048b1bf8b44d93a6570cc04318ee59fe5ea89a

See more details on using hashes here.

File details

Details for the file rovpy-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: rovpy-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.7

File hashes

Hashes for rovpy-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 047ad23fa98629824cf5e4c990d4f9b37e3d3c9ea0f256ca65effbbe79910a91
MD5 3cb1cd99a25dc9d47a86f4ebec26a8dd
BLAKE2b-256 e89e17905de7199bbf18c1e2f33bc3aae72b407f4428b950ae86b9eb275f3b78

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.7 This release

2 files

Supported by

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