Minor refactoring and more support for recording data.

This commit is contained in:
Piv
2020-04-25 15:06:40 +09:30
parent f7bb8cd774
commit 1d2253dd18
6 changed files with 72 additions and 21 deletions

View File

@@ -5,6 +5,7 @@ import time
import car.control.motorService_pb2 as motorService_pb2
import car.control.motorService_pb2_grpc as motorService_pb2_grpc
from car.control.gpio.recording_vehicle_decorator import VehicleRecordingDecorator
import google.protobuf.empty_pb2 as empty
class MotorServicer(motorService_pb2_grpc.CarControlServicer):
@@ -12,7 +13,7 @@ class MotorServicer(motorService_pb2_grpc.CarControlServicer):
self.vehicle = VehicleRecordingDecorator(vehicle)
self._timer = None
def SetThrottle(self, request, context):
def set_throttle(self, request, context):
# gRPC streams currently don't work between python and android.
# If we don't get a response every 3 seconds, stop the car.
print('Setting throttle to: ' + str(request.throttle))
@@ -20,7 +21,7 @@ class MotorServicer(motorService_pb2_grpc.CarControlServicer):
self.vehicle.throttle = request.throttle
return motorService_pb2.ThrottleResponse(throttleSet=True)
def SetSteering(self, request, context):
def set_steering(self, request, context):
print('Setting steering to: ' + str(request.steering))
self.vehicle.steering = request.steering
return motorService_pb2.SteeringResponse(steeringSet=True)
@@ -40,9 +41,11 @@ class MotorServicer(motorService_pb2_grpc.CarControlServicer):
print("Node timeout elapsed")
self.vehicle.stop()
def Record(self, request, context):
def record(self, request, context):
"""Indicate whether the vehicle data should be recorded."""
self.vehicle.record = request.record
return empty.Empty()
def SaveRecordedData(self, request, context):
def save_recorded_data(self, request, context):
self.vehicle.save_data(request.file)
return empty.Empty()

View File

@@ -9,6 +9,7 @@ from car.tracking.devices.recording_lidar import RecordingLidarDecorator
from car.messaging import messages
import car.tracking.algorithms as alg
import os
import google.protobuf.empty_pb2 as empty
class LidarServicer(PersonTrackingServicer):
@@ -28,15 +29,22 @@ class LidarServicer(PersonTrackingServicer):
def set_tracking_group(self, request, context):
# Invalid groups should stop tracking
self._tracked_group = None if request.value < 0 else request.value
return empty.Empty()
def stop_tracking(self, request, context):
self._should_stream = False
self.cache.stop_scanning()
return empty.Empty()
def start_tracking(self, request, context):
"""Starts the lidar cache, streaming on the provided port."""
self._should_stream = True
self.cache.start_cache()
return empty.Empty()
def record(self, request, context):
self._lidar.record = True
return empty.Empty()
def onGroupsChanged(self, message):
if self._mFactory is None: