Don't allow client to specify zmq port.
This commit is contained in:
@@ -3,12 +3,7 @@ import os
|
|||||||
|
|
||||||
|
|
||||||
def get_vehicle(motor_pin=19, steering_pin=18):
|
def get_vehicle(motor_pin=19, steering_pin=18):
|
||||||
ENV_CAR = None
|
ENV_CAR = None if 'CAR_VEHICLE' not in os.environ else os.environ['CAR_VEHICLE']
|
||||||
try:
|
|
||||||
ENV_CAR = os.environ['CAR_VEHICLE']
|
|
||||||
except KeyError:
|
|
||||||
print('Failed to find CAR_VEHICLE environment variable. Using mock.')
|
|
||||||
return MockVehicle()
|
|
||||||
if ENV_CAR == "CAR_2D":
|
if ENV_CAR == "CAR_2D":
|
||||||
try:
|
try:
|
||||||
from .vehicle import Vehicle
|
from .vehicle import Vehicle
|
||||||
@@ -20,3 +15,4 @@ def get_vehicle(motor_pin=19, steering_pin=18):
|
|||||||
return MockVehicle(motor_pin, steering_pin)
|
return MockVehicle(motor_pin, steering_pin)
|
||||||
else:
|
else:
|
||||||
print('No valid vehicle found. Have you set the CAR_VEHICLE environment variable?')
|
print('No valid vehicle found. Have you set the CAR_VEHICLE environment variable?')
|
||||||
|
return None
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import car.slam.SlamController_pb2 as proto
|
|||||||
import car.empty_pb2 as empty
|
import car.empty_pb2 as empty
|
||||||
import car.slam.slam_streamer as slam
|
import car.slam.slam_streamer as slam
|
||||||
from multiprocessing import Process
|
from multiprocessing import Process
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
class SlamServicer(grpc.SlamControlServicer):
|
class SlamServicer(grpc.SlamControlServicer):
|
||||||
@@ -17,7 +18,8 @@ class SlamServicer(grpc.SlamControlServicer):
|
|||||||
if self.slam_thread is None:
|
if self.slam_thread is None:
|
||||||
print('initialising slam_thread')
|
print('initialising slam_thread')
|
||||||
# Don't bother creating and starting slam more than once.
|
# Don't bother creating and starting slam more than once.
|
||||||
self.slam.port = request.port
|
self.slam.port = 50052 if "CAR_ZMQ_PORT" not in os.environ else os.environ[
|
||||||
|
'CAR_ZMQ_PORT']
|
||||||
self.slam.map_pixels = request.map_size_pixels
|
self.slam.map_pixels = request.map_size_pixels
|
||||||
self.slam.map_meters = request.map_size_meters
|
self.slam.map_meters = request.map_size_meters
|
||||||
self.slam_thread = Process(target=self.slam.start)
|
self.slam_thread = Process(target=self.slam.start)
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import car.tracking.devices.factory as lidar_factory
|
|||||||
|
|
||||||
from car.messaging import messages
|
from car.messaging import messages
|
||||||
import car.tracking.algorithms as alg
|
import car.tracking.algorithms as alg
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
class LidarServicer(PersonTrackingServicer):
|
class LidarServicer(PersonTrackingServicer):
|
||||||
|
|
||||||
@@ -16,26 +18,28 @@ class LidarServicer(PersonTrackingServicer):
|
|||||||
self.cache = LidarCache(lidar_factory.get_lidar(), measurements=100)
|
self.cache = LidarCache(lidar_factory.get_lidar(), measurements=100)
|
||||||
self.cache.add_groups_changed_listener(self)
|
self.cache.add_groups_changed_listener(self)
|
||||||
self._mFactory = None
|
self._mFactory = None
|
||||||
self._port = None
|
self._port = 50052 if 'CAR_ZMQ_PORT' not in os.environ else os.environ[
|
||||||
|
'CAR_ZMQ_PORT']
|
||||||
self._vehicle = vehicle
|
self._vehicle = vehicle
|
||||||
self._tracked_group = None
|
self._tracked_group = None
|
||||||
|
|
||||||
def set_tracking_group(self, request, context):
|
def set_tracking_group(self, request, context):
|
||||||
self._tracked_group = request.value
|
# Invalid groups should stop tracking
|
||||||
|
self._tracked_group = None if request.value < 0 else request.value
|
||||||
|
|
||||||
def stop_tracking(self, request, context):
|
def stop_tracking(self, request, context):
|
||||||
self.cache.stop_scanning()
|
self.cache.stop_scanning()
|
||||||
|
|
||||||
def start_tracking(self, request, context):
|
def start_tracking(self, request, context):
|
||||||
"""Starts the lidar cache, streaming on the provided port."""
|
"""Starts the lidar cache, streaming on the provided port."""
|
||||||
self._port = request.value
|
|
||||||
self.cache.start_cache()
|
self.cache.start_cache()
|
||||||
|
|
||||||
def onGroupsChanged(self, message):
|
def onGroupsChanged(self, message):
|
||||||
if self._mFactory is None:
|
if self._mFactory is None:
|
||||||
# Create the zmq socket in the thread that it will be used, just to be safe.
|
# Create the zmq socket in the thread that it will be used, just to be safe.
|
||||||
self._mFactory = mf.getZmqPubSubStreamer(self._port)
|
self._mFactory = mf.getZmqPubSubStreamer(self._port)
|
||||||
self._mFactory.send_message_topic("lidar_map", messages.ProtoMessage(message=message.SerializeToString()))
|
self._mFactory.send_message_topic(
|
||||||
|
"lidar_map", messages.ProtoMessage(message=message.SerializeToString()))
|
||||||
|
|
||||||
if self._tracked_group is not None and self._vehicle is not None:
|
if self._tracked_group is not None and self._vehicle is not None:
|
||||||
# Update vehicle to correctly follow the tracked group.
|
# Update vehicle to correctly follow the tracked group.
|
||||||
|
|||||||
Reference in New Issue
Block a user