Skip to content

Commit 08e64ce

Browse files
committed
vtd: Enable VTD dynamics models
A major overhaul of the initialization was necessary to support multi-agent control with scenario selection both via GUI and config.
1 parent f364c40 commit 08e64ce

File tree

5 files changed

+225
-83
lines changed

5 files changed

+225
-83
lines changed

plugins/vtd/src/scp_messages.cpp

+20-2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ const char* Pause = "<SimCtrl><Pause/></SimCtrl>";
3434
const char* Restart = "<SimCtrl><Restart/></SimCtrl>";
3535
const char* Apply = "<SimCtrl><Apply/></SimCtrl>";
3636
const char* Config = "<SimCtrl><Config/></SimCtrl>";
37+
const char* QueryInit = "<Query entity=\"taskControl\"><Init source=\"cloe\" /></Query>";
38+
const char* AckInit = "<SimCtrl><InitDone source=\"cloe\" /></SimCtrl>";
39+
const char* InitOperation = "<SimCtrl><Init mode=\"operation\" /></SimCtrl>";
3740

3841
std::string ParamServerConfig::to_scp() const {
3942
std::string tc_config = fmt::format(R"SCP(
@@ -64,12 +67,11 @@ std::string ParamServerConfig::to_scp() const {
6467
)SCP", tc_config);
6568
}
6669

67-
std::string ScenarioStartConfig::to_scp() const {
70+
std::string ScenarioConfig::to_scp() const {
6871
return fmt::format(R"SCP(
6972
<SimCtrl>
7073
<UnloadSensors />
7174
<LoadScenario filename="{}" />
72-
<Start mode="operation" />
7375
</SimCtrl>
7476
)SCP", filename);
7577
}
@@ -153,6 +155,15 @@ std::string SensorConfiguration::to_scp() const {
153155
</Sensor>)SCP", sensor_id, port, player_id);
154156
}
155157

158+
std::string DynamicsPluginConfig::to_scp() const {
159+
return fmt::format(R"SCP(
160+
<DynamicsPlugin name="viTrafficDyn_{0}" enable="true">
161+
<Load lib="libModuleTrafficDyn.so" path=""/>
162+
<Player name="{0}" />
163+
<Debug enable="false" />
164+
</DynamicsPlugin>)SCP", name);
165+
}
166+
156167
std::string LabelVehicle::to_scp() const {
157168
return fmt::format(R"SCP(
158169
<Symbol name="{0}">
@@ -169,6 +180,13 @@ std::string RecordDat::to_scp() const {
169180
</Record>)SCP", datfile_path.parent_path().string(), datfile_path.filename().string());
170181
}
171182

183+
std::string QueryScenario::to_scp() const {
184+
return fmt::format(R"SCP(
185+
<Query entity="traffic">
186+
<GetScenario filename="{0}"/>
187+
</Query>)SCP", scenario);
188+
}
189+
172190
// clang-format on
173191
} // namespace scp
174192
} // namespace vtd

plugins/vtd/src/scp_messages.hpp

+14-1
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,17 @@ extern const char* Pause;
4040
extern const char* Restart;
4141
extern const char* Apply;
4242
extern const char* Config;
43+
extern const char* QueryInit;
44+
extern const char* AckInit;
45+
extern const char* InitOperation;
4346

4447
struct ParamServerConfig : public ScpMessage {
4548
std::string sync_source = "RDB";
4649
bool no_image_generator = false;
4750
std::string to_scp() const override;
4851
};
4952

50-
struct ScenarioStartConfig : public ScpMessage {
53+
struct ScenarioConfig : public ScpMessage {
5154
std::string filename;
5255
std::string to_scp() const override;
5356
};
@@ -66,6 +69,11 @@ struct SensorConfiguration : public ScpMessage {
6669
std::string to_scp() const override;
6770
};
6871

72+
struct DynamicsPluginConfig : public ScpMessage {
73+
std::string name;
74+
std::string to_scp() const override;
75+
};
76+
6977
struct LabelVehicle : public ScpMessage {
7078
std::string tethered_to_player;
7179
std::string text;
@@ -85,5 +93,10 @@ struct RecordDat : public ScpMessage {
8593
std::string to_scp() const override;
8694
};
8795

96+
struct QueryScenario : public ScpMessage {
97+
std::string scenario;
98+
std::string to_scp() const override;
99+
};
100+
88101
} // namespace scp
89102
} // namespace vtd

0 commit comments

Comments
 (0)