Add python client for the car controller.
This commit is contained in:
50
MotorControl/PythonRemoteController.py
Normal file
50
MotorControl/PythonRemoteController.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
print("Connecting to pi")
|
||||||
|
|
||||||
|
import grpc
|
||||||
|
from concurrent import futures
|
||||||
|
from .MotorServer import MotorServicer
|
||||||
|
from . import motorService_pb2_grpc
|
||||||
|
import random
|
||||||
|
from threading import Timer
|
||||||
|
|
||||||
|
throttle = 0
|
||||||
|
timer = None
|
||||||
|
|
||||||
|
class ThrottleIterator:
|
||||||
|
'''
|
||||||
|
Class to get the current throttle for the car.
|
||||||
|
Will return a random throttle between
|
||||||
|
'''
|
||||||
|
def __iter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __next__(self):
|
||||||
|
if throttle > 1 or throttle < -1:
|
||||||
|
raise StopIteration
|
||||||
|
return throttle
|
||||||
|
|
||||||
|
|
||||||
|
def serve():
|
||||||
|
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
|
||||||
|
motorService_pb2_grpc.add_CarControlServicer_to_server(
|
||||||
|
MotorServicer(), server)
|
||||||
|
server.add_insecure_port('[::]:50051')
|
||||||
|
server.start()
|
||||||
|
|
||||||
|
def resetThrottle():
|
||||||
|
global throttle
|
||||||
|
throttle = random.random() * 2 - 1
|
||||||
|
global timer
|
||||||
|
if timer is not None:
|
||||||
|
timer.cancel()
|
||||||
|
timer = Timer(10, resetThrottle)
|
||||||
|
|
||||||
|
serve()
|
||||||
|
|
||||||
|
timer = Timer(10, resetThrottle)
|
||||||
|
|
||||||
|
channel = grpc.insecure_channel('localhost:50051')
|
||||||
|
stub = motorService_pb2_grpc.CarControlStub(channel)
|
||||||
|
|
||||||
|
stub.SetThrottle(ThrottleIterator())
|
||||||
|
|
||||||
Reference in New Issue
Block a user