MCPcopy Create free account
hub / github.com/AdaCompNUS/summit / IMUSensor

Class IMUSensor

PythonAPI/examples/manual_control.py:775–806  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

773
774
775class IMUSensor(object):
776 def __init__(self, parent_actor):
777 self.sensor = None
778 self._parent = parent_actor
779 self.accelerometer = (0.0, 0.0, 0.0)
780 self.gyroscope = (0.0, 0.0, 0.0)
781 self.compass = 0.0
782 world = self._parent.get_world()
783 bp = world.get_blueprint_library().find('sensor.other.imu')
784 self.sensor = world.spawn_actor(
785 bp, carla.Transform(), attach_to=self._parent)
786 # We need to pass the lambda a weak reference to self to avoid circular
787 # reference.
788 weak_self = weakref.ref(self)
789 self.sensor.listen(
790 lambda sensor_data: IMUSensor._IMU_callback(weak_self, sensor_data))
791
792 @staticmethod
793 def _IMU_callback(weak_self, sensor_data):
794 self = weak_self()
795 if not self:
796 return
797 limits = (-99.9, 99.9)
798 self.accelerometer = (
799 max(limits[0], min(limits[1], sensor_data.accelerometer.x)),
800 max(limits[0], min(limits[1], sensor_data.accelerometer.y)),
801 max(limits[0], min(limits[1], sensor_data.accelerometer.z)))
802 self.gyroscope = (
803 max(limits[0], min(limits[1], math.degrees(sensor_data.gyroscope.x))),
804 max(limits[0], min(limits[1], math.degrees(sensor_data.gyroscope.y))),
805 max(limits[0], min(limits[1], math.degrees(sensor_data.gyroscope.z))))
806 self.compass = math.degrees(sensor_data.compass)
807
808
809# ==============================================================================

Callers 1

restartMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected