/usr/lib/python3/dist-packages/morse/middleware/pocolibs/sensors/velodyne.py is in python3-morse-simulator 1.4-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | import logging; logger = logging.getLogger("morse." + __name__)
from morse.core import blenderapi
from math import pi
from morse.middleware import AbstractDatastream
from morse.middleware.pocolibs_datastream import poster_name, PocolibsDatastreamManager
try:
from morse.middleware.pocolibs.velodyne import *
except ImportError:
if not blenderapi.fake:
raise
class Velodyne3DImage(AbstractDatastream):
_type_name = "velodyne3DImage"
_type_url = "http://trac.laas.fr/git/velodyne-genom/tree/velodyneClient.h#n48"
def initialize(self):
name = poster_name(self.component_name, self.kwargs)
# if we want to use a static DepthCamera as a Velodyne
# then num_rotation = 1 will prevent buffering.
num_rotation = 1
if 'rotation' in dir(self.component_instance):
num_rotation += int(2 * pi / self.component_instance.rotation)
logger.info("num_rotation %d" % num_rotation)
self.obj = Velodyne(name, self.component_instance.image_width,
self.component_instance.image_height, num_rotation)
def default(self, ci):
if not self.component_instance.capturing:
return
main_to_origin = self.component_instance.robot_parent.position_3d
pom_date, t = PocolibsDatastreamManager.compute_date()
main_to_sensor = main_to_origin.transformation3d_with(
self.component_instance.position_3d)
info = VelodyneSimu()
info.nb_pts = self.data['nb_points']
info.x_rob = main_to_origin.x
info.y_rob = main_to_origin.y
info.z_rob = main_to_origin.z
info.yaw_rob = main_to_origin.yaw
info.pitch_rob = main_to_origin.pitch
info.roll_rob = main_to_origin.roll
info.x_cam = main_to_sensor.x
info.y_cam = main_to_sensor.y
info.z_cam = main_to_sensor.z
info.yaw_cam = main_to_sensor.yaw
info.pitch_cam = main_to_sensor.pitch
info.roll_cam = main_to_sensor.roll
info.pom_tag = pom_date
self.obj.post(info, self.data['points'])
def finalize(self):
self.obj.finalize()
AbstractDatastream.finalize(self)
|