Fix #345 rollback vehicle's location and send relative transform of the bounding box
This commit is contained in:
parent
c5ccf00134
commit
d6b61aac63
|
@ -19,7 +19,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
|||
name='carla_server.proto',
|
||||
package='carla_server',
|
||||
syntax='proto3',
|
||||
serialized_pb=_b('\n\x12\x63\x61rla_server.proto\x12\x0c\x63\x61rla_server\"+\n\x08Vector3D\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"6\n\nRotation3D\x12\r\n\x05pitch\x18\x01 \x01(\x02\x12\x0b\n\x03yaw\x18\x02 \x01(\x02\x12\x0c\n\x04roll\x18\x03 \x01(\x02\"\x92\x01\n\tTransform\x12(\n\x08location\x18\x01 \x01(\x0b\x32\x16.carla_server.Vector3D\x12/\n\x0borientation\x18\x02 \x01(\x0b\x32\x16.carla_server.Vector3DB\x02\x18\x01\x12*\n\x08rotation\x18\x03 \x01(\x0b\x32\x18.carla_server.Rotation3D\"\x80\x01\n\x06Sensor\x12\n\n\x02id\x18\x01 \x01(\x07\x12\'\n\x04type\x18\x02 \x01(\x0e\x32\x19.carla_server.Sensor.Type\x12\x0c\n\x04name\x18\x03 \x01(\t\"3\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x43\x41MERA\x10\x01\x12\x12\n\x0eLIDAR_RAY_CAST\x10\x02\"x\n\x07Vehicle\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12*\n\nbox_extent\x18\x02 \x01(\x0b\x32\x16.carla_server.Vector3D\x12\x15\n\rforward_speed\x18\x03 \x01(\x02\"{\n\nPedestrian\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12*\n\nbox_extent\x18\x02 \x01(\x0b\x32\x16.carla_server.Vector3D\x12\x15\n\rforward_speed\x18\x03 \x01(\x02\"\x94\x01\n\x0cTrafficLight\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12/\n\x05state\x18\x02 \x01(\x0e\x32 .carla_server.TrafficLight.State\"\'\n\x05State\x12\t\n\x05GREEN\x10\x00\x12\n\n\x06YELLOW\x10\x01\x12\x07\n\x03RED\x10\x02\"Q\n\x0eSpeedLimitSign\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12\x13\n\x0bspeed_limit\x18\x02 \x01(\x02\"\xe5\x01\n\x05\x41gent\x12\n\n\x02id\x18\x01 \x01(\x07\x12(\n\x07vehicle\x18\x02 \x01(\x0b\x32\x15.carla_server.VehicleH\x00\x12.\n\npedestrian\x18\x03 \x01(\x0b\x32\x18.carla_server.PedestrianH\x00\x12\x33\n\rtraffic_light\x18\x04 \x01(\x0b\x32\x1a.carla_server.TrafficLightH\x00\x12\x38\n\x10speed_limit_sign\x18\x05 \x01(\x0b\x32\x1c.carla_server.SpeedLimitSignH\x00\x42\x07\n\x05\x61gent\"%\n\x11RequestNewEpisode\x12\x10\n\x08ini_file\x18\x01 \x01(\t\"n\n\x10SceneDescription\x12\x33\n\x12player_start_spots\x18\x01 \x03(\x0b\x32\x17.carla_server.Transform\x12%\n\x07sensors\x18\x02 \x03(\x0b\x32\x14.carla_server.Sensor\"/\n\x0c\x45pisodeStart\x12\x1f\n\x17player_start_spot_index\x18\x01 \x01(\r\"\x1d\n\x0c\x45pisodeReady\x12\r\n\x05ready\x18\x01 \x01(\x08\"^\n\x07\x43ontrol\x12\r\n\x05steer\x18\x01 \x01(\x02\x12\x10\n\x08throttle\x18\x02 \x01(\x02\x12\r\n\x05\x62rake\x18\x03 \x01(\x02\x12\x12\n\nhand_brake\x18\x04 \x01(\x08\x12\x0f\n\x07reverse\x18\x05 \x01(\x08\"\xcc\x04\n\x0cMeasurements\x12\x14\n\x0c\x66rame_number\x18\x05 \x01(\x04\x12\x1a\n\x12platform_timestamp\x18\x01 \x01(\r\x12\x16\n\x0egame_timestamp\x18\x02 \x01(\r\x12J\n\x13player_measurements\x18\x03 \x01(\x0b\x32-.carla_server.Measurements.PlayerMeasurements\x12.\n\x11non_player_agents\x18\x04 \x03(\x0b\x32\x13.carla_server.Agent\x1a\xf5\x02\n\x12PlayerMeasurements\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12*\n\nbox_extent\x18\x0b \x01(\x0b\x32\x16.carla_server.Vector3D\x12,\n\x0c\x61\x63\x63\x65leration\x18\x03 \x01(\x0b\x32\x16.carla_server.Vector3D\x12\x15\n\rforward_speed\x18\x04 \x01(\x02\x12\x1a\n\x12\x63ollision_vehicles\x18\x05 \x01(\x02\x12\x1d\n\x15\x63ollision_pedestrians\x18\x06 \x01(\x02\x12\x17\n\x0f\x63ollision_other\x18\x07 \x01(\x02\x12\x1e\n\x16intersection_otherlane\x18\x08 \x01(\x02\x12\x1c\n\x14intersection_offroad\x18\t \x01(\x02\x12\x30\n\x11\x61utopilot_control\x18\n \x01(\x0b\x32\x15.carla_server.ControlB\x03\xf8\x01\x01\x62\x06proto3')
|
||||
serialized_pb=_b('\n\x12\x63\x61rla_server.proto\x12\x0c\x63\x61rla_server\"+\n\x08Vector3D\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"6\n\nRotation3D\x12\r\n\x05pitch\x18\x01 \x01(\x02\x12\x0b\n\x03yaw\x18\x02 \x01(\x02\x12\x0c\n\x04roll\x18\x03 \x01(\x02\"\x92\x01\n\tTransform\x12(\n\x08location\x18\x01 \x01(\x0b\x32\x16.carla_server.Vector3D\x12/\n\x0borientation\x18\x02 \x01(\x0b\x32\x16.carla_server.Vector3DB\x02\x18\x01\x12*\n\x08rotation\x18\x03 \x01(\x0b\x32\x18.carla_server.Rotation3D\"a\n\x0b\x42oundingBox\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12&\n\x06\x65xtent\x18\x02 \x01(\x0b\x32\x16.carla_server.Vector3D\"\x80\x01\n\x06Sensor\x12\n\n\x02id\x18\x01 \x01(\x07\x12\'\n\x04type\x18\x02 \x01(\x0e\x32\x19.carla_server.Sensor.Type\x12\x0c\n\x04name\x18\x03 \x01(\t\"3\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x43\x41MERA\x10\x01\x12\x12\n\x0eLIDAR_RAY_CAST\x10\x02\"}\n\x07Vehicle\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12/\n\x0c\x62ounding_box\x18\x04 \x01(\x0b\x32\x19.carla_server.BoundingBox\x12\x15\n\rforward_speed\x18\x03 \x01(\x02\"\x80\x01\n\nPedestrian\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12/\n\x0c\x62ounding_box\x18\x04 \x01(\x0b\x32\x19.carla_server.BoundingBox\x12\x15\n\rforward_speed\x18\x03 \x01(\x02\"\x94\x01\n\x0cTrafficLight\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12/\n\x05state\x18\x02 \x01(\x0e\x32 .carla_server.TrafficLight.State\"\'\n\x05State\x12\t\n\x05GREEN\x10\x00\x12\n\n\x06YELLOW\x10\x01\x12\x07\n\x03RED\x10\x02\"Q\n\x0eSpeedLimitSign\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12\x13\n\x0bspeed_limit\x18\x02 \x01(\x02\"\xe5\x01\n\x05\x41gent\x12\n\n\x02id\x18\x01 \x01(\x07\x12(\n\x07vehicle\x18\x02 \x01(\x0b\x32\x15.carla_server.VehicleH\x00\x12.\n\npedestrian\x18\x03 \x01(\x0b\x32\x18.carla_server.PedestrianH\x00\x12\x33\n\rtraffic_light\x18\x04 \x01(\x0b\x32\x1a.carla_server.TrafficLightH\x00\x12\x38\n\x10speed_limit_sign\x18\x05 \x01(\x0b\x32\x1c.carla_server.SpeedLimitSignH\x00\x42\x07\n\x05\x61gent\"%\n\x11RequestNewEpisode\x12\x10\n\x08ini_file\x18\x01 \x01(\t\"n\n\x10SceneDescription\x12\x33\n\x12player_start_spots\x18\x01 \x03(\x0b\x32\x17.carla_server.Transform\x12%\n\x07sensors\x18\x02 \x03(\x0b\x32\x14.carla_server.Sensor\"/\n\x0c\x45pisodeStart\x12\x1f\n\x17player_start_spot_index\x18\x01 \x01(\r\"\x1d\n\x0c\x45pisodeReady\x12\r\n\x05ready\x18\x01 \x01(\x08\"^\n\x07\x43ontrol\x12\r\n\x05steer\x18\x01 \x01(\x02\x12\x10\n\x08throttle\x18\x02 \x01(\x02\x12\r\n\x05\x62rake\x18\x03 \x01(\x02\x12\x12\n\nhand_brake\x18\x04 \x01(\x08\x12\x0f\n\x07reverse\x18\x05 \x01(\x08\"\xd1\x04\n\x0cMeasurements\x12\x14\n\x0c\x66rame_number\x18\x05 \x01(\x04\x12\x1a\n\x12platform_timestamp\x18\x01 \x01(\r\x12\x16\n\x0egame_timestamp\x18\x02 \x01(\r\x12J\n\x13player_measurements\x18\x03 \x01(\x0b\x32-.carla_server.Measurements.PlayerMeasurements\x12.\n\x11non_player_agents\x18\x04 \x03(\x0b\x32\x13.carla_server.Agent\x1a\xfa\x02\n\x12PlayerMeasurements\x12*\n\ttransform\x18\x01 \x01(\x0b\x32\x17.carla_server.Transform\x12/\n\x0c\x62ounding_box\x18\x0c \x01(\x0b\x32\x19.carla_server.BoundingBox\x12,\n\x0c\x61\x63\x63\x65leration\x18\x03 \x01(\x0b\x32\x16.carla_server.Vector3D\x12\x15\n\rforward_speed\x18\x04 \x01(\x02\x12\x1a\n\x12\x63ollision_vehicles\x18\x05 \x01(\x02\x12\x1d\n\x15\x63ollision_pedestrians\x18\x06 \x01(\x02\x12\x17\n\x0f\x63ollision_other\x18\x07 \x01(\x02\x12\x1e\n\x16intersection_otherlane\x18\x08 \x01(\x02\x12\x1c\n\x14intersection_offroad\x18\t \x01(\x02\x12\x30\n\x11\x61utopilot_control\x18\n \x01(\x0b\x32\x15.carla_server.ControlB\x03\xf8\x01\x01\x62\x06proto3')
|
||||
)
|
||||
|
||||
|
||||
|
@ -45,8 +45,8 @@ _SENSOR_TYPE = _descriptor.EnumDescriptor(
|
|||
],
|
||||
containing_type=None,
|
||||
options=None,
|
||||
serialized_start=364,
|
||||
serialized_end=415,
|
||||
serialized_start=463,
|
||||
serialized_end=514,
|
||||
)
|
||||
_sym_db.RegisterEnumDescriptor(_SENSOR_TYPE)
|
||||
|
||||
|
@ -71,8 +71,8 @@ _TRAFFICLIGHT_STATE = _descriptor.EnumDescriptor(
|
|||
],
|
||||
containing_type=None,
|
||||
options=None,
|
||||
serialized_start=774,
|
||||
serialized_end=813,
|
||||
serialized_start=884,
|
||||
serialized_end=923,
|
||||
)
|
||||
_sym_db.RegisterEnumDescriptor(_TRAFFICLIGHT_STATE)
|
||||
|
||||
|
@ -212,6 +212,44 @@ _TRANSFORM = _descriptor.Descriptor(
|
|||
)
|
||||
|
||||
|
||||
_BOUNDINGBOX = _descriptor.Descriptor(
|
||||
name='BoundingBox',
|
||||
full_name='carla_server.BoundingBox',
|
||||
filename=None,
|
||||
file=DESCRIPTOR,
|
||||
containing_type=None,
|
||||
fields=[
|
||||
_descriptor.FieldDescriptor(
|
||||
name='transform', full_name='carla_server.BoundingBox.transform', index=0,
|
||||
number=1, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='extent', full_name='carla_server.BoundingBox.extent', index=1,
|
||||
number=2, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=286,
|
||||
serialized_end=383,
|
||||
)
|
||||
|
||||
|
||||
_SENSOR = _descriptor.Descriptor(
|
||||
name='Sensor',
|
||||
full_name='carla_server.Sensor',
|
||||
|
@ -253,8 +291,8 @@ _SENSOR = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=287,
|
||||
serialized_end=415,
|
||||
serialized_start=386,
|
||||
serialized_end=514,
|
||||
)
|
||||
|
||||
|
||||
|
@ -273,8 +311,8 @@ _VEHICLE = _descriptor.Descriptor(
|
|||
is_extension=False, extension_scope=None,
|
||||
options=None),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='box_extent', full_name='carla_server.Vehicle.box_extent', index=1,
|
||||
number=2, type=11, cpp_type=10, label=1,
|
||||
name='bounding_box', full_name='carla_server.Vehicle.bounding_box', index=1,
|
||||
number=4, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
|
@ -298,8 +336,8 @@ _VEHICLE = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=417,
|
||||
serialized_end=537,
|
||||
serialized_start=516,
|
||||
serialized_end=641,
|
||||
)
|
||||
|
||||
|
||||
|
@ -318,8 +356,8 @@ _PEDESTRIAN = _descriptor.Descriptor(
|
|||
is_extension=False, extension_scope=None,
|
||||
options=None),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='box_extent', full_name='carla_server.Pedestrian.box_extent', index=1,
|
||||
number=2, type=11, cpp_type=10, label=1,
|
||||
name='bounding_box', full_name='carla_server.Pedestrian.bounding_box', index=1,
|
||||
number=4, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
|
@ -343,8 +381,8 @@ _PEDESTRIAN = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=539,
|
||||
serialized_end=662,
|
||||
serialized_start=644,
|
||||
serialized_end=772,
|
||||
)
|
||||
|
||||
|
||||
|
@ -382,8 +420,8 @@ _TRAFFICLIGHT = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=665,
|
||||
serialized_end=813,
|
||||
serialized_start=775,
|
||||
serialized_end=923,
|
||||
)
|
||||
|
||||
|
||||
|
@ -420,8 +458,8 @@ _SPEEDLIMITSIGN = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=815,
|
||||
serialized_end=896,
|
||||
serialized_start=925,
|
||||
serialized_end=1006,
|
||||
)
|
||||
|
||||
|
||||
|
@ -482,8 +520,8 @@ _AGENT = _descriptor.Descriptor(
|
|||
name='agent', full_name='carla_server.Agent.agent',
|
||||
index=0, containing_type=None, fields=[]),
|
||||
],
|
||||
serialized_start=899,
|
||||
serialized_end=1128,
|
||||
serialized_start=1009,
|
||||
serialized_end=1238,
|
||||
)
|
||||
|
||||
|
||||
|
@ -513,8 +551,8 @@ _REQUESTNEWEPISODE = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=1130,
|
||||
serialized_end=1167,
|
||||
serialized_start=1240,
|
||||
serialized_end=1277,
|
||||
)
|
||||
|
||||
|
||||
|
@ -551,8 +589,8 @@ _SCENEDESCRIPTION = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=1169,
|
||||
serialized_end=1279,
|
||||
serialized_start=1279,
|
||||
serialized_end=1389,
|
||||
)
|
||||
|
||||
|
||||
|
@ -582,8 +620,8 @@ _EPISODESTART = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=1281,
|
||||
serialized_end=1328,
|
||||
serialized_start=1391,
|
||||
serialized_end=1438,
|
||||
)
|
||||
|
||||
|
||||
|
@ -613,8 +651,8 @@ _EPISODEREADY = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=1330,
|
||||
serialized_end=1359,
|
||||
serialized_start=1440,
|
||||
serialized_end=1469,
|
||||
)
|
||||
|
||||
|
||||
|
@ -672,8 +710,8 @@ _CONTROL = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=1361,
|
||||
serialized_end=1455,
|
||||
serialized_start=1471,
|
||||
serialized_end=1565,
|
||||
)
|
||||
|
||||
|
||||
|
@ -692,8 +730,8 @@ _MEASUREMENTS_PLAYERMEASUREMENTS = _descriptor.Descriptor(
|
|||
is_extension=False, extension_scope=None,
|
||||
options=None),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='box_extent', full_name='carla_server.Measurements.PlayerMeasurements.box_extent', index=1,
|
||||
number=11, type=11, cpp_type=10, label=1,
|
||||
name='bounding_box', full_name='carla_server.Measurements.PlayerMeasurements.bounding_box', index=1,
|
||||
number=12, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
|
@ -766,8 +804,8 @@ _MEASUREMENTS_PLAYERMEASUREMENTS = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=1673,
|
||||
serialized_end=2046,
|
||||
serialized_start=1783,
|
||||
serialized_end=2161,
|
||||
)
|
||||
|
||||
_MEASUREMENTS = _descriptor.Descriptor(
|
||||
|
@ -824,19 +862,21 @@ _MEASUREMENTS = _descriptor.Descriptor(
|
|||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
serialized_start=1458,
|
||||
serialized_end=2046,
|
||||
serialized_start=1568,
|
||||
serialized_end=2161,
|
||||
)
|
||||
|
||||
_TRANSFORM.fields_by_name['location'].message_type = _VECTOR3D
|
||||
_TRANSFORM.fields_by_name['orientation'].message_type = _VECTOR3D
|
||||
_TRANSFORM.fields_by_name['rotation'].message_type = _ROTATION3D
|
||||
_BOUNDINGBOX.fields_by_name['transform'].message_type = _TRANSFORM
|
||||
_BOUNDINGBOX.fields_by_name['extent'].message_type = _VECTOR3D
|
||||
_SENSOR.fields_by_name['type'].enum_type = _SENSOR_TYPE
|
||||
_SENSOR_TYPE.containing_type = _SENSOR
|
||||
_VEHICLE.fields_by_name['transform'].message_type = _TRANSFORM
|
||||
_VEHICLE.fields_by_name['box_extent'].message_type = _VECTOR3D
|
||||
_VEHICLE.fields_by_name['bounding_box'].message_type = _BOUNDINGBOX
|
||||
_PEDESTRIAN.fields_by_name['transform'].message_type = _TRANSFORM
|
||||
_PEDESTRIAN.fields_by_name['box_extent'].message_type = _VECTOR3D
|
||||
_PEDESTRIAN.fields_by_name['bounding_box'].message_type = _BOUNDINGBOX
|
||||
_TRAFFICLIGHT.fields_by_name['transform'].message_type = _TRANSFORM
|
||||
_TRAFFICLIGHT.fields_by_name['state'].enum_type = _TRAFFICLIGHT_STATE
|
||||
_TRAFFICLIGHT_STATE.containing_type = _TRAFFICLIGHT
|
||||
|
@ -860,7 +900,7 @@ _AGENT.fields_by_name['speed_limit_sign'].containing_oneof = _AGENT.oneofs_by_na
|
|||
_SCENEDESCRIPTION.fields_by_name['player_start_spots'].message_type = _TRANSFORM
|
||||
_SCENEDESCRIPTION.fields_by_name['sensors'].message_type = _SENSOR
|
||||
_MEASUREMENTS_PLAYERMEASUREMENTS.fields_by_name['transform'].message_type = _TRANSFORM
|
||||
_MEASUREMENTS_PLAYERMEASUREMENTS.fields_by_name['box_extent'].message_type = _VECTOR3D
|
||||
_MEASUREMENTS_PLAYERMEASUREMENTS.fields_by_name['bounding_box'].message_type = _BOUNDINGBOX
|
||||
_MEASUREMENTS_PLAYERMEASUREMENTS.fields_by_name['acceleration'].message_type = _VECTOR3D
|
||||
_MEASUREMENTS_PLAYERMEASUREMENTS.fields_by_name['autopilot_control'].message_type = _CONTROL
|
||||
_MEASUREMENTS_PLAYERMEASUREMENTS.containing_type = _MEASUREMENTS
|
||||
|
@ -869,6 +909,7 @@ _MEASUREMENTS.fields_by_name['non_player_agents'].message_type = _AGENT
|
|||
DESCRIPTOR.message_types_by_name['Vector3D'] = _VECTOR3D
|
||||
DESCRIPTOR.message_types_by_name['Rotation3D'] = _ROTATION3D
|
||||
DESCRIPTOR.message_types_by_name['Transform'] = _TRANSFORM
|
||||
DESCRIPTOR.message_types_by_name['BoundingBox'] = _BOUNDINGBOX
|
||||
DESCRIPTOR.message_types_by_name['Sensor'] = _SENSOR
|
||||
DESCRIPTOR.message_types_by_name['Vehicle'] = _VEHICLE
|
||||
DESCRIPTOR.message_types_by_name['Pedestrian'] = _PEDESTRIAN
|
||||
|
@ -904,6 +945,13 @@ Transform = _reflection.GeneratedProtocolMessageType('Transform', (_message.Mess
|
|||
))
|
||||
_sym_db.RegisterMessage(Transform)
|
||||
|
||||
BoundingBox = _reflection.GeneratedProtocolMessageType('BoundingBox', (_message.Message,), dict(
|
||||
DESCRIPTOR = _BOUNDINGBOX,
|
||||
__module__ = 'carla_server_pb2'
|
||||
# @@protoc_insertion_point(class_scope:carla_server.BoundingBox)
|
||||
))
|
||||
_sym_db.RegisterMessage(BoundingBox)
|
||||
|
||||
Sensor = _reflection.GeneratedProtocolMessageType('Sensor', (_message.Message,), dict(
|
||||
DESCRIPTOR = _SENSOR,
|
||||
__module__ = 'carla_server_pb2'
|
||||
|
|
|
@ -9,11 +9,9 @@
|
|||
#include "Carla.h"
|
||||
#include "VehicleAgentComponent.h"
|
||||
|
||||
#include "Vehicle/CarlaWheeledVehicle.h"
|
||||
|
||||
static bool IsPlayer(const ACarlaWheeledVehicle &Vehicle)
|
||||
static bool IsPlayer(const ACarlaWheeledVehicle &InVehicle)
|
||||
{
|
||||
auto *Controller = Cast<AWheeledVehicleAIController>(Vehicle.GetController());
|
||||
auto *Controller = Cast<AWheeledVehicleAIController>(InVehicle.GetController());
|
||||
return (Controller != nullptr) && Controller->IsPossessingThePlayer();
|
||||
}
|
||||
|
||||
|
@ -22,11 +20,11 @@ UVehicleAgentComponent::UVehicleAgentComponent(const FObjectInitializer &ObjectI
|
|||
|
||||
void UVehicleAgentComponent::BeginPlay()
|
||||
{
|
||||
WheeledVehicle = Cast<ACarlaWheeledVehicle>(GetOwner());
|
||||
checkf(WheeledVehicle != nullptr, TEXT("UVehicleAgentComponent can only be attached to ACarlaWheeledVehicle"));
|
||||
Vehicle = Cast<ACarlaWheeledVehicle>(GetOwner());
|
||||
checkf(Vehicle != nullptr, TEXT("UVehicleAgentComponent can only be attached to ACarlaWheeledVehicle"));
|
||||
|
||||
// We only want to register non-player agents.
|
||||
bRegisterAgentComponent = !IsPlayer(*WheeledVehicle);
|
||||
bRegisterAgentComponent = !IsPlayer(*Vehicle);
|
||||
|
||||
Super::BeginPlay();
|
||||
}
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
|
||||
#include "Agent/AgentComponent.h"
|
||||
|
||||
#include "VehicleAgentComponent.generated.h"
|
||||
#include "Vehicle/CarlaWheeledVehicle.h"
|
||||
|
||||
class ACarlaWheeledVehicle;
|
||||
#include "VehicleAgentComponent.generated.h"
|
||||
|
||||
UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))
|
||||
class CARLA_API UVehicleAgentComponent : public UAgentComponent
|
||||
|
@ -21,10 +21,25 @@ public:
|
|||
|
||||
UVehicleAgentComponent(const FObjectInitializer &ObjectInitializer);
|
||||
|
||||
ACarlaWheeledVehicle &GetVehicle() const
|
||||
/// Return forward speed in cm/s.
|
||||
float GetForwardSpeed() const
|
||||
{
|
||||
check(WheeledVehicle != nullptr);
|
||||
return *WheeledVehicle;
|
||||
return Vehicle->GetVehicleForwardSpeed();
|
||||
}
|
||||
|
||||
FTransform GetTransform() const
|
||||
{
|
||||
return Vehicle->GetVehicleTransform();
|
||||
}
|
||||
|
||||
FTransform GetBoundingBoxTransform() const
|
||||
{
|
||||
return Vehicle->GetVehicleBoundingBoxTransform();
|
||||
}
|
||||
|
||||
FVector GetBoundingBoxExtent() const
|
||||
{
|
||||
return Vehicle->GetVehicleBoundingBoxExtent();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
@ -38,5 +53,6 @@ protected:
|
|||
|
||||
private:
|
||||
|
||||
ACarlaWheeledVehicle *WheeledVehicle = nullptr;
|
||||
UPROPERTY()
|
||||
ACarlaWheeledVehicle *Vehicle = nullptr;
|
||||
};
|
||||
|
|
|
@ -9,17 +9,9 @@
|
|||
#include "Carla.h"
|
||||
#include "WalkerAgentComponent.h"
|
||||
|
||||
#include "GameFramework/Character.h"
|
||||
|
||||
UWalkerAgentComponent::UWalkerAgentComponent(const FObjectInitializer &ObjectInitializer)
|
||||
: Super(ObjectInitializer) {}
|
||||
|
||||
float UWalkerAgentComponent::GetForwardSpeed() const
|
||||
{
|
||||
/// @todo Is it necessary to compute this speed every tick?
|
||||
return FVector::DotProduct(Walker->GetVelocity(), Walker->GetActorRotation().Vector());
|
||||
}
|
||||
|
||||
void UWalkerAgentComponent::BeginPlay()
|
||||
{
|
||||
Walker = Cast<ACharacter>(GetOwner());
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
|
||||
#include "Agent/AgentComponent.h"
|
||||
|
||||
#include "WalkerAgentComponent.generated.h"
|
||||
#include "GameFramework/Character.h"
|
||||
|
||||
class ACharacter;
|
||||
#include "WalkerAgentComponent.generated.h"
|
||||
|
||||
/// This component can be added to any ACharacter to be added as agent.
|
||||
/// See UAgentComponent.
|
||||
|
@ -24,7 +24,20 @@ public:
|
|||
UWalkerAgentComponent(const FObjectInitializer &ObjectInitializer);
|
||||
|
||||
/// Return forward speed in cm/s.
|
||||
float GetForwardSpeed() const;
|
||||
float GetForwardSpeed() const
|
||||
{
|
||||
return FVector::DotProduct(Walker->GetVelocity(), Walker->GetActorRotation().Vector());
|
||||
}
|
||||
|
||||
FTransform GetTransform() const
|
||||
{
|
||||
return Walker->GetActorTransform();
|
||||
}
|
||||
|
||||
FTransform GetBoundingBoxTransform() const
|
||||
{
|
||||
return FTransform();
|
||||
}
|
||||
|
||||
FVector GetBoundingBoxExtent() const
|
||||
{
|
||||
|
|
|
@ -88,9 +88,15 @@ public:
|
|||
}
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
FVector GetBoundsExtent() const
|
||||
FTransform GetBoundingBoxTransform() const
|
||||
{
|
||||
return BoundsExtent;
|
||||
return BoundingBoxTransform;
|
||||
}
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
FVector GetBoundingBoxExtent() const
|
||||
{
|
||||
return BoundingBoxExtent;
|
||||
}
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
|
@ -235,7 +241,10 @@ private:
|
|||
FTransform Transform;
|
||||
|
||||
UPROPERTY(VisibleAnywhere)
|
||||
FVector BoundsExtent;
|
||||
FTransform BoundingBoxTransform;
|
||||
|
||||
UPROPERTY(VisibleAnywhere)
|
||||
FVector BoundingBoxExtent;
|
||||
|
||||
UPROPERTY(VisibleAnywhere)
|
||||
float ForwardSpeed = 0.0f;
|
||||
|
|
|
@ -111,7 +111,8 @@ void FCarlaEncoder::Encode(
|
|||
Data.game_timestamp = PlayerState.GetGameTimeStamp();
|
||||
auto &Player = Data.player_measurements;
|
||||
::Encode(PlayerState.GetTransform(), Player.transform);
|
||||
::Encode(PlayerState.GetBoundsExtent() * TO_METERS, Player.box_extent);
|
||||
::Encode(PlayerState.GetBoundingBoxTransform(), Player.bounding_box.transform);
|
||||
::Encode(PlayerState.GetBoundingBoxExtent() * TO_METERS, Player.bounding_box.extent);
|
||||
::Encode(PlayerState.GetAcceleration() * TO_METERS, Player.acceleration);
|
||||
Player.forward_speed = PlayerState.GetForwardSpeed() * TO_METERS;
|
||||
Player.collision_vehicles = PlayerState.GetCollisionIntensityCars() * TO_METERS;
|
||||
|
@ -205,17 +206,18 @@ void FCarlaEncoder::Visit(const UTrafficSignAgentComponent &Agent)
|
|||
|
||||
void FCarlaEncoder::Visit(const UVehicleAgentComponent &Agent)
|
||||
{
|
||||
auto &Vehicle = Agent.GetVehicle();
|
||||
::Encode(Vehicle.GetVehicleTransform(), Data.transform);
|
||||
::Encode(Agent.GetTransform(), Data.transform);
|
||||
Data.type = CARLA_SERVER_AGENT_VEHICLE;
|
||||
Data.forward_speed = Vehicle.GetVehicleForwardSpeed() * TO_METERS;
|
||||
::Encode(Vehicle.GetVehicleBoundsExtent() * TO_METERS, Data.box_extent);
|
||||
Data.forward_speed = Agent.GetForwardSpeed() * TO_METERS;
|
||||
::Encode(Agent.GetBoundingBoxTransform(), Data.bounding_box.transform);
|
||||
::Encode(Agent.GetBoundingBoxExtent() * TO_METERS, Data.bounding_box.extent);
|
||||
}
|
||||
|
||||
void FCarlaEncoder::Visit(const UWalkerAgentComponent &Agent)
|
||||
{
|
||||
::Encode(Agent.GetComponentTransform(), Data.transform);
|
||||
::Encode(Agent.GetTransform(), Data.transform);
|
||||
Data.type = CARLA_SERVER_AGENT_PEDESTRIAN;
|
||||
Data.forward_speed = Agent.GetForwardSpeed() * TO_METERS;
|
||||
::Encode(Agent.GetBoundingBoxExtent() * TO_METERS, Data.box_extent);
|
||||
::Encode(Agent.GetBoundingBoxTransform(), Data.bounding_box.transform);
|
||||
::Encode(Agent.GetBoundingBoxExtent() * TO_METERS, Data.bounding_box.extent);
|
||||
}
|
||||
|
|
|
@ -42,8 +42,9 @@ void ACarlaVehicleController::Possess(APawn *aPawn)
|
|||
// Get custom player state.
|
||||
CarlaPlayerState = Cast<ACarlaPlayerState>(PlayerState);
|
||||
check(CarlaPlayerState != nullptr);
|
||||
// We can set bounds extent already as it's not going to change.
|
||||
CarlaPlayerState->BoundsExtent = GetPossessedVehicle()->GetVehicleBoundsExtent();
|
||||
// We can set the bounding box already as it's not going to change.
|
||||
CarlaPlayerState->BoundingBoxTransform = GetPossessedVehicle()->GetVehicleBoundingBoxTransform();
|
||||
CarlaPlayerState->BoundingBoxExtent = GetPossessedVehicle()->GetVehicleBoundingBoxExtent();
|
||||
// Set HUD input.
|
||||
CarlaHUD = Cast<ACarlaHUD>(GetHUD());
|
||||
if (CarlaHUD != nullptr) {
|
||||
|
@ -114,9 +115,11 @@ void ACarlaVehicleController::IntersectPlayerWithRoadMap()
|
|||
check(IsPossessingAVehicle());
|
||||
auto Vehicle = GetPossessedVehicle();
|
||||
constexpr float ChecksPerCentimeter = 0.1f;
|
||||
const auto *BoundingBox = Vehicle->GetVehicleBoundingBox();
|
||||
check(BoundingBox != nullptr);
|
||||
auto Result = RoadMap->Intersect(
|
||||
Vehicle->GetVehicleTransform(),
|
||||
Vehicle->GetVehicleBoundsExtent(),
|
||||
BoundingBox->GetComponentTransform(),
|
||||
Vehicle->GetVehicleBoundingBoxExtent(), // Get scaled bounding box extent.
|
||||
ChecksPerCentimeter);
|
||||
|
||||
CarlaPlayerState->OffRoadIntersectionFactor = Result.OffRoad;
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#include "CarlaWheeledVehicle.h"
|
||||
|
||||
#include "Agent/VehicleAgentComponent.h"
|
||||
#include "Vehicle/VehicleControl.h"
|
||||
|
||||
#include "Components/BoxComponent.h"
|
||||
#include "Engine/CollisionProfile.h"
|
||||
|
@ -37,13 +36,6 @@ ACarlaWheeledVehicle::~ACarlaWheeledVehicle() {}
|
|||
// -- Get functions ------------------------------------------------------------
|
||||
// =============================================================================
|
||||
|
||||
FTransform ACarlaWheeledVehicle::GetVehicleTransform() const
|
||||
{
|
||||
FTransform Transform = VehicleBounds->GetComponentTransform();
|
||||
Transform.SetScale3D(GetActorTransform().GetScale3D());
|
||||
return Transform;
|
||||
}
|
||||
|
||||
float ACarlaWheeledVehicle::GetVehicleForwardSpeed() const
|
||||
{
|
||||
return GetVehicleMovementComponent()->GetForwardSpeed();
|
||||
|
@ -59,7 +51,12 @@ int32 ACarlaWheeledVehicle::GetVehicleCurrentGear() const
|
|||
return GetVehicleMovementComponent()->GetCurrentGear();
|
||||
}
|
||||
|
||||
FVector ACarlaWheeledVehicle::GetVehicleBoundsExtent() const
|
||||
FTransform ACarlaWheeledVehicle::GetVehicleBoundingBoxTransform() const
|
||||
{
|
||||
return VehicleBounds->GetRelativeTransform();
|
||||
}
|
||||
|
||||
FVector ACarlaWheeledVehicle::GetVehicleBoundingBoxExtent() const
|
||||
{
|
||||
return VehicleBounds->GetScaledBoxExtent();
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "WheeledVehicle.h"
|
||||
|
||||
#include "Vehicle/CarlaWheeledVehicleState.h"
|
||||
#include "Vehicle/VehicleControl.h"
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
|
||||
|
@ -16,7 +17,6 @@
|
|||
|
||||
class UBoxComponent;
|
||||
class UVehicleAgentComponent;
|
||||
struct FVehicleControl;
|
||||
|
||||
/// Base class for CARLA wheeled vehicles.
|
||||
UCLASS()
|
||||
|
@ -44,7 +44,10 @@ public:
|
|||
/// Transform of the vehicle. Location is shifted so it matches center of the
|
||||
/// vehicle bounds rather than the actor's location.
|
||||
UFUNCTION(Category = "CARLA Wheeled Vehicle", BlueprintCallable)
|
||||
FTransform GetVehicleTransform() const;
|
||||
FTransform GetVehicleTransform() const
|
||||
{
|
||||
return GetActorTransform();
|
||||
}
|
||||
|
||||
/// Forward speed in cm/s. Might be negative if goes backwards.
|
||||
UFUNCTION(Category = "CARLA Wheeled Vehicle", BlueprintCallable)
|
||||
|
@ -58,9 +61,20 @@ public:
|
|||
UFUNCTION(Category = "CARLA Wheeled Vehicle", BlueprintCallable)
|
||||
int32 GetVehicleCurrentGear() const;
|
||||
|
||||
/// Extent of the vehicle's bounds.
|
||||
/// Transform of the vehicle's bounding box relative to the vehicle.
|
||||
UFUNCTION(Category = "CARLA Wheeled Vehicle", BlueprintCallable)
|
||||
FVector GetVehicleBoundsExtent() const;
|
||||
FTransform GetVehicleBoundingBoxTransform() const;
|
||||
|
||||
/// Extent of the vehicle's bounding box.
|
||||
UFUNCTION(Category = "CARLA Wheeled Vehicle", BlueprintCallable)
|
||||
FVector GetVehicleBoundingBoxExtent() const;
|
||||
|
||||
/// Get vehicle's bounding box component.
|
||||
UFUNCTION(Category = "CARLA Wheeled Vehicle", BlueprintCallable)
|
||||
UBoxComponent *GetVehicleBoundingBox() const
|
||||
{
|
||||
return VehicleBounds;
|
||||
}
|
||||
|
||||
/// Get the maximum angle at which the front wheel can steer.
|
||||
UFUNCTION(Category = "CARLA Wheeled Vehicle", BlueprintCallable)
|
||||
|
|
|
@ -40,7 +40,7 @@ static bool IsThereAnObstacleAhead(
|
|||
const FVector &Direction)
|
||||
{
|
||||
const auto ForwardVector = Vehicle.GetVehicleOrientation();
|
||||
const auto VehicleBounds = Vehicle.GetVehicleBoundsExtent();
|
||||
const auto VehicleBounds = Vehicle.GetVehicleBoundingBoxExtent();
|
||||
|
||||
const float Distance = std::max(50.0f, Speed * Speed); // why?
|
||||
|
||||
|
@ -250,7 +250,7 @@ float AWheeledVehicleAIController::GoToNextTargetLocation(FVector &Direction)
|
|||
float AWheeledVehicleAIController::CalcStreeringValue(FVector &direction)
|
||||
{
|
||||
float steering = 0;
|
||||
FVector BoxExtent = Vehicle->GetVehicleBoundsExtent();
|
||||
FVector BoxExtent = Vehicle->GetVehicleBoundingBoxExtent();
|
||||
FVector forward = Vehicle->GetActorForwardVector();
|
||||
|
||||
FVector rightSensorPosition(BoxExtent.X / 2.0f, (BoxExtent.Y / 2.0f) + 100.0f, 0.0f);
|
||||
|
|
|
@ -43,6 +43,11 @@ extern "C" {
|
|||
struct carla_rotation3d rotation;
|
||||
};
|
||||
|
||||
struct carla_bounding_box {
|
||||
struct carla_transform transform;
|
||||
struct carla_vector3d extent;
|
||||
};
|
||||
|
||||
/* ======================================================================== */
|
||||
/* -- agents -------------------------------------------------------------- */
|
||||
/* ======================================================================== */
|
||||
|
@ -66,7 +71,7 @@ extern "C" {
|
|||
uint32_t id;
|
||||
uint32_t type;
|
||||
struct carla_transform transform;
|
||||
struct carla_vector3d box_extent;
|
||||
struct carla_bounding_box bounding_box;
|
||||
float forward_speed;
|
||||
};
|
||||
|
||||
|
@ -159,8 +164,8 @@ extern "C" {
|
|||
struct carla_player_measurements {
|
||||
/** World transform of the player. */
|
||||
struct carla_transform transform;
|
||||
/** Extent of the bounding box of the player. */
|
||||
struct carla_vector3d box_extent;
|
||||
/** Bounding box of the player. */
|
||||
struct carla_bounding_box bounding_box;
|
||||
/** Current acceleration of the player. */
|
||||
struct carla_vector3d acceleration;
|
||||
/** Forward speed in m/s. */
|
||||
|
|
|
@ -54,6 +54,12 @@ namespace server {
|
|||
Set(lhs->mutable_rotation(), rhs.rotation);
|
||||
}
|
||||
|
||||
static void Set(cs::BoundingBox *lhs, const carla_bounding_box &rhs) {
|
||||
DEBUG_ASSERT(lhs != nullptr);
|
||||
Set(lhs->mutable_transform(), rhs.transform);
|
||||
Set(lhs->mutable_extent(), rhs.extent);
|
||||
}
|
||||
|
||||
static void Set(cs::Sensor *lhs, const carla_sensor_definition &rhs) {
|
||||
DEBUG_ASSERT(lhs != nullptr);
|
||||
lhs->set_id(rhs.id);
|
||||
|
@ -79,14 +85,14 @@ namespace server {
|
|||
static void SetVehicle(cs::Vehicle *lhs, const carla_agent &rhs) {
|
||||
DEBUG_ASSERT(lhs != nullptr);
|
||||
Set(lhs->mutable_transform(), rhs.transform);
|
||||
Set(lhs->mutable_box_extent(), rhs.box_extent);
|
||||
Set(lhs->mutable_bounding_box(), rhs.bounding_box);
|
||||
lhs->set_forward_speed(rhs.forward_speed);
|
||||
}
|
||||
|
||||
static void SetPedestrian(cs::Pedestrian *lhs, const carla_agent &rhs) {
|
||||
DEBUG_ASSERT(lhs != nullptr);
|
||||
Set(lhs->mutable_transform(), rhs.transform);
|
||||
Set(lhs->mutable_box_extent(), rhs.box_extent);
|
||||
Set(lhs->mutable_bounding_box(), rhs.bounding_box);
|
||||
lhs->set_forward_speed(rhs.forward_speed);
|
||||
}
|
||||
|
||||
|
@ -156,7 +162,7 @@ namespace server {
|
|||
auto *player = message->mutable_player_measurements();
|
||||
DEBUG_ASSERT(player != nullptr);
|
||||
Set(player->mutable_transform(), values.player_measurements.transform);
|
||||
Set(player->mutable_box_extent(), values.player_measurements.box_extent);
|
||||
Set(player->mutable_bounding_box(), values.player_measurements.bounding_box);
|
||||
Set(player->mutable_acceleration(), values.player_measurements.acceleration);
|
||||
player->set_forward_speed(values.player_measurements.forward_speed);
|
||||
player->set_collision_vehicles(values.player_measurements.collision_vehicles);
|
||||
|
|
|
@ -106,7 +106,7 @@ TEST(CarlaServerAPI, SimBlocking) {
|
|||
agents_data[i].id = i;
|
||||
agents_data[i].type = CARLA_SERVER_AGENT_VEHICLE;
|
||||
agents_data[i].transform = start_locations[0u];
|
||||
agents_data[i].box_extent = {100.0f, 100.0f, 100.0f};
|
||||
agents_data[i].bounding_box = {start_locations[0u], {100.0f, 100.0f, 100.0f}};
|
||||
agents_data[i].forward_speed = 50.0f;
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,11 @@ message Transform {
|
|||
Rotation3D rotation = 3;
|
||||
}
|
||||
|
||||
message BoundingBox {
|
||||
Transform transform = 1;
|
||||
Vector3D extent = 2;
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// -- Sensors ------------------------------------------------------------------
|
||||
// =============================================================================
|
||||
|
@ -54,13 +59,13 @@ message Sensor {
|
|||
|
||||
message Vehicle {
|
||||
Transform transform = 1;
|
||||
Vector3D box_extent = 2;
|
||||
BoundingBox bounding_box = 4;
|
||||
float forward_speed = 3;
|
||||
}
|
||||
|
||||
message Pedestrian {
|
||||
Transform transform = 1;
|
||||
Vector3D box_extent = 2;
|
||||
BoundingBox bounding_box = 4;
|
||||
float forward_speed = 3;
|
||||
}
|
||||
|
||||
|
@ -126,7 +131,7 @@ message Measurements {
|
|||
message PlayerMeasurements {
|
||||
Transform transform = 1;
|
||||
|
||||
Vector3D box_extent = 11;
|
||||
BoundingBox bounding_box = 12;
|
||||
|
||||
Vector3D acceleration = 3;
|
||||
float forward_speed = 4;
|
||||
|
|
Loading…
Reference in New Issue