Skip to content

Commit

Permalink
allowing configuration of jupedsim models
Browse files Browse the repository at this point in the history
  • Loading branch information
behrisch committed Feb 8, 2024
1 parent 159a017 commit 688b415
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
23 changes: 20 additions & 3 deletions src/microsim/transportables/MSPModel_JuPedSim.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ MSPModel_JuPedSim::~MSPModel_JuPedSim() {

JPS_Simulation_Free(myJPSSimulation);
JPS_OperationalModel_Free(myJPSModel);
JPS_CollisionFreeSpeedModelBuilder_Free(myJPSModelBuilder);
JPS_Geometry_Free(myJPSGeometry);
JPS_GeometryBuilder_Free(myJPSGeometryBuilder);

Expand Down Expand Up @@ -840,8 +839,26 @@ MSPModel_JuPedSim::initialize() {
} else {
WRITE_MESSAGE("Geometry generation for JuPedSim done.");
}
myJPSModelBuilder = JPS_CollisionFreeSpeedModelBuilder_Create(8.0, 0.1, 5.0, 0.02);
myJPSModel = JPS_CollisionFreeSpeedModelBuilder_Build(myJPSModelBuilder, &message);

std::string model = "CollisionFreeSpeed";
double strengthNeighborRepulsion = 8.;
double rangeNeighborRepulsion = .1;
double strengthGeometryRepulsion = 5.;
double rangeGeometryRepulsion = .02;
for (const MSVehicleType* type : myNetwork->getVehicleControl().getPedestrianTypes()) {
model = type->getParameter().getParameter("jupedsim.model", model);
strengthNeighborRepulsion = type->getParameter().getDouble("jupedsim.strengthNeighborRepulsion", strengthNeighborRepulsion);
rangeNeighborRepulsion = type->getParameter().getDouble("jupedsim.rangeNeighborRepulsion", rangeNeighborRepulsion);
strengthGeometryRepulsion = type->getParameter().getDouble("jupedsim.strengthGeometryRepulsion", strengthGeometryRepulsion);
rangeGeometryRepulsion = type->getParameter().getDouble("jupedsim.rangeGeometryRepulsion", rangeGeometryRepulsion);
}
if (model == "CollisionFreeSpeed") {
JPS_CollisionFreeSpeedModelBuilder modelBuilder = JPS_CollisionFreeSpeedModelBuilder_Create(strengthNeighborRepulsion, rangeNeighborRepulsion, strengthGeometryRepulsion, rangeGeometryRepulsion);
myJPSModel = JPS_CollisionFreeSpeedModelBuilder_Build(modelBuilder, &message);
JPS_CollisionFreeSpeedModelBuilder_Free(modelBuilder);
} else {
throw ProcessError(TLF("Unknown JuPedSim model: %", model));
}
if (myJPSModel == nullptr) {
const std::string error = TLF("Error creating the pedestrian model: %", JPS_ErrorMessage_GetMessage(message));
JPS_ErrorMessage_Free(message);
Expand Down
1 change: 0 additions & 1 deletion src/microsim/transportables/MSPModel_JuPedSim.h
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,6 @@ class MSPModel_JuPedSim : public MSPModel {

JPS_GeometryBuilder myJPSGeometryBuilder;
JPS_Geometry myJPSGeometry;
JPS_CollisionFreeSpeedModelBuilder myJPSModelBuilder;
JPS_OperationalModel myJPSModel;
JPS_Simulation myJPSSimulation;
struct VanishingAreaData {
Expand Down

0 comments on commit 688b415

Please sign in to comment.