Sure, here it is:
I’ve removed some parts to make easier to understand. Basically just kepping the code that shows the flow of execution.
This is the loop function:
def simulation_loop(bng, sim_name):
try:
# Looping da simulação
for i in range(1, length):
# Avança 50 passos da simulação
bng.step(15)
vehicle.sensors.poll()
except KeyboardInterrupt:
print('\033[33m[WARN]\033[0m Interrompendo simulação')
And the main:
def main(report, sim_name):
# Inicializa o BeamNG
if not set_bng_container_up():
return
# Instanciando o BeamNG
beamng = BeamNGpy(host="xxx.xxx.xxx.xxx", port=25252)
beamng.open()
# Configurando o cenário
scenario = Scenario("west_coast_usa", "vehicle logging")
vehicle = Vehicle("ego_vehicle", model="sbr", license="AAA000", part_config='vehicles/sbr/electric_300.pc')
scenario.add_vehicle(
vehicle,
pos=(-769.1, 400.8, 142.8), rot_quat=(0.0173, -0.0019, -0.6354, 0.7720)
)
scenario.make(beamng)
print("\033[34m[INFO]\033[0m Cenário construído")
# Setando determinismo e iniciando cenário
beamng.settings.set_deterministic(60)
beamng.scenario.load(scenario)
beamng.scenario.start()
print("\033[34m[INFO]\033[0m Cenário iniciado")
# Pausa a simulação, para ser controlada pelos steps
beamng.pause()
# Instanciando APIs
trafficApi = TrafficApi(beamng)
# Instanciando e anexando sensor do veículo
electrics = Electrics()
vehicle.attach_sensor('electrics', electrics)
powertrain = PowertrainSensor('powertrain', beamng, vehicle, is_send_immediately=True)
# Configurando a câmera
camera = Camera(
"camera1",
beamng,
vehicle,
requested_update_time=0.01,
pos=(-0.3, 1, 2),
dir=(0, -1, 0),
field_of_view_y=70,
near_far_planes=(0.1, 1000),
resolution=(1024, 1024)
)
# Inserindo tráfego
trafficApi.spawn(
max_amount=2,
police_ratio=0,
extra_amount=2,
parked_amount=10
)
# Looping da simulação
simulation_loop(beamng, nome_sim)
vehicle.ai.set_mode("disabled")
# Fecha a conexão com o BeamNg
beamng.disconnect()