[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [sumo-user] 'Extended retrieval messages' info subscription
|
Hi Giuliana
Thank you for your response and sorry for the delay of my reply
I built a simple test case to illustrate the current problem (example.py)
In the example, these variables are tested and the problem only occurs when including 'VAR_LEADER', 'VAR_SECURE_GAP' or both
vehicle_variables_to_subscribe = [
'VAR_SPEED',
'VAR_WAITING_TIME',
#'VAR_LEADER', # Problems with subscription
#'VAR_SECURE_GAP', # Problems with subscription
]
The response error is the following
"Error: Storage::readChar(): invalid positioncles TOT 1 ACT 1 BUF 0)"
Sincerely,
Marcelo d'Almeida
Hi Marcelo,
I will copy Jakob's answer to someone who had a similar problem a few days ago. Maybe it will help you
J
“The _socket gets removed in either of two cases:
- after calling traci.close()
- after receiving a FatalTraCIError "connection closed by SUMO" which can happen if the input data to sumo is faulty or sumo has crashed
If it happens to be the latter with the latest sumo release (1.7.0), please try to boil down your code to a simple test case and provide the necessary files for reproducing the crash.”
Regards,
Giuliana
From: sumo-user-bounces@xxxxxxxxxxx [mailto:sumo-user-bounces@xxxxxxxxxxx]
On Behalf Of Marcelo Andrade Rodrigues D Almeida
Sent: Samstag, 19. September 2020 21:10
To: Sumo project User discussions
Subject: [sumo-user] 'Extended retrieval messages' info subscription
How can I subscribe to retrieve 'Extended retrieval messages' information (e.g. vehicle leader and secureGap)
Everytime I include these I receive the following error message
#"VAR_LEADER",
#"VAR_SECURE_GAP",
"Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/share/sumo/tools/traci/domain.py", line 208, in subscribe
self._connection._subscribe(self._subscribeID, begin, end, objectID, varIDs)
File "/usr/share/sumo/tools/traci/connection.py", line 231, in _subscribe
result = self._sendCmd(cmdID, (begin, end), objID, format, *args)
File "/usr/share/sumo/tools/traci/connection.py", line 178, in _sendCmd
return self._sendExact()
File "/usr/share/sumo/tools/traci/connection.py", line 83, in _sendExact
self._socket.send(length + self._string)
AttributeError: 'Connection' object has no attribute '_socket'
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
Attachment:
temp.zip
Description: Zip archive
import os
import sys
if 'SUMO_HOME' in os.environ:
tools = os.path.join(os.environ['SUMO_HOME'], 'tools')
sys.path.append(tools)
else:
sys.exit("please declare environment variable 'SUMO_HOME'")
import traci
import traci.constants as tc
from sumolib import checkBinary
from os.path import expanduser
def get_sumo_binary(gui=False):
if gui:
sumo_binary = checkBinary('sumo-gui')
else:
sumo_binary = checkBinary('sumo')
return sumo_binary
class Example:
def __init__(self, net_file, route_file, vehicle_variables_to_subscribe):
self.net_file = net_file
self.route_file = route_file
self.vehicle_variables_to_subscribe = vehicle_variables_to_subscribe
self.current_step_vehicle_subscription_data = None
self.previous_step_vehicle_subscription_data = None
self.current_step_vehicles = []
self.previous_step_vehicles = []
def _update_previous_measurements(self):
self.previous_step_vehicle_subscription_data = self.current_step_vehicle_subscription_data
self.previous_step_vehicles = self.current_step_vehicles
def _update_current_measurements(self):
# get vehicle list
self.current_step_vehicles = traci.vehicle.getIDList()
new_arrived_vehicles = list(set(self.current_step_vehicles) - set(self.previous_step_vehicles))
# update subscriptions
for vehicle in new_arrived_vehicles:
traci.vehicle.subscribe(vehicle, [getattr(tc, var) for var in self.vehicle_variables_to_subscribe])
# vehicle level observations
self.current_step_vehicle_subscription_data = {vehicle: traci.vehicle.getSubscriptionResults(vehicle)
for vehicle in self.current_step_vehicles}
def start_traci(self, gui=False):
traci.start([
get_sumo_binary(gui),
'-n', self.net_file,
'-r', self.route_file
])
def run_simulation(self):
while traci.simulation.getMinExpectedNumber() > 0:
self._update_previous_measurements()
traci.simulationStep()
self._update_current_measurements()
home = expanduser("~")
net_file = home + '/temp/regular-intersection__right_on_red.net.xml'
route_file = home + '/temp/regular-intersection.rou.xml'
vehicle_variables_to_subscribe = [
'VAR_SPEED',
'VAR_WAITING_TIME',
#'VAR_LEADER', # Problems with subscription
#'VAR_SECURE_GAP', # Problems with subscription
]
example = Example(net_file, route_file, vehicle_variables_to_subscribe)
example.start_traci()
example.run_simulation()
traci.close()
vehicle_variables_to_subscribe = [
'VAR_SPEED',
'VAR_WAITING_TIME',
'VAR_LEADER', # Problems with subscription
#'VAR_SECURE_GAP', # Problems with subscription
]
example = Example(net_file, route_file, vehicle_variables_to_subscribe)
example.start_traci()
example.run_simulation()
traci.close()
vehicle_variables_to_subscribe = [
'VAR_SPEED',
'VAR_WAITING_TIME',
#'VAR_LEADER', # Problems with subscription
'VAR_SECURE_GAP', # Problems with subscription
]
example = Example(net_file, route_file, vehicle_variables_to_subscribe)
example.start_traci()
example.run_simulation()
traci.close()