carla
carla copied to clipboard
Some bounding box extents are 0 in Y axis
Carla version number: 0.9.10.1-112-g993f440b Commit: 993f440bb804f22ec4e94653e1dd97fb0ce6babc Platform/OS: Ubuntu 18.04.4 LTS
I have observed that some obstacles (mostly 2 wheelers) have an extent in the Y dimension of 0. I noticed this in my Carla/Apollo integration when the bounding boxes in the visualizer appeared distant and only in 2D. I modified the spawn_npc.py script (provided below) to print out the bounding boxes of any actors that reported a value of 0 in any of the axes. In addition, with the release of 0.9.10 I saw that bounding boxes can be obtained globally from the world object. I also checked whether there were any bounding boxes from the get_level_bbs method of world that also have a 0 extent value in any of the directions and there are none! Below is the output of the modified spawn_npc.py script for 1 tick. I have called out in bold the 0 extent values and if you see the relative location for those bounding boxes they appear to be greatly off in the y axis. In addition, out of all of the printed global bounding boxes (filtered for vehicles - not sure why there are more than 10 when I requested 10 vehicles), I am able to match the actor to the bounding box with proper extents since the location of those bounding boxes are in global coordinates. Out of 10 harley davidsons requested 3/10 were defective. This proportion changes as I vary the number of requested vehicles. I know this commit is about a month behind the head, but I was hoping if someone could quickly run the spawn_npc.py script I've provided and comment on whether they observe a similar issue with the bounding box extents. The proportions at the end of the tick output reflect the number of defective bounding boxes detected with each method.
###### Tick 4 ##### Actor ID(155): Location(x=163.864212, y=-193.899994, z=0.182794) BoundingBox(Location(x=-0.008867, y=194.266083, z=0.659914), Extent(x=1.177870, y=0.000000, z=0.638285), Rotation(pitch=0.000000, yaw=0.000000, roll=0.000000))) Actor ID(151): Location(x=-145.519318, y=21.290268, z=0.182794) BoundingBox(Location(x=-0.008867, y=145.874252, z=0.659914), Extent(x=1.177870, y=0.000000, z=0.638285), Rotation(pitch=0.000000, yaw=0.000000, roll=0.000000))) Actor ID(149): Location(x=150.919495, y=-162.625595, z=4.425494) BoundingBox(Location(x=-0.008857, y=148.434616, z=0.659914), Extent(x=1.177870, y=0.000000, z=0.638285), Rotation(pitch=0.000000, yaw=0.000000, roll=0.000000))) BoundingBox(Location(x=-112.199997, y=-95.554062, z=0.819803), Extent(x=2.513388, y=1.075773, z=0.817764), Rotation(pitch=0.000000, yaw=-90.000114, roll=0.000000)) BoundingBox(Location(x=-118.697632, y=-95.184227, z=0.965306), Extent(x=1.993842, y=0.925424, z=0.808555), Rotation(pitch=1.186370, yaw=-89.999992, roll=0.000000)) BoundingBox(Location(x=-121.698212, y=-95.293007, z=0.975657), Extent(x=2.678740, y=1.016602, z=0.707373), Rotation(pitch=0.593338, yaw=-90.000092, roll=0.000000)) BoundingBox(Location(x=-104.099998, y=-94.498207, z=0.447562), Extent(x=1.902900, y=0.985138, z=0.737515), Rotation(pitch=1.274575, yaw=-90.000053, roll=0.000000)) BoundingBox(Location(x=-194.599777, y=104.801025, z=0.753248), Extent(x=1.933110, y=0.952598, z=0.938968), Rotation(pitch=0.000000, yaw=0.000161, roll=0.000000)) BoundingBox(Location(x=-194.609406, y=101.900002, z=0.833576), Extent(x=2.238886, y=1.034658, z=1.018896), Rotation(pitch=0.000000, yaw=0.000155, roll=0.000000)) BoundingBox(Location(x=-188.957382, y=105.000153, z=0.740486), Extent(x=2.302255, y=0.965797, z=0.927423), Rotation(pitch=0.000000, yaw=-0.000092, roll=0.000000)) BoundingBox(Location(x=-188.886032, y=101.900002, z=0.550788), Extent(x=1.902900, y=0.985138, z=0.737515), Rotation(pitch=0.000000, yaw=0.000155, roll=0.000000)) BoundingBox(Location(x=-19.074694, y=154.678558, z=0.950356), Extent(x=2.305503, y=1.120857, z=0.833638), Rotation(pitch=0.000000, yaw=90.000114, roll=0.000000)) BoundingBox(Location(x=-24.814787, y=155.477249, z=0.789589), Extent(x=1.902900, y=0.985138, z=0.737515), Rotation(pitch=0.000000, yaw=90.000114, roll=0.000000)) BoundingBox(Location(x=73.789474, y=154.503555, z=1.257309), Extent(x=1.933110, y=0.952598, z=0.938968), Rotation(pitch=0.000000, yaw=-90.000114, roll=0.000000)) BoundingBox(Location(x=31.801071, y=113.743866, z=1.077602), Extent(x=1.902900, y=0.985138, z=0.737515), Rotation(pitch=0.000000, yaw=90.000114, roll=0.000000)) BoundingBox(Location(x=149.546371, y=149.862900, z=2.071619), Extent(x=2.096415, y=0.908093, z=0.736916), Rotation(pitch=0.000000, yaw=90.000160, roll=-2.444794)) BoundingBox(Location(x=130.541885, y=79.543892, z=1.270044), Extent(x=2.302255, y=0.965797, z=0.927423), Rotation(pitch=0.000000, yaw=-90.000114, roll=0.000000)) BoundingBox(Location(x=188.755371, y=87.799812, z=1.325878), Extent(x=2.302255, y=0.965797, z=0.927423), Rotation(pitch=0.000000, yaw=-90.000114, roll=0.000000)) BoundingBox(Location(x=188.770676, y=80.130074, z=1.118880), Extent(x=2.513388, y=1.075773, z=0.817764), Rotation(pitch=0.000000, yaw=-90.000114, roll=0.000000)) BoundingBox(Location(x=89.850563, y=-222.489227, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=30.000006, roll=0.000000)) BoundingBox(Location(x=89.805458, y=-222.514954, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=30.000006, roll=0.000000)) BoundingBox(Location(x=84.465660, y=-221.834503, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=144.999985, roll=0.000000)) BoundingBox(Location(x=84.508026, y=-221.864532, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=144.999985, roll=0.000000)) BoundingBox(Location(x=79.858749, y=-221.939240, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=44.999939, roll=0.000000)) BoundingBox(Location(x=79.821823, y=-221.975739, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=44.999939, roll=0.000000)) BoundingBox(Location(x=158.934143, y=-222.489227, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=30.000006, roll=0.000000)) BoundingBox(Location(x=158.889038, y=-222.514954, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=30.000006, roll=0.000000)) BoundingBox(Location(x=153.549240, y=-221.834503, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=144.999985, roll=0.000000)) BoundingBox(Location(x=153.591614, y=-221.864532, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=144.999985, roll=0.000000)) BoundingBox(Location(x=148.942337, y=-221.939240, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=44.999939, roll=0.000000)) BoundingBox(Location(x=148.905411, y=-221.975739, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=44.999939, roll=0.000000)) BoundingBox(Location(x=-162.268234, y=-3.965599, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=-20.000027, roll=0.000000)) BoundingBox(Location(x=-162.316925, y=-3.947565, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=-20.000027, roll=0.000000)) BoundingBox(Location(x=-162.596848, y=0.193104, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=24.999521, roll=0.000000)) BoundingBox(Location(x=-162.644043, y=0.171425, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=24.999521, roll=0.000000)) BoundingBox(Location(x=-188.866211, y=-3.732635, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=-0.000458, roll=0.000000)) BoundingBox(Location(x=-188.918121, y=-3.732342, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=-0.000458, roll=0.000000)) BoundingBox(Location(x=-197.405548, y=-0.344727, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=-0.000458, roll=0.000000)) BoundingBox(Location(x=-197.457458, y=-0.344434, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=-0.000458, roll=0.000000)) BoundingBox(Location(x=-161.291168, y=101.701385, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=29.999577, roll=0.000000)) BoundingBox(Location(x=-161.336273, y=101.675682, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=29.999577, roll=0.000000)) BoundingBox(Location(x=-163.389923, y=104.786346, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=-30.000498, roll=0.000000)) BoundingBox(Location(x=-163.434738, y=104.812569, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=-30.000498, roll=0.000000)) BoundingBox(Location(x=-182.254196, y=104.740303, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=-130.000534, roll=0.000000)) BoundingBox(Location(x=-182.220596, y=104.779892, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=-130.000534, roll=0.000000)) BoundingBox(Location(x=-183.083817, y=100.749786, z=0.786582), Extent(x=2.487122, y=1.019201, z=0.777148), Rotation(pitch=0.000000, yaw=144.999374, roll=0.000000)) BoundingBox(Location(x=-183.041458, y=100.719765, z=0.950204), Extent(x=2.267992, y=0.926515, z=0.609083), Rotation(pitch=0.000000, yaw=144.999374, roll=0.000000)) BoundingBox(Location(x=-114.777977, y=35.856174, z=0.985109), Extent(x=1.177870, y=0.381839, z=0.803412), Rotation(pitch=0.000000, yaw=134.676727, roll=0.000000)) BoundingBox(Location(x=-30.678680, y=134.665924, z=0.985109), Extent(x=1.177870, y=0.381839, z=0.803412), Rotation(pitch=0.000000, yaw=-1.296814, roll=0.000000)) BoundingBox(Location(x=10.141054, y=-146.573608, z=0.985109), Extent(x=1.177870, y=0.381839, z=0.803412), Rotation(pitch=0.000000, yaw=-88.586418, roll=0.000000)) BoundingBox(Location(x=150.917404, y=-162.634506, z=5.227808), Extent(x=1.177870, y=0.381839, z=0.803412), Rotation(pitch=0.000000, yaw=90.996483, roll=0.000000)) BoundingBox(Location(x=10.181254, y=207.507919, z=0.985109), Extent(x=1.177870, y=0.381839, z=0.803412), Rotation(pitch=0.000000, yaw=-0.142975, roll=0.000000)) BoundingBox(Location(x=-145.517090, y=21.299137, z=0.985109), Extent(x=1.177870, y=0.381839, z=0.803412), Rotation(pitch=0.000000, yaw=-89.970146, roll=0.000000)) BoundingBox(Location(x=-6.673333, y=-204.676331, z=0.985109), Extent(x=1.177870, y=0.381839, z=0.803412), Rotation(pitch=0.000000, yaw=-178.560471, roll=0.000000)) BoundingBox(Location(x=-149.065872, y=107.696724, z=0.985109), Extent(x=1.177870, y=0.381839, z=0.803412), Rotation(pitch=0.000000, yaw=89.622032, roll=0.000000)) BoundingBox(Location(x=-9.264062, y=155.699966, z=0.985046), Extent(x=1.177870, y=0.381839, z=0.803412), Rotation(pitch=0.000000, yaw=89.637466, roll=0.000000)) BoundingBox(Location(x=163.855347, y=-193.897766, z=0.985109), Extent(x=1.177870, y=0.381839, z=0.803412), Rotation(pitch=0.000000, yaw=0.000000, roll=0.000000)) get_actor: 3/10 get_level_bbs: 0/54
spawn_npc.py
#!/usr/bin/env python
import glob
import os
import sys
import time
carla_egg_path = "/space/repos/CARLA_0.9.10/PythonAPI/carla/dist/carla-0.9.10-py3.7-linux-x86_64.egg"
sys.path.append(carla_egg_path)
import carla
from carla import VehicleLightState as vls
import argparse
import logging
import random
def main():
argparser = argparse.ArgumentParser(
description=__doc__)
argparser.add_argument(
'--host',
metavar='H',
default='127.0.0.1',
help='IP of the host server (default: 127.0.0.1)')
argparser.add_argument(
'-p', '--port',
metavar='P',
default=2000,
type=int,
help='TCP port to listen to (default: 2000)')
argparser.add_argument(
'-n', '--number-of-vehicles',
metavar='N',
default=10,
type=int,
help='number of vehicles (default: 10)')
argparser.add_argument(
'-w', '--number-of-walkers',
metavar='W',
default=50,
type=int,
help='number of walkers (default: 50)')
argparser.add_argument(
'--safe',
action='store_true',
help='avoid spawning vehicles prone to accidents')
argparser.add_argument(
'--filterv',
metavar='PATTERN',
default='vehicle.*',
help='vehicles filter (default: "vehicle.*")')
argparser.add_argument(
'--filterw',
metavar='PATTERN',
default='walker.pedestrian.*',
help='pedestrians filter (default: "walker.pedestrian.*")')
argparser.add_argument(
'--tm-port',
metavar='P',
default=8000,
type=int,
help='port to communicate with TM (default: 8000)')
argparser.add_argument(
'--sync',
action='store_true',
help='Synchronous mode execution')
argparser.add_argument(
'--hybrid',
action='store_true',
help='Enanble')
argparser.add_argument(
'--car-lights-on',
action='store_true',
default=False,
help='Enanble car lights')
args = argparser.parse_args()
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
vehicles_list = []
walkers_list = []
all_id = []
client = carla.Client(args.host, args.port)
client.set_timeout(10.0)
synchronous_master = False
try:
world = client.get_world()
traffic_manager = client.get_trafficmanager(args.tm_port)
traffic_manager.set_global_distance_to_leading_vehicle(2.0)
if args.hybrid:
traffic_manager.set_hybrid_physics_mode(True)
if args.sync:
settings = world.get_settings()
traffic_manager.set_synchronous_mode(True)
if not settings.synchronous_mode:
synchronous_master = True
settings.synchronous_mode = True
settings.fixed_delta_seconds = 0.05
world.apply_settings(settings)
else:
synchronous_master = False
blueprints = world.get_blueprint_library().filter(args.filterv)
blueprintsWalkers = world.get_blueprint_library().filter(args.filterw)
logging.info("Walker blueprints:[%s]" % blueprintsWalkers)
# ditch the kids
blueprintsWalkers = [x for x in blueprintsWalkers if not x.id.endswith('0008')]
blueprintsWalkers = [x for x in blueprintsWalkers if not x.id.endswith('0009')]
blueprintsWalkers = [x for x in blueprintsWalkers if not x.id.endswith('0010')]
blueprintsWalkers = [x for x in blueprintsWalkers if not x.id.endswith('0011')]
blueprintsWalkers = [x for x in blueprintsWalkers if not x.id.endswith('0012')]
blueprintsWalkers = [x for x in blueprintsWalkers if not x.id.endswith('0013')]
blueprintsWalkers = [x for x in blueprintsWalkers if not x.id.endswith('0014')]
if args.safe:
blueprints = [x for x in blueprints if int(x.get_attribute('number_of_wheels')) == 4]
blueprints = [x for x in blueprints if not x.id.endswith('isetta')]
blueprints = [x for x in blueprints if not x.id.endswith('carlacola')]
blueprints = [x for x in blueprints if not x.id.endswith('cybertruck')]
blueprints = [x for x in blueprints if not x.id.endswith('t2')]
spawn_points = world.get_map().get_spawn_points()
number_of_spawn_points = len(spawn_points)
if args.number_of_vehicles < number_of_spawn_points:
random.shuffle(spawn_points)
elif args.number_of_vehicles > number_of_spawn_points:
msg = 'requested %d vehicles, but could only find %d spawn points'
logging.warning(msg, args.number_of_vehicles, number_of_spawn_points)
args.number_of_vehicles = number_of_spawn_points
# @todo cannot import these directly.
SpawnActor = carla.command.SpawnActor
SetAutopilot = carla.command.SetAutopilot
# SetVehicleLightState = carla.command.SetVehicleLightState
FutureActor = carla.command.FutureActor
# --------------
# Spawn vehicles
# --------------
batch = []
for n, transform in enumerate(spawn_points):
if n >= args.number_of_vehicles:
break
blueprint = random.choice(blueprints)
if blueprint.has_attribute('color'):
color = random.choice(blueprint.get_attribute('color').recommended_values)
blueprint.set_attribute('color', color)
if blueprint.has_attribute('driver_id'):
driver_id = random.choice(blueprint.get_attribute('driver_id').recommended_values)
blueprint.set_attribute('driver_id', driver_id)
blueprint.set_attribute('role_name', 'autopilot')
# prepare the light state of the cars to spawn
light_state = vls.NONE
if args.car_lights_on:
light_state = vls.Position | vls.LowBeam | vls.LowBeam
# spawn the cars and set their autopilot and light state all together
# batch.append(SpawnActor(blueprint, transform)
# .then(SetAutopilot(FutureActor, True, traffic_manager.get_port()))
# .then(SetVehicleLightState(FutureActor, light_state)))
batch.append(SpawnActor(blueprint, transform)
.then(SetAutopilot(FutureActor, True, traffic_manager.get_port())))
for response in client.apply_batch_sync(batch, synchronous_master):
if response.error:
logging.error(response.error)
else:
vehicles_list.append(response.actor_id)
# -------------
# Spawn Walkers
# -------------
# some settings
percentagePedestriansRunning = 0.0 # how many pedestrians will run
percentagePedestriansCrossing = 0.0 # how many pedestrians will walk through the road
# 1. take all the random locations to spawn
spawn_points = []
for i in range(args.number_of_walkers):
spawn_point = carla.Transform()
loc = world.get_random_location_from_navigation()
if (loc != None):
spawn_point.location = loc
spawn_points.append(spawn_point)
# 2. we spawn the walker object
batch = []
walker_speed = []
for spawn_point in spawn_points:
walker_bp = random.choice(blueprintsWalkers)
# set as not invincible
if walker_bp.has_attribute('is_invincible'):
walker_bp.set_attribute('is_invincible', 'false')
# set the max speed
if walker_bp.has_attribute('speed'):
if (random.random() > percentagePedestriansRunning):
# walking
walker_speed.append(walker_bp.get_attribute('speed').recommended_values[1])
else:
# running
walker_speed.append(walker_bp.get_attribute('speed').recommended_values[2])
else:
print("Walker has no speed")
walker_speed.append(0.0)
batch.append(SpawnActor(walker_bp, spawn_point))
results = client.apply_batch_sync(batch, True)
walker_speed2 = []
for i in range(len(results)):
if results[i].error:
logging.error(results[i].error)
else:
walkers_list.append({"id": results[i].actor_id})
walker_speed2.append(walker_speed[i])
walker_speed = walker_speed2
# 3. we spawn the walker controller
batch = []
walker_controller_bp = world.get_blueprint_library().find('controller.ai.walker')
for i in range(len(walkers_list)):
batch.append(SpawnActor(walker_controller_bp, carla.Transform(), walkers_list[i]["id"]))
results = client.apply_batch_sync(batch, True)
for i in range(len(results)):
if results[i].error:
logging.error(results[i].error)
else:
walkers_list[i]["con"] = results[i].actor_id
# 4. we put altogether the walkers and controllers id to get the objects from their id
for i in range(len(walkers_list)):
all_id.append(walkers_list[i]["con"])
all_id.append(walkers_list[i]["id"])
all_actors = world.get_actors(all_id)
# wait for a tick to ensure client receives the last transform of the walkers we have just created
if not args.sync or not synchronous_master:
world.wait_for_tick()
else:
world.tick()
# 5. initialize each controller and set target to walk to (list is [controler, actor, controller, actor ...])
# set how many pedestrians can cross the road
world.set_pedestrians_cross_factor(percentagePedestriansCrossing)
for i in range(0, len(all_id), 2):
# start walker
all_actors[i].start()
# set walk to random point
all_actors[i].go_to_location(world.get_random_location_from_navigation())
# max speed
all_actors[i].set_max_speed(float(walker_speed[int(i/2)]))
print('spawned %d vehicles and %d walkers, press Ctrl+C to exit.' % (len(vehicles_list), len(walkers_list)))
# example of how to use parameters
traffic_manager.global_percentage_speed_difference(30.0)
## Start of modifications ##
tick_num = 0
while True:
tick_num += 1
print(f'###### Tick {tick_num:>5} #####')
actors = world.get_actors()
global_vehicle_bbs = world.get_level_bbs(carla.CityObjectLabel.Vehicles)
vehicles = 0
bad_bounding_boxes = 0
for actor in actors:
if "traffic" in actor.type_id or "spectator" in actor.type_id:
continue
box = actor.bounding_box
if not box.extent.x or not box.extent.y or not box.extent.z:
print(f"Actor ID({actor.id}): {actor.get_transform().location} {box})")
bad_bounding_boxes += 1
vehicles += 1
bad_global_bounding_boxes = 0
for box in global_vehicle_bbs:
print(box)
if not box.extent.x or not box.extent.y or not box.extent.z:
bad_global_bounding_boxes += 1
total_global_bounding_boxes = len(global_vehicle_bbs)
# Statistics
print(f"get_actor: {bad_bounding_boxes}/{vehicles} get_level_bbs: {bad_global_bounding_boxes}/{total_global_bounding_boxes}\n")
## End of modifications ##
if args.sync and synchronous_master:
world.tick()
else:
world.wait_for_tick()
finally:
if args.sync and synchronous_master:
settings = world.get_settings()
settings.synchronous_mode = False
settings.fixed_delta_seconds = None
world.apply_settings(settings)
print('\ndestroying %d vehicles' % len(vehicles_list))
client.apply_batch([carla.command.DestroyActor(x) for x in vehicles_list])
# stop walker controllers (list is [controller, actor, controller, actor ...])
for i in range(0, len(all_id), 2):
all_actors[i].stop()
print('\ndestroying %d walkers' % len(walkers_list))
client.apply_batch([carla.command.DestroyActor(x) for x in all_id])
time.sleep(0.5)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass
finally:
print('\ndone.')
How I run the spawn_npc.py script.
python3 spawn_npc.py --host [host] -n 10 -w 0 --filterv vehicle.harley-davidson.low_rider 2>&1 | tee output.txt
Commit: bdeafba
I'm observing the same behaviour (though not for the exact script you've provided, I have separately hit the issue). Similar to what you've observed, this only affects some spawned agents of particular classes. The problematic classes I've encountered are:
vehicle.bh.crossbike
vehicle.diamondback.century
vehicle.harley-davidson.low_rider
vehicle.gazelle.omafiets
vehicle.kawasaki.ninja
vehicle.yamaha.yzf
I believe all of these are two-wheelers.
I had the same issue with the last release 0.9.11, also just with 2Wheeled.
@doterop would you be able to have a look at this please?
observed the same issue, i was thinking about assigning a fixed value for that dimension (since all pedestrians have the same extents values) and solve that way. Would you mind sharing any alternative solution you found, if any? Thanks
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This issue is still persistent with 0.9.13 version too. It is only with 2-wheelers. Due to this y = 0 extent, the bounding box could not be plotted when we project the 3D bounding box to 2D pixel wise bounding box.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Saw the same issue in 0.9.13. Any suggested workaround like what @rossivalen mentioned?
I had the same issue with the last release 0.9.13, also just with 2Wheeled.
@bernatx This needs your attention. There are multiple reports of this, e.g. https://github.com/carla-simulator/carla/issues/3801 and they are still perfectly valid in recent Carla versions (tested on 0.9.13 and 0.9.14).
On 0.9.13 all 2-wheel actors have zero y size of the bounding box, on 0.9.14 it is even worse, both x and y are zero. Furthermore the bounding box location if often very much off in the y-axis.
Please assign to a colleague that is still active in the project.
收到了!谢谢!
Hi, We are checking the bug. It seems that the bounding of the bike itself is correct, but when we try to add the bounding of the rider, it is done incorrectly. We are fixing that.
Thanks for warning about that.
Hi, We are checking the bug. It seems that the bounding of the bike itself is correct, but when we try to add the bounding of the rider, it is done incorrectly. We are fixing that.
Thanks for warning about that.
so, which version can be used?
Same for me using version 0.9.14. Does anyone know how to fix this?
Please find a solution to this problem. Does anyone checks if it is still the same on 0.9.15 ?
carla 0.9.15 is fine
Hi,
as of 0.9.15 does anyone still have issues with this?
Marcel
0.9.15 no issues
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2024年5月10日(星期五) 晚上10:05 收件人: @.>; 抄送: "Zhang @.>; @.>; 主题: Re: [carla-simulator/carla] Some bounding box extents are 0 in Y axis (#3670)
Hi,
as of 0.9.15 does anyone still have issues with this?
Marcel
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>