Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [sumo-user] Error: Answered with error to command 0xa4: Vehicle 'XXXX' is not known.

Hi Daniel,
 
this is a bit difficult to follow for somebody who is not familiar with 
Flow. It seems Flow just sets traci as "kernel_api" and calls it  for 
several reasons at different locations in the code. Do you catch errors at 
a high level in your script? A normal TraCI script without any exception 
handling would fail when it encounters such error (vehicle is not known). 
Or does Flow itself trigger the request and catch the error?
 
Best regards
Mirko
 
 
 
 
-----Original-Nachricht-----
Betreff: [sumo-user] Error: Answered with error to command 0xa4: Vehicle 
'XXXX' is not known.
Datum: 2024-02-10T01:07:06+0100
Von: "Daniel Aguilar Marsillach via sumo-user" <sumo-user@xxxxxxxxxxx>
An: "sumo-user@xxxxxxxxxxx" <sumo-user@xxxxxxxxxxx>
 
 
 
Hi there, 
 
I am using the Flow toolbox and SUMO for the purposes of reinforcement 
learning driving policies. Previous users have published the same error 
message of a vehicle not being known but I am unsure if we have the same 
root cause. 
 
Context:  
I am navigating an RL vehicle through intersections created with Neteditor. 
 I have set --colision.action to "warn" and --collision.check-junctions to 
"true." I am using Flow created inflows() to randomly inject vehicles from 
on certain road edges that approach the intersection. After a collision 
occurs, the environment resets and this seems to be where the errors are 
published by SUMO but at this point it's not clear to me if there's some 
lag in outputting or printing the error in the terminal.
 
I detect collisions by checking if 
len(self.k.kernel_api.simulation.getSubscriptionResults()[129]) > 0 within 
the env.step() function.
The output here: {116: (), 122: (), 118: (), 112: 15700, 123: 0.1, 113: 0, 
115: 0, 121: 0, 120: (), 119: 0, 129: ('flow_0.1', 'rl_0'), 128: 2} where 
129 indicates vehicles that collided together.
 
This sends the code to env.reset(). I can confirm that the following IDs 
are in the kernel at the time of collision using 
self.k.kernel_api.vehicle.getIDList():
output: ('flow_0.1', 'flow_0.2', 'flow_1.1',  'rl_0')
 
In env.reset(), I remove the vehicles in the kernel using 
self.k.vehicle.remove(veh_id) for every actor ID seen in the above list. 
 
I can confirm self.k.kernel_api.vehicle.getIDList() returns an empty list. 
I also checked the following traci.vehicle internal fields which are empty:
 __ids:  []
__vehicles:  OrderedDict()
__sumo_obs:  {}
__human_ds:  []
__controlled_ids:  []
__controlled_lc_ids:  []
__rl_ids:  []
 
I can confirm that 'flow_0.1' and 'rl_0' are not in the kernel again by 
catching exceptions to self.k.vehicle.get_position(veh_id) as well. Next, I 
reset traci and re-add vehicles in my initial configuration. Now, I confirm 
the vehicles are loaded.
 
I then run self.k.simulation.simulation_step() and confirm that the 
vehicles are introduced into the kernel via 
self.k.kernel_api.vehicle.getIDList() (they are also in the GUI). However, 
it seems that inside this simulation_step() command or before, the 
following is printed out:
 
Error: Answered with error to command 0xa4: Vehicle 'flow_0.1' is not 
known.
Error: Answered with error to command 0xa4: Vehicle 'rl_0' is not known.
Error: Answered with error to command 0xa4: Vehicle 'flow_0.1' is not 
known.
 
This is strange because I can confirm that the 'rl_0' vehicle is in the 
kernel and that 'flow_0.1' is not by using getPosition() or other getter 
functions. It appears that this error message is not problematic because 
the end result of my reset() function is correct, it has the vehicles at 
the designated states, but I am confused as to why this is happening. 
 
Also, if I use a different collision checking function routine that 
"catches" collisions before SUMO does, this never happens. Is this expected 
behavior? I am wondering if there's some SUMO collision behavior that may 
be responsible for this or perhaps I am using something incorrectly. Any 
help would be greatly appreciated! 
 
Best,
 
Daniel
 
 


Nothing in this message is intended to constitute an electronic signature 
unless a specific statement to the contrary is included in this message.

Confidentiality Note: This message is intended only for the person or 
entity to which it is addressed. It may contain confidential and/or 
privileged material. Any review, transmission, dissemination or other use, 
or taking of any action in reliance upon this message by persons or 
entities other than the intended recipient is prohibited and may be 
unlawful. If you received this message in error, please contact the sender 
and delete it from your computer.

Nothing in this message is intended to constitute an electronic signature 
unless a specific statement to the contrary is included in this message.

Confidentiality Note: This message is intended only for the person or 
entity to which it is addressed. It may contain confidential and/or 
privileged material. Any review, transmission, dissemination or other use, 
or taking of any action in reliance upon this message by persons or 
entities other than the intended recipient is prohibited and may be 
unlawful. If you received this message in error, please contact the sender 
and delete it from your computer.


Back to the top