Ardusub based Rov Library
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe60ebb2108430d9955d8dcb6b70ca9fd9ad70cebf7c6c7d7aa66c002c00afa6 |
|
MD5 | a56256d3235759f74a5654287de2f1de |
|
BLAKE2b-256 | f888dfee8a6e0beba0cb3c42d3048b1bf8b44d93a6570cc04318ee59fe5ea89a |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 047ad23fa98629824cf5e4c990d4f9b37e3d3c9ea0f256ca65effbbe79910a91 |
|
MD5 | 3cb1cd99a25dc9d47a86f4ebec26a8dd |
|
BLAKE2b-256 | e89e17905de7199bbf18c1e2f33bc3aae72b407f4428b950ae86b9eb275f3b78 |