from json import loads
from math import copysign, cos, pi, sin
from matplotlib import pyplot as plt
-from sys import argv
+from sys import argv, exit
sign = lambda x: copysign(1, x)
WHEEL_BASE = 2.450
WIDTH = 1.625
-SCEN_FILE = argv[1]
-TRAJ_FILE = argv[2]
-
PLOT = {
"enable" : True,
"node" : False,
"frame" : False,
"path" : False,
"traj" : True,
+ "slot" : True,
}
COLOR = {
"node": "lightgrey",
"trajectory-frame": "lightblue",
"obstacle": "black",
"log": ("gold", "orange", "blueviolet", "blue", "navy", "black"),
+ "slot": "red"
}
def car_frame(pose):
pass
if __name__ == "__main__":
+ SCEN_FILE = argv[1]
+
s = load_scenario(SCEN_FILE)
try:
+ TRAJ_FILE = argv[2]
t = load_trajectory(TRAJ_FILE) # fixed to trajectories
except:
- pass
+ t = {"elap": 0}
plt.rcParams["font.size"] = 24
plt.rcParams['hatch.linewidth'] = 1.0
################
## 1st subplot
- ax = fig.add_subplot(121)
+ if "edge" in t.keys():
+ ax = fig.add_subplot(121)
+ else:
+ ax = fig.add_subplot(111)
ax.set_aspect("equal")
ax.set_title("Final path")
ax.set_xlabel("x [m]")
except:
print("No trajectory")
- plt.plot(*car_frame(s["init"]), color="red", lw=2)
- plt.plot(*car_frame(s["goal"]), color="red", lw=2)
- plt.plot(*plot_nodes([s["init"]]), color="red", marker="+", ms=12)
- plt.plot(*plot_nodes([s["goal"]]), color="red", marker="+", ms=12)
+ if PLOT["slot"]:
+ try:
+ plt.plot(*plot_nodes(s["slot"]["polygon"]), color=COLOR["slot"])
+ except:
+ print("No slot")
- plt.fill_between(
- [-2.7, 3.25, 3.25, -2.7],
- [1.5, 1.5, 2, 2],
- [26, 26, 26.5, 26.5],
- facecolor="none", hatch="//", edgecolor="black", linewidth=0)
- plt.fill_between(
- [-2.7, -2.7, -0, -0, -2.2, -2.2, 0, 0, -2.7],
- [1.5, 26.5, 26.5, 19.5, 19.5, 13, 13, 1.5, 1.5],
- facecolor="none", hatch="//", edgecolor="black", linewidth=0)
- plt.fill_between(
- [3.25, 3.25, 2.75, 2.75, 3.25],
- [1.5, 26.5, 26.5, 1.5, 1.5],
- facecolor="none", hatch="//", edgecolor="black", linewidth=0)
+ try: # init
+ plt.plot(*car_frame(t["init"]), color="red", lw=2)
+ plt.plot(*plot_nodes([t["init"]]), color="red", marker="+", ms=12)
+ except:
+ plt.plot(*car_frame(s["init"]), color="red", lw=2)
+ plt.plot(*plot_nodes([s["init"]]), color="red", marker="+", ms=12)
+ try: # goal
+ plt.plot(*plot_nodes([t["goal"]]), color="red", marker="+", ms=12)
+ plt.plot(*car_frame(t["goal"]), color="red", lw=2)
+ except:
+ plt.plot(*plot_nodes([s["goal"]]), color="red", marker="+", ms=12)
+ plt.plot(*car_frame(s["goal"]), color="red", lw=2)
+ try: # middle
+ plt.plot(*car_frame(t["midd"]), color="red", lw=2)
+ plt.plot(*plot_nodes([t["midd"]]), color="red", marker="+", ms=12)
+ except:
+ pass
+
+ #plt.fill_between(
+ # [-2.7, 3.25, 3.25, -2.7],
+ # [-0.5, -0.5, 0, 0],
+ # [26, 26, 26.5, 26.5],
+ # facecolor="none", hatch="//", edgecolor="black", linewidth=0)
+ #plt.fill_between(
+ # [-2.7, -2.7, -0, -0, -2.2, -2.2, 0, 0, -2.7],
+ # [-0.5, 26.5, 26.5, 19.5, 19.5, 13, 13, -0.5, -0.5],
+ # facecolor="none", hatch="//", edgecolor="black", linewidth=0)
+ #plt.fill_between(
+ # [3.25, 3.25, 2.75, 2.75, 3.25],
+ # [-0.5, 26.5, 26.5, -0.5, -0.5],
+ # facecolor="none", hatch="//", edgecolor="black", linewidth=0)
#plt.text(1, 0.2, s="1", color="red")
#plt.text(2, 12.2, s="2", color="red")
handles, labels = ax.get_legend_handles_labels()
+ if not "edge" in t.keys():
+ plt.show()
+ plt.close(fig)
+ exit(0)
+
################
## 2nd subplot
except:
print("No trajectory")
+ if PLOT["slot"]:
+ try:
+ plt.plot(*plot_nodes(s["slot"]["polygon"]), color=COLOR["slot"])
+ except:
+ print("No slot")
+
plt.plot(*car_frame(s["init"]), color="red", lw=2)
plt.plot(*car_frame(s["goal"]), color="red", lw=2)
plt.plot(*plot_nodes([s["init"]]), color="red", marker="+", ms=12)
plt.plot(*plot_nodes([s["goal"]]), color="red", marker="+", ms=12)
- plt.fill_between(
- [-2.7, 3.25, 3.25, -2.7],
- [1.5, 1.5, 2, 2],
- [26, 26, 26.5, 26.5],
- facecolor="none", hatch="//", edgecolor="black", linewidth=0)
- plt.fill_between(
- [-2.7, -2.7, -0, -0, -2.2, -2.2, 0, 0, -2.7],
- [1.5, 26.5, 26.5, 19.5, 19.5, 13, 13, 1.5, 1.5],
- facecolor="none", hatch="//", edgecolor="black", linewidth=0)
- plt.fill_between(
- [3.25, 3.25, 2.75, 2.75, 3.25],
- [1.5, 26.5, 26.5, 1.5, 1.5],
- facecolor="none", hatch="//", edgecolor="black", linewidth=0)
+ #plt.fill_between(
+ # [-2.7, 3.25, 3.25, -2.7],
+ # [-0.5, -0.5, 0, 0],
+ # [26, 26, 26.5, 26.5],
+ # facecolor="none", hatch="//", edgecolor="black", linewidth=0)
+ #plt.fill_between(
+ # [-2.7, -2.7, -0, -0, -2.2, -2.2, 0, 0, -2.7],
+ # [-0.5, 26.5, 26.5, 19.5, 19.5, 13, 13, -0.5, -0.5],
+ # facecolor="none", hatch="//", edgecolor="black", linewidth=0)
+ #plt.fill_between(
+ # [3.25, 3.25, 2.75, 2.75, 3.25],
+ # [-0.5, 26.5, 26.5, -0.5, -0.5],
+ # facecolor="none", hatch="//", edgecolor="black", linewidth=0)
handles, labels = ax.get_legend_handles_labels()