Tidy up lidar tracker and its protos
This commit is contained in:
@@ -4,6 +4,7 @@ from threading import Thread
|
||||
from persontracking import algorithms
|
||||
import zmq
|
||||
|
||||
|
||||
class LidarCache():
|
||||
'''
|
||||
A class that retrieves scans from the lidar,
|
||||
@@ -14,15 +15,18 @@ class LidarCache():
|
||||
tracking_group_number = -1
|
||||
currentGroups = None
|
||||
groupsChanged = []
|
||||
port = None
|
||||
|
||||
def __init__(self, port, measurements=100):
|
||||
self.port = port
|
||||
def __init__(self, measurements=100):
|
||||
self.lidar = RPLidar('/dev/ttyUSB0')
|
||||
self.measurements = measurements
|
||||
print('Info: ' + self.lidar.get_info())
|
||||
print('Health: ' + self.lidar.get_health())
|
||||
|
||||
def start_cache(self):
|
||||
if self.port is None:
|
||||
print('ERROR: Port has not been set!')
|
||||
return
|
||||
self.thread = Thread(target=self.do_scanning)
|
||||
self.thread.start()
|
||||
|
||||
@@ -30,7 +34,6 @@ class LidarCache():
|
||||
'''
|
||||
Performs a scan for the given number of iterations.
|
||||
'''
|
||||
|
||||
# Create the 0MQ socket first. This should not be passed between threads.
|
||||
self._socket = self._create_socket()
|
||||
self._socket.bind("tcp://*:" + str(self.port))
|
||||
@@ -42,7 +45,8 @@ class LidarCache():
|
||||
|
||||
# Now process the groups.
|
||||
if self.currentGroups is not None:
|
||||
self.currentGroups = algorithms.assign_groups(self.currentGroups, algorithms.calc_groups(scan))
|
||||
self.currentGroups = algorithms.assign_groups(
|
||||
self.currentGroups, algorithms.calc_groups(scan))
|
||||
else:
|
||||
self.currentGroups = algorithms.calc_groups(scan)
|
||||
|
||||
@@ -56,4 +60,3 @@ class LidarCache():
|
||||
|
||||
def _create_socket(self):
|
||||
return zmq.Context.instance().socket(zmq.PUB)
|
||||
|
||||
@@ -1,27 +1,26 @@
|
||||
import persontracking.lidar_tracker_pb2 as lidar_tracker_pb2
|
||||
from persontracking.lidar_tracker_pb2_grpc import PersonTrackingServicer
|
||||
from persontracking.lidar_cache import LidarCache\
|
||||
|
||||
from persontracking.lidar_cache import LidarCache
|
||||
from multiprocessing import Process
|
||||
|
||||
|
||||
class LidarServicer(PersonTrackingServicer):
|
||||
lidar_thread = None
|
||||
|
||||
def __init__(self):
|
||||
self.cache = LidarCache(measurements=100)
|
||||
self.cache.do_scanning()
|
||||
|
||||
def set_tracking_group(self, request, context):
|
||||
pass
|
||||
|
||||
def stop_tracking(self, request, context):
|
||||
self.cache.stop_scanning()
|
||||
|
||||
def get_scan_data(self, request, context):
|
||||
pass
|
||||
self.lidar_thread.join()
|
||||
self.lidar_thread = None
|
||||
|
||||
def start_tracking(self, request, context):
|
||||
'''
|
||||
Starts the lidar cache.
|
||||
'''
|
||||
pass
|
||||
|
||||
if self.lidar_thread is None:
|
||||
self.lidar_thread = Process(target=self.cache.do_scanning)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: lidar_tracker.proto
|
||||
# source: persontracking/lidar_tracker.proto
|
||||
|
||||
import sys
|
||||
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
|
||||
@@ -16,11 +15,11 @@ _sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='lidar_tracker.proto',
|
||||
name='persontracking/lidar_tracker.proto',
|
||||
package='persontracking',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('\n\031com.example.carcontrollerB\021MotorServiceProtoP\001'),
|
||||
serialized_pb=_b('\n\x13lidar_tracker.proto\x12\x0epersontracking\"\x1b\n\nInt32Value\x12\r\n\x05value\x18\x01 \x01(\x05\"\x07\n\x05\x45mpty\">\n\x05Point\x12\r\n\x05\x61ngle\x18\x01 \x01(\x01\x12\x10\n\x08\x64istance\x18\x02 \x01(\x05\x12\x14\n\x0cgroup_number\x18\x03 \x01(\x05\"2\n\tPointScan\x12%\n\x06points\x18\x01 \x03(\x0b\x32\x15.persontracking.Point2\xe1\x01\n\x0ePersonTracking\x12I\n\x12set_tracking_group\x12\x1a.persontracking.Int32Value\x1a\x15.persontracking.Empty\"\x00\x12?\n\rstop_tracking\x12\x15.persontracking.Empty\x1a\x15.persontracking.Empty\"\x00\x12\x43\n\rget_scan_data\x12\x15.persontracking.Empty\x1a\x19.persontracking.PointScan\"\x00\x42\x30\n\x19\x63om.example.carcontrollerB\x11MotorServiceProtoP\x01\x62\x06proto3')
|
||||
serialized_pb=_b('\n\"persontracking/lidar_tracker.proto\x12\x0epersontracking\"\x1b\n\nInt32Value\x12\r\n\x05value\x18\x01 \x01(\x05\"\x07\n\x05\x45mpty\">\n\x05Point\x12\r\n\x05\x61ngle\x18\x01 \x01(\x01\x12\x10\n\x08\x64istance\x18\x02 \x01(\x05\x12\x14\n\x0cgroup_number\x18\x03 \x01(\x05\"2\n\tPointScan\x12%\n\x06points\x18\x01 \x03(\x0b\x32\x15.persontracking.Point2\xe3\x01\n\x0ePersonTracking\x12I\n\x12set_tracking_group\x12\x1a.persontracking.Int32Value\x1a\x15.persontracking.Empty\"\x00\x12?\n\rstop_tracking\x12\x15.persontracking.Empty\x1a\x15.persontracking.Empty\"\x00\x12\x45\n\x0estart_tracking\x12\x1a.persontracking.Int32Value\x1a\x15.persontracking.Empty\"\x00\x42\x30\n\x19\x63om.example.carcontrollerB\x11MotorServiceProtoP\x01\x62\x06proto3')
|
||||
)
|
||||
|
||||
|
||||
@@ -52,8 +51,8 @@ _INT32VALUE = _descriptor.Descriptor(
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=39,
|
||||
serialized_end=66,
|
||||
serialized_start=54,
|
||||
serialized_end=81,
|
||||
)
|
||||
|
||||
|
||||
@@ -76,8 +75,8 @@ _EMPTY = _descriptor.Descriptor(
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=68,
|
||||
serialized_end=75,
|
||||
serialized_start=83,
|
||||
serialized_end=90,
|
||||
)
|
||||
|
||||
|
||||
@@ -121,8 +120,8 @@ _POINT = _descriptor.Descriptor(
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=77,
|
||||
serialized_end=139,
|
||||
serialized_start=92,
|
||||
serialized_end=154,
|
||||
)
|
||||
|
||||
|
||||
@@ -152,8 +151,8 @@ _POINTSCAN = _descriptor.Descriptor(
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=141,
|
||||
serialized_end=191,
|
||||
serialized_start=156,
|
||||
serialized_end=206,
|
||||
)
|
||||
|
||||
_POINTSCAN.fields_by_name['points'].message_type = _POINT
|
||||
@@ -163,32 +162,32 @@ DESCRIPTOR.message_types_by_name['Point'] = _POINT
|
||||
DESCRIPTOR.message_types_by_name['PointScan'] = _POINTSCAN
|
||||
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
|
||||
|
||||
Int32Value = _reflection.GeneratedProtocolMessageType('Int32Value', (_message.Message,), {
|
||||
'DESCRIPTOR' : _INT32VALUE,
|
||||
'__module__' : 'lidar_tracker_pb2'
|
||||
Int32Value = _reflection.GeneratedProtocolMessageType('Int32Value', (_message.Message,), dict(
|
||||
DESCRIPTOR = _INT32VALUE,
|
||||
__module__ = 'persontracking.lidar_tracker_pb2'
|
||||
# @@protoc_insertion_point(class_scope:persontracking.Int32Value)
|
||||
})
|
||||
))
|
||||
_sym_db.RegisterMessage(Int32Value)
|
||||
|
||||
Empty = _reflection.GeneratedProtocolMessageType('Empty', (_message.Message,), {
|
||||
'DESCRIPTOR' : _EMPTY,
|
||||
'__module__' : 'lidar_tracker_pb2'
|
||||
Empty = _reflection.GeneratedProtocolMessageType('Empty', (_message.Message,), dict(
|
||||
DESCRIPTOR = _EMPTY,
|
||||
__module__ = 'persontracking.lidar_tracker_pb2'
|
||||
# @@protoc_insertion_point(class_scope:persontracking.Empty)
|
||||
})
|
||||
))
|
||||
_sym_db.RegisterMessage(Empty)
|
||||
|
||||
Point = _reflection.GeneratedProtocolMessageType('Point', (_message.Message,), {
|
||||
'DESCRIPTOR' : _POINT,
|
||||
'__module__' : 'lidar_tracker_pb2'
|
||||
Point = _reflection.GeneratedProtocolMessageType('Point', (_message.Message,), dict(
|
||||
DESCRIPTOR = _POINT,
|
||||
__module__ = 'persontracking.lidar_tracker_pb2'
|
||||
# @@protoc_insertion_point(class_scope:persontracking.Point)
|
||||
})
|
||||
))
|
||||
_sym_db.RegisterMessage(Point)
|
||||
|
||||
PointScan = _reflection.GeneratedProtocolMessageType('PointScan', (_message.Message,), {
|
||||
'DESCRIPTOR' : _POINTSCAN,
|
||||
'__module__' : 'lidar_tracker_pb2'
|
||||
PointScan = _reflection.GeneratedProtocolMessageType('PointScan', (_message.Message,), dict(
|
||||
DESCRIPTOR = _POINTSCAN,
|
||||
__module__ = 'persontracking.lidar_tracker_pb2'
|
||||
# @@protoc_insertion_point(class_scope:persontracking.PointScan)
|
||||
})
|
||||
))
|
||||
_sym_db.RegisterMessage(PointScan)
|
||||
|
||||
|
||||
@@ -200,8 +199,8 @@ _PERSONTRACKING = _descriptor.ServiceDescriptor(
|
||||
file=DESCRIPTOR,
|
||||
index=0,
|
||||
serialized_options=None,
|
||||
serialized_start=194,
|
||||
serialized_end=419,
|
||||
serialized_start=209,
|
||||
serialized_end=436,
|
||||
methods=[
|
||||
_descriptor.MethodDescriptor(
|
||||
name='set_tracking_group',
|
||||
@@ -222,12 +221,12 @@ _PERSONTRACKING = _descriptor.ServiceDescriptor(
|
||||
serialized_options=None,
|
||||
),
|
||||
_descriptor.MethodDescriptor(
|
||||
name='get_scan_data',
|
||||
full_name='persontracking.PersonTracking.get_scan_data',
|
||||
name='start_tracking',
|
||||
full_name='persontracking.PersonTracking.start_tracking',
|
||||
index=2,
|
||||
containing_service=None,
|
||||
input_type=_EMPTY,
|
||||
output_type=_POINTSCAN,
|
||||
input_type=_INT32VALUE,
|
||||
output_type=_EMPTY,
|
||||
serialized_options=None,
|
||||
),
|
||||
])
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
||||
import grpc
|
||||
|
||||
import lidar_tracker_pb2 as lidar__tracker__pb2
|
||||
from persontracking import lidar_tracker_pb2 as persontracking_dot_lidar__tracker__pb2
|
||||
|
||||
|
||||
class PersonTrackingStub(object):
|
||||
@@ -16,18 +16,18 @@ class PersonTrackingStub(object):
|
||||
"""
|
||||
self.set_tracking_group = channel.unary_unary(
|
||||
'/persontracking.PersonTracking/set_tracking_group',
|
||||
request_serializer=lidar__tracker__pb2.Int32Value.SerializeToString,
|
||||
response_deserializer=lidar__tracker__pb2.Empty.FromString,
|
||||
request_serializer=persontracking_dot_lidar__tracker__pb2.Int32Value.SerializeToString,
|
||||
response_deserializer=persontracking_dot_lidar__tracker__pb2.Empty.FromString,
|
||||
)
|
||||
self.stop_tracking = channel.unary_unary(
|
||||
'/persontracking.PersonTracking/stop_tracking',
|
||||
request_serializer=lidar__tracker__pb2.Empty.SerializeToString,
|
||||
response_deserializer=lidar__tracker__pb2.Empty.FromString,
|
||||
request_serializer=persontracking_dot_lidar__tracker__pb2.Empty.SerializeToString,
|
||||
response_deserializer=persontracking_dot_lidar__tracker__pb2.Empty.FromString,
|
||||
)
|
||||
self.get_scan_data = channel.unary_unary(
|
||||
'/persontracking.PersonTracking/get_scan_data',
|
||||
request_serializer=lidar__tracker__pb2.Empty.SerializeToString,
|
||||
response_deserializer=lidar__tracker__pb2.PointScan.FromString,
|
||||
self.start_tracking = channel.unary_unary(
|
||||
'/persontracking.PersonTracking/start_tracking',
|
||||
request_serializer=persontracking_dot_lidar__tracker__pb2.Int32Value.SerializeToString,
|
||||
response_deserializer=persontracking_dot_lidar__tracker__pb2.Empty.FromString,
|
||||
)
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ class PersonTrackingServicer(object):
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def get_scan_data(self, request, context):
|
||||
def start_tracking(self, request, context):
|
||||
# missing associated documentation comment in .proto file
|
||||
pass
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
@@ -61,18 +61,18 @@ def add_PersonTrackingServicer_to_server(servicer, server):
|
||||
rpc_method_handlers = {
|
||||
'set_tracking_group': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.set_tracking_group,
|
||||
request_deserializer=lidar__tracker__pb2.Int32Value.FromString,
|
||||
response_serializer=lidar__tracker__pb2.Empty.SerializeToString,
|
||||
request_deserializer=persontracking_dot_lidar__tracker__pb2.Int32Value.FromString,
|
||||
response_serializer=persontracking_dot_lidar__tracker__pb2.Empty.SerializeToString,
|
||||
),
|
||||
'stop_tracking': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.stop_tracking,
|
||||
request_deserializer=lidar__tracker__pb2.Empty.FromString,
|
||||
response_serializer=lidar__tracker__pb2.Empty.SerializeToString,
|
||||
request_deserializer=persontracking_dot_lidar__tracker__pb2.Empty.FromString,
|
||||
response_serializer=persontracking_dot_lidar__tracker__pb2.Empty.SerializeToString,
|
||||
),
|
||||
'get_scan_data': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.get_scan_data,
|
||||
request_deserializer=lidar__tracker__pb2.Empty.FromString,
|
||||
response_serializer=lidar__tracker__pb2.PointScan.SerializeToString,
|
||||
'start_tracking': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.start_tracking,
|
||||
request_deserializer=persontracking_dot_lidar__tracker__pb2.Int32Value.FromString,
|
||||
response_serializer=persontracking_dot_lidar__tracker__pb2.Empty.SerializeToString,
|
||||
),
|
||||
}
|
||||
generic_handler = grpc.method_handlers_generic_handler(
|
||||
|
||||
@@ -24,16 +24,10 @@ message PointScan{
|
||||
repeated Point points = 1;
|
||||
}
|
||||
|
||||
message TrackingInfo{
|
||||
int32 port = 1;
|
||||
}
|
||||
|
||||
service PersonTracking{
|
||||
rpc set_tracking_group(Int32Value) returns (Empty) {}
|
||||
|
||||
rpc stop_tracking(Empty) returns (Empty) {}
|
||||
|
||||
rpc get_scan_data(Empty) returns (PointScan) {}
|
||||
|
||||
rpc start_tracking(TrackingInfo) returns (Empty) {}
|
||||
rpc start_tracking(Int32Value) returns (Empty) {}
|
||||
}
|
||||
Reference in New Issue
Block a user