Commented terminalControl.py

This commit is contained in:
2019-03-21 15:36:10 +01:00
parent d853cbc9ad
commit 48cf2bce5f
+36 -1
View File
@@ -7,6 +7,8 @@ import csv
pwm = Adafruit_PCA9685.PCA9685(address=0x41) pwm = Adafruit_PCA9685.PCA9685(address=0x41)
# the values for all the servos (are different for each robot)
geometry = { geometry = {
"servo0min": 0.5, "servo0min": 0.5,
"servo0max": 2.5, "servo0max": 2.5,
@@ -24,6 +26,7 @@ geometry = {
"servo4max": 2.5, "servo4max": 2.5,
"servo4mid": 1.5 "servo4mid": 1.5
} }
# the length of the arms (same for each joy it robot)
arms = { arms = {
0: 0.84, 0: 0.84,
1: 10.26, 1: 10.26,
@@ -34,6 +37,11 @@ arms = {
def summe(i): def summe(i):
"""
Returns the sum of a list
:param i: list with float, int
:return: int sum
"""
r = 0 r = 0
for element in i: for element in i:
r += element r += element
@@ -41,6 +49,12 @@ def summe(i):
def set_servo_pulse(channel, pulse): def set_servo_pulse(channel, pulse):
"""
Sending the position to the servos
:param channel: servo number
:param pulse: position in ms
:return:
"""
pulse_length = 1000000 pulse_length = 1000000
pulse_length /= 50 pulse_length /= 50
pulse_length /= 4096 pulse_length /= 4096
@@ -55,6 +69,12 @@ pwm.set_pwm_freq(50)
def get_pos(anglesdeg): def get_pos(anglesdeg):
"""
Calculates the position of the claw relative to the center of the baseplate
Further details in documentation
:param anglesdeg: dict with the servo number and position in degree (deg)
:return: list: [x, y, z] in cm from the center of the baseplate of the robot
"""
factor = math.pi / 180 factor = math.pi / 180
angles = anglesdeg.copy() angles = anglesdeg.copy()
for i in angles: for i in angles:
@@ -82,6 +102,11 @@ def get_pos(anglesdeg):
def get_angles(ms): def get_angles(ms):
"""
Calculates the theoretical angles relative to a vertical position based on the ms values for each of the servos
:param ms: dict with the servo number and ms
:return: dict with the servo number and position in degree (deg)
"""
angles = {0: 0, 1: 0, 2: 0, 3: 0, 4: 0} angles = {0: 0, 1: 0, 2: 0, 3: 0, 4: 0}
for servo in angles: for servo in angles:
if ms[servo]: if ms[servo]:
@@ -99,6 +124,12 @@ def get_angles(ms):
def get_ms(servo, angle): def get_ms(servo, angle):
"""
Calculates the ms value based on the given angle (deg)
:param servo: servo number
:param angle: angle in degree based of the vertical position
:return: ms value for the servo
"""
minimum = "servo" + str(servo) + "min" minimum = "servo" + str(servo) + "min"
maximum = "servo" + str(servo) + "max" maximum = "servo" + str(servo) + "max"
middle = "servo" + str(servo) + "mid" middle = "servo" + str(servo) + "mid"
@@ -121,7 +152,11 @@ def get_ms(servo, angle):
def read_argv(): def read_argv():
""" """
:param TerminalParameter: style: python3 terminalControl.py -servo x -pos y Reades and processes the start arguments. The main core of the program
:param sys.argv: styles: python3 terminalControl.py -servo x -pos y(ms)
python3 terminalControl.py -list servo,pos(ms) servo,pos(ms)
python3 terminalControl.py -angle servo,angle servo,angle
python3 terminalControl.py -csv file
:return: :return:
""" """
if sys.argv[1] == "-home": if sys.argv[1] == "-home":