From b633fdea955a5b54fdde02da044b3f06db1422d8 Mon Sep 17 00:00:00 2001 From: Piv <18462828+Piv200@users.noreply.github.com> Date: Sat, 25 Apr 2020 16:29:12 +0930 Subject: [PATCH] Recording vehicle change is working --- .../vato/carcontroller/SimpleController.java | 7 ++++--- .../activity_lidar_tracking_controller.xml | 17 ++++++++++++++--- .../control/gpio/recording_vehicle_decorator.py | 12 ++++++++---- car/src/car/tracking/lidar_servicer.py | 11 ++++++++++- .../main/proto/car/tracking/lidar_tracker.proto | 4 +++- 5 files changed, 39 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/vato/carcontroller/SimpleController.java b/app/src/main/java/org/vato/carcontroller/SimpleController.java index 835dcbc..8c6f814 100644 --- a/app/src/main/java/org/vato/carcontroller/SimpleController.java +++ b/app/src/main/java/org/vato/carcontroller/SimpleController.java @@ -104,22 +104,23 @@ public class SimpleController extends AppCompatActivity implements SeekBar.OnSee public void saveRecording(View view) { grpcController.saveRecording(); + } public void record(View view) { - grpcController.record(recordSwitch.isSelected()); + grpcController.record(recordSwitch.isChecked()); } public void recordLidar(View view) { StreamObserver response = new StreamObserver() { @Override public void onNext(Empty value) { - Toast.makeText(getApplicationContext(), "Started Recording Lidar", Toast.LENGTH_SHORT); + Toast.makeText(getApplicationContext(), "Started Recording Lidar", Toast.LENGTH_SHORT).show(); } @Override public void onError(Throwable t) { - Toast.makeText(getApplicationContext(), "Failed to set lidar recording", Toast.LENGTH_SHORT); + Toast.makeText(getApplicationContext(), "Failed to set lidar recording", Toast.LENGTH_SHORT).show(); } @Override diff --git a/app/src/main/res/layout-land/activity_lidar_tracking_controller.xml b/app/src/main/res/layout-land/activity_lidar_tracking_controller.xml index 7b8dff5..93940a3 100644 --- a/app/src/main/res/layout-land/activity_lidar_tracking_controller.xml +++ b/app/src/main/res/layout-land/activity_lidar_tracking_controller.xml @@ -7,14 +7,17 @@ tools:context=".LIDAR.LidarTrackingController"> + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:layout_editor_absoluteX="-45dp" /> + + \ No newline at end of file diff --git a/car/src/car/control/gpio/recording_vehicle_decorator.py b/car/src/car/control/gpio/recording_vehicle_decorator.py index 1ce0090..1b839f6 100644 --- a/car/src/car/control/gpio/recording_vehicle_decorator.py +++ b/car/src/car/control/gpio/recording_vehicle_decorator.py @@ -39,8 +39,10 @@ class VehicleRecordingDecorator: return self._recording @record.setter - def record(self, value): - self._recording = True + def record(self, value: bool): + if not value: + self._records = [] + self._recording = value @property def throttle(self): @@ -49,7 +51,8 @@ class VehicleRecordingDecorator: @throttle.setter def throttle(self, value): if self._recording: - self._records.append(('t', value, str(datetime.datetime.now()))) + self._records.append( + 't,' + str(value) + ',' + datetime.datetime.now().isoformat(sep=' ', timespec='seconds')) self._vehicle.throttle = value @property @@ -59,7 +62,8 @@ class VehicleRecordingDecorator: @steering.setter def steering(self, value): if self._recording: - self._records.append(('s', value, str(datetime.datetime.now()))) + self._records.append( + 's,' + str(value) + ',' + datetime.datetime.now().isoformat(sep=' ', timespec='seconds')) self._vehicle.steering = value @property diff --git a/car/src/car/tracking/lidar_servicer.py b/car/src/car/tracking/lidar_servicer.py index ae6c2f0..9038428 100644 --- a/car/src/car/tracking/lidar_servicer.py +++ b/car/src/car/tracking/lidar_servicer.py @@ -43,7 +43,16 @@ class LidarServicer(PersonTrackingServicer): return empty.Empty() def record(self, request, context): - self._lidar.record = True + # TODO: Fix this to not require + if request.value: + self.cache.start_cache() + else: + self.cache.stop_scanning() + self._lidar.record = request.value + return empty.Empty() + + def save_lidar(self, request, context): + self._lidar.save_data(request.file) return empty.Empty() def onGroupsChanged(self, message): diff --git a/protobuf/src/main/proto/car/tracking/lidar_tracker.proto b/protobuf/src/main/proto/car/tracking/lidar_tracker.proto index 3b0d5cb..b988413 100644 --- a/protobuf/src/main/proto/car/tracking/lidar_tracker.proto +++ b/protobuf/src/main/proto/car/tracking/lidar_tracker.proto @@ -8,6 +8,7 @@ option java_outer_classname = "PersonTrackingProto"; import "google/protobuf/empty.proto"; import "google/protobuf/wrappers.proto"; +import "car/control/motorService.proto"; message Int32Value{ int32 value = 1; @@ -24,7 +25,6 @@ message PointScan{ } - service PersonTracking{ rpc set_tracking_group(Int32Value) returns (google.protobuf.Empty) {} @@ -34,4 +34,6 @@ service PersonTracking{ rpc record(google.protobuf.BoolValue) returns (google.protobuf.Empty) {} + rpc save_lidar(MotorControl.SaveRequest) returns (google.protobuf.Empty) {} + } \ No newline at end of file