Move client foler
0
client/.gitignore → .gitignore
vendored
0
client/.idea/.gitignore → .idea/.gitignore
generated
vendored
0
client/.idea/client_s2.iml → .idea/client_s2.iml
generated
0
client/.idea/misc.xml → .idea/misc.xml
generated
0
client/.idea/modules.xml → .idea/modules.xml
generated
0
client/.idea/vcs.xml → .idea/vcs.xml
generated
1
build.sh
|
@ -4,7 +4,6 @@ mkdir output
|
|||
|
||||
DEB="empty"
|
||||
|
||||
cd client
|
||||
source build_deb.sh
|
||||
echo "Ran build deb, created: $DEB"
|
||||
mv $DEB ../output
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
import time
|
||||
|
||||
from compLib.CompLibClient import CompLibClient
|
||||
|
||||
|
||||
def main():
|
||||
from compLib.Motor import Motor
|
||||
|
||||
# Motor.speed(0, -50)
|
||||
# Motor.speed(3, 50)
|
||||
|
||||
Motor.power(0, 50)
|
||||
Motor.power(3, -50)
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
Motor.power(0, 0)
|
||||
Motor.power(3, -0)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
CompLibClient.use_tcp_socket("dev01.local")
|
||||
# follow()
|
||||
main()
|
|
@ -1,34 +0,0 @@
|
|||
import time
|
||||
|
||||
from compLib.CompLibClient import CompLibClient
|
||||
from compLib.IRSensor import IRSensor
|
||||
|
||||
|
||||
def main():
|
||||
# Motor.speed(0, -50)
|
||||
# Motor.speed(3, 50)
|
||||
|
||||
# Motor.power(0, 50)
|
||||
# Motor.power(3, -50)
|
||||
#
|
||||
# time.sleep(2)
|
||||
#
|
||||
# Motor.power(0, 0)
|
||||
# Motor.power(3, -0)
|
||||
|
||||
start_time = time.time()
|
||||
for i in range(0, 1000):
|
||||
IRSensor.read_all()
|
||||
# Motor.multiple_power((0, 1), (3, 1))
|
||||
# Motor.speed(0, 1)
|
||||
# Motor.speed(3, 1)
|
||||
|
||||
print(1000.0 / (time.time() - start_time))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# CompLibClient.use_tcp_socket("dev03.local")
|
||||
CompLibClient.use_unix_socket()
|
||||
# follow()
|
||||
# cProfile.run("main()")
|
||||
main()
|
96
client/lf.py
|
@ -1,96 +0,0 @@
|
|||
from compLib.Motor import Motor
|
||||
from compLib.IRSensor import IRSensor
|
||||
from compLib.CompLibClient import CompLibClient
|
||||
|
||||
import time
|
||||
import math
|
||||
|
||||
DRIVE_SPEED = 20.0
|
||||
COLOR_BREAK = 850
|
||||
KP = 7.5
|
||||
KD = 0.0
|
||||
|
||||
SAMPLE_TIME_S = 0.001
|
||||
CUTOFF_FREQ_HZ = 50.0
|
||||
|
||||
RC = 1.0 / (2.0 * math.pi * CUTOFF_FREQ_HZ)
|
||||
|
||||
FIRST_COEFF = SAMPLE_TIME_S / (SAMPLE_TIME_S + RC)
|
||||
SECOND_COEFF = RC / (SAMPLE_TIME_S + RC)
|
||||
|
||||
out_old = 0.0
|
||||
start_time = time.time()
|
||||
|
||||
|
||||
def drive(leftSpeed, rightSpeed):
|
||||
rightSpeed *= -0.906
|
||||
|
||||
Motor.multiple_power((0, min(max(-100, rightSpeed), 100)), (3, min(max(-100, leftSpeed), 100)))
|
||||
|
||||
def follow(sleepTime = 0.3):
|
||||
global out_old
|
||||
lastError = 0
|
||||
sensorsBlack = 0
|
||||
while sensorsBlack < 3:
|
||||
sensor_data = IRSensor.read_all()
|
||||
|
||||
sensorsBlack = 0
|
||||
for i in range(0, 5):
|
||||
if sensor_data[i] > COLOR_BREAK:
|
||||
sensorsBlack += 1
|
||||
|
||||
|
||||
middle_sensor = sensor_data[2]
|
||||
filtered_sensor = FIRST_COEFF * middle_sensor + SECOND_COEFF * out_old
|
||||
out_old = filtered_sensor
|
||||
|
||||
sample_time = str(time.time() - start_time).replace(".", ",")
|
||||
print(f"{sample_time} {middle_sensor} {int(filtered_sensor)}")
|
||||
|
||||
error = lastError
|
||||
if sensor_data[2] > COLOR_BREAK:
|
||||
error = 0
|
||||
elif sensor_data[0] > COLOR_BREAK:
|
||||
error = -1.5
|
||||
elif sensor_data[4] > COLOR_BREAK:
|
||||
error = 1.5
|
||||
elif sensor_data[1] > COLOR_BREAK:
|
||||
error = -1
|
||||
elif sensor_data[3] > COLOR_BREAK:
|
||||
error = 1
|
||||
elif error == 1.5:
|
||||
error = 3
|
||||
elif error == -1.5:
|
||||
error = -3
|
||||
|
||||
lastError = error
|
||||
|
||||
adjustment = KP * error + KD * (error - lastError)
|
||||
leftSpeed = DRIVE_SPEED + adjustment
|
||||
rightSpeed = DRIVE_SPEED - adjustment
|
||||
|
||||
# print(f"{leftSpeed} {rightSpeed} {adjustment} {error}")
|
||||
drive(leftSpeed, rightSpeed)
|
||||
|
||||
time.sleep(SAMPLE_TIME_S)
|
||||
|
||||
drive(0, 0)
|
||||
time.sleep(sleepTime)
|
||||
|
||||
def main():
|
||||
CompLibClient.use_unix_socket()
|
||||
|
||||
IRSensor.enable()
|
||||
time.sleep(0.5)
|
||||
|
||||
# while True:
|
||||
# print(IRSensor.read_all())
|
||||
# time.sleep(0.01)
|
||||
|
||||
follow()
|
||||
follow()
|
||||
follow()
|
||||
follow()
|
||||
follow(0.2)
|
||||
|
||||
main()
|
174
client/main.py
|
@ -1,174 +0,0 @@
|
|||
import time
|
||||
|
||||
from compLib.CompLibClient import CompLibClient
|
||||
|
||||
|
||||
# def send(data, size):
|
||||
# with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock:
|
||||
# sock.connect(SOCKET_PATH)
|
||||
# sock.sendall(size.to_bytes(1, byteorder='big'))
|
||||
# sock.sendall(data)
|
||||
#
|
||||
# response_size_bytes = sock.recv(1)
|
||||
# response_size = int.from_bytes(response_size_bytes, byteorder="big")
|
||||
# # print(f"Response size: {response_size}")
|
||||
#
|
||||
# response_bytes = sock.recv(response_size)
|
||||
# generic_response = CompLib_pb2.GenericResponse()
|
||||
#
|
||||
# generic_response.ParseFromString(response_bytes)
|
||||
# # print(f"Response: {generic_response}")
|
||||
#
|
||||
# # reponseBytes =
|
||||
|
||||
|
||||
def main():
|
||||
# encoder_read_positions_request = CompLib_pb2.EncoderReadPositionsRequest()
|
||||
# # readSensorsRequest.header = CompLib_pb2.Header()
|
||||
# encoder_read_positions_request.header.message_type = encoder_read_positions_request.DESCRIPTOR.full_name
|
||||
#
|
||||
# start_time = time.time()
|
||||
# for i in range(100000):
|
||||
# send(encoder_read_positions_request.SerializeToString(), encoder_read_positions_request.ByteSize())
|
||||
# print("--- %s seconds ---" % (time.time() - start_time))
|
||||
|
||||
from compLib.IRSensor import IRSensor
|
||||
IRSensor.enable()
|
||||
|
||||
startTime = time.time()
|
||||
while time.time() - startTime < 10:
|
||||
print(IRSensor.read_all())
|
||||
time.sleep(0.01)
|
||||
|
||||
# from compLib.Encoder import Encoder
|
||||
# print(Encoder.read_all_positions())
|
||||
# print(Encoder.read_all_velocities())
|
||||
|
||||
# from compLib.Motor import Motor
|
||||
|
||||
# Motor.speed(0, -50)
|
||||
# Motor.speed(3, 50)
|
||||
|
||||
# Motor.power(0, -50)
|
||||
# Motor.power(3, 50)
|
||||
|
||||
# time.sleep(5)
|
||||
|
||||
|
||||
#
|
||||
# import time
|
||||
# time.sleep(2)
|
||||
#
|
||||
# Motor.speed(0, 0)
|
||||
# Motor.speed(3, -0)
|
||||
|
||||
# Motor.power(0, 0)
|
||||
# Motor.power(3, 0)
|
||||
|
||||
# import math
|
||||
# from compLib.Movement import Movement
|
||||
# Movement.turn_degrees(90, math.pi * 2)
|
||||
# Movement.turn_degrees(-90, math.pi * 2)
|
||||
#
|
||||
# Movement.turn_degrees(90, math.pi * 2)
|
||||
# Movement.turn_degrees(90, -math.pi * 2)
|
||||
#
|
||||
# Movement.turn_degrees(90, math.pi * 2)
|
||||
# Movement.turn_degrees(-90, -math.pi * 2)
|
||||
|
||||
# from compLib.Movement import Movement
|
||||
# Movement.drive_distance(0.1, 0.5)
|
||||
# Movement.drive_distance(-0.1, 0.5)
|
||||
#
|
||||
# Movement.drive_distance(0.1, 0.5)
|
||||
# Movement.drive_distance(0.1, -0.5)
|
||||
#
|
||||
# Movement.drive_distance(0.1, 0.5)
|
||||
# Movement.drive_distance(-0.1, -0.5)
|
||||
|
||||
# from compLib.Movement import Movement
|
||||
# import math
|
||||
# import time
|
||||
# Movement.drive_distance(0.5, 0.5)
|
||||
# time.sleep(1)
|
||||
# Movement.turn_degrees(90, math.pi * 2)
|
||||
# time.sleep(1)
|
||||
#
|
||||
# Movement.drive_distance(0.5, 0.5)
|
||||
# time.sleep(1)
|
||||
# Movement.turn_degrees(90, math.pi * 2)
|
||||
# time.sleep(1)
|
||||
#
|
||||
# Movement.drive_distance(0.5, 0.5)
|
||||
# time.sleep(1)
|
||||
# Movement.turn_degrees(90, math.pi * 2)
|
||||
# time.sleep(1)
|
||||
#
|
||||
# Movement.drive_distance(0.5, 0.5)
|
||||
# time.sleep(1)
|
||||
# Movement.turn_degrees(90, math.pi * 2)
|
||||
# time.sleep(1)
|
||||
|
||||
# import time
|
||||
#
|
||||
# from compLib.IRSensor import IRSensor
|
||||
# from compLib.Motor import Motor
|
||||
#
|
||||
# IRSensor.enable()
|
||||
#
|
||||
# DRIVE_SPEED = 2.0
|
||||
# COLOR_BREAK = 900
|
||||
# KP = 0.25
|
||||
# KD = 0.0
|
||||
#
|
||||
#
|
||||
# def drive(leftSpeed, rightSpeed):
|
||||
# Motor.speed(0, -rightSpeed)
|
||||
# Motor.power(3, leftSpeed)
|
||||
#
|
||||
#
|
||||
# def follow(sleepTime=0.1):
|
||||
# lastError = 0
|
||||
# sensorsBlack = 0
|
||||
#
|
||||
# while sensorsBlack < 3:
|
||||
# data = IRSensor.read_all()
|
||||
#
|
||||
# sensorsBlack = 0
|
||||
# for i in range(len(data)):
|
||||
# if data[i] > COLOR_BREAK:
|
||||
# sensorsBlack += 1
|
||||
#
|
||||
# error = lastError
|
||||
# if data[2] > COLOR_BREAK:
|
||||
# error = 0
|
||||
# elif data[0] > COLOR_BREAK:
|
||||
# error = -1.5
|
||||
# elif data[4] > COLOR_BREAK:
|
||||
# error = 1.5
|
||||
# elif data[1] > COLOR_BREAK:
|
||||
# error = -1
|
||||
# elif data[3] > COLOR_BREAK:
|
||||
# error = 1
|
||||
# elif error == 1.5:
|
||||
# error = 3
|
||||
# elif error == -1.5:
|
||||
# error = -3
|
||||
#
|
||||
# lastError = error
|
||||
#
|
||||
# adjustment = KP * error + KD * (error - lastError)
|
||||
# leftSpeed = DRIVE_SPEED + adjustment
|
||||
# rightSpeed = DRIVE_SPEED - adjustment
|
||||
#
|
||||
# print(f"{leftSpeed} {rightSpeed} {adjustment} {error}")
|
||||
# drive(leftSpeed, rightSpeed)
|
||||
#
|
||||
# drive(0, 0)
|
||||
# time.sleep(sleepTime)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
CompLibClient.use_tcp_socket("dev03.local")
|
||||
# follow()
|
||||
main()
|
0
client/docs/.gitignore → docs/.gitignore
vendored
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 239 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 156 KiB |
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 188 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 391 KiB After Width: | Height: | Size: 391 KiB |
Before Width: | Height: | Size: 356 KiB After Width: | Height: | Size: 356 KiB |
Before Width: | Height: | Size: 278 KiB After Width: | Height: | Size: 278 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 254 KiB |