Scenarios¶
We have a few synthetic scenarios. They are generated with parametric potentials. Here, we use the standard Social Force potential for the pedestrian-pedestrian interaction:
ped_ped = socialforce.potentials.PedPedPotential()
Circle¶
The preferred speed needs to be varied. Otherwise the symmetry of the problem creates unrealistic scenarios where the two pedestrians get stuck.
circle = socialforce.scenarios.Circle(ped_ped=ped_ped)
_ = torch.manual_seed(42)
scenarios_1 = circle.generate(1)
_ = torch.manual_seed(42)
scenarios_5 = circle.generate(5)
_ = torch.manual_seed(42)
scenarios_20 = circle.generate(20)
# HIDE CODE
with socialforce.show.track_canvas(ncols=3, figsize=(12, 4)) as (ax1, ax2, ax3):
socialforce.show.states(ax1, scenarios_1[0])
socialforce.show.states(ax2, scenarios_5[-1], zorder=10)
for scene in scenarios_5[:-1]:
socialforce.show.states(ax2, scene, alpha=0.1)
socialforce.show.states(ax3, scenarios_20[-1], zorder=10)
for scene in scenarios_20[:-1]:
socialforce.show.states(ax3, scene, alpha=0.1)

Pedestrian 0 is the one with start and end position on the \(x_1\) axis:
# HIDE CODE
circle.simulator = socialforce.Simulator(ped_ped=circle.ped_ped, delta_t=0.08, oversampling=2)
_ = torch.manual_seed(42)
scenarios_5 = circle.generate(5, steps_per_scenario=105)
with socialforce.show.track_canvas(figsize=(6, 4), tight_layout=False, show=False, dpi=130) as ax:
ax.set_xlim(-5, 5)
video = socialforce.show.state_animation(ax, scenarios_5[-1], delta_t=0.08, show_speed=True).to_html5_video()
IPython.display.HTML(video)
ParallelOvertake¶
parallel = socialforce.scenarios.ParallelOvertake(ped_ped=ped_ped)
_ = torch.manual_seed(42)
scenarios_1 = parallel.generate(1)
_ = torch.manual_seed(42)
scenarios_5 = parallel.generate(5)
_ = torch.manual_seed(42)
scenarios_20 = parallel.generate(20)
# HIDE CODE
with socialforce.show.track_canvas(ncols=3, figsize=(12, 4)) as (ax1, ax2, ax3):
socialforce.show.states(ax1, scenarios_1[0])
socialforce.show.states(ax2, scenarios_5[-1], zorder=10)
for scene in scenarios_5[:-1]:
socialforce.show.states(ax2, scene, alpha=0.1)
socialforce.show.states(ax3, scenarios_20[-1], zorder=10)
for scene in scenarios_20[:-1]:
socialforce.show.states(ax3, scene, alpha=0.1)
