Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Simulateur/config.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# just a file that lets us define some constants that are used in multiple files the simulation
from torch.cuda import is_available

n_map = 2
n_map = 4
n_simulations = 8
n_vehicles = 1
n_stupid_vehicles = 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,21 @@ def reset(self, i=None):
else:
self.next_checkpoint = np.random.randint(0, len(self.checkpoints) - 1)

def create_reverse_track(original_checkpoints):
"""
Crée une liste de checkpoints inversée :
1. Inverse l'ordre de la liste.
2. Ajoute PI (180°) à l'angle theta pour que la voiture regarde dans l'autre sens.
"""
reversed_list = []
# On parcourt la liste originale à l'envers
for cp in reversed(original_checkpoints):
# On crée un nouveau checkpoint avec l'angle opposé
new_theta = (cp.theta + np.pi) % (2 * np.pi)
reversed_list.append(Checkpoint(new_theta, cp.x0, cp.y0))
return reversed_list

checkpoints = [
[ # piste0.wbt
piste_0 = [ # piste0.wbt
Checkpoint(0, -0.314494, -2.47211),
Checkpoint(0, 1.11162, -2.56708),
Checkpoint(0.8, 2.54552, -2.27446),
Expand Down Expand Up @@ -85,8 +97,9 @@ def reset(self, i=None):
Checkpoint(-0.8, -4.0021, -2.35518),
Checkpoint(-0.3, -2.89371, -2.49154),
Checkpoint(0, -2.01029, -2.51669),
],
[ # piste1.wbt
]

piste_1 =[ # piste1.wbt
Checkpoint(1.57, 5.52, -2.25),
Checkpoint(1.57, 5.52, -1.25),
Checkpoint(1.57, 5.52, -0.25),
Expand Down Expand Up @@ -144,9 +157,11 @@ def reset(self, i=None):
Checkpoint(1.05, 5.43, -5.00),
Checkpoint(1.57, 5.52, -3.25),
Checkpoint(1.57, 5.52, -4.25),

],
[ # piste2.wbt

]
]

checkpoints = [
piste_0,
piste_1,
create_reverse_track(piste_0),
create_reverse_track(piste_1),
]
73 changes: 73 additions & 0 deletions src/Simulateur/inverser_couleurs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import os
import re

# Fichiers à modifier
FILES_TO_MODIFY = [
"src/Simulateur/worlds/piste2.wbt",
"src/Simulateur/worlds/piste3.wbt"
]


def swap_colors_precise(file_path):
if not os.path.exists(file_path):
print(f"Erreur : Fichier manquant -> {file_path}")
return

print(f"Traitement de : {file_path}...")

with open(file_path, 'r') as f:
content = f.read()

# Liste des champs de couleur à modifier
# (baseColor pour PBR, diffuse/emissive/specular pour Material)
fields = r"(baseColor|diffuseColor|emissiveColor|specularColor|recognitionColors)"

# --- DÉFINITION DES VALEURS EXACTES À CIBLER ---

# GROUPE 1 : MATÉRIAUX (Virages)
# Rouge Matériau (0.9 0 0)
regex_mat_red = rf"({fields}\s+(?:\[\s+)?)0\.9\s+0(\.0+)?\s+0(\.0+)?(?!\.)"
# Vert Matériau (0 0.6 0)
regex_mat_green = rf"({fields}\s+(?:\[\s+)?)0(\.0+)?\s+0?\.6[0-9]*\s+0(\.0+)?(?!\.)"

# GROUPE 2 : PBR (Lignes droites)
# Rouge PBR (1 0 0)
regex_pbr_red = rf"({fields}\s+(?:\[\s+)?)1(\.0+)?\s+0(\.0+)?\s+0(\.0+)?(?!\.)"
# Vert PBR (0 1 0) - Attention à ne pas confondre avec 0 0.6 0
regex_pbr_green = rf"({fields}\s+(?:\[\s+)?)0(\.0+)?\s+1(\.0+)?\s+0(\.0+)?(?!\.)"

# --- ÉTAPE 1 : ROUGE -> PLACEHOLDER ---
# On remplace les Rouges par des valeurs temporaires impossibles (99x)

# 0.9 0 0 -> 991 991 991
content = re.sub(regex_mat_red, r"\1 991 991 991", content)
# 1 0 0 -> 992 992 992
content = re.sub(regex_pbr_red, r"\1 992 992 992", content)

# --- ÉTAPE 2 : VERT -> ROUGE ---
# On remplace les Verts par les valeurs Rouges correspondantes

# 0 0.6 0 -> 0.9 0 0
content = re.sub(regex_mat_green, r"\1 0.9 0 0", content)
# 0 1 0 -> 1 0 0
content = re.sub(regex_pbr_green, r"\1 1 0 0", content)

# --- ÉTAPE 3 : PLACEHOLDER -> VERT ---
# On remplace les placeholders (anciens rouges) par du Vert

# Ancien Rouge Matériau (991) -> Vert Matériau (0 0.6 0)
content = content.replace("991 991 991", "0 0.6 0")
# Ancien Rouge PBR (992) -> Vert PBR (0 1 0)
content = content.replace("992 992 992", "0 1 0")

with open(file_path, 'w') as f:
f.write(content)

print(f" -> Succès ! Couleurs inversées (Matériaux 0.9/0.6 et PBR 1/1 gérés).")


if __name__ == "__main__":
print("--- DÉBUT DE L'INVERSION PRÉCISE ---")
for file_wbt in FILES_TO_MODIFY:
swap_colors_precise(file_wbt)
print("--- FIN ---")
Loading