43std::vector<std::string>
44VehicleType::getIDList() {
45 std::vector<std::string> ids;
52VehicleType::getIDCount() {
53 return (
int)getIDList().size();
58VehicleType::getLength(
const std::string& typeID) {
59 return getVType(typeID)->getLength();
64VehicleType::getMaxSpeed(
const std::string& typeID) {
65 return getVType(typeID)->getMaxSpeed();
70VehicleType::getActionStepLength(
const std::string& typeID) {
71 return getVType(typeID)->getActionStepLengthSecs();
76VehicleType::getSpeedFactor(
const std::string& typeID) {
77 return getVType(typeID)->getSpeedFactor().getParameter()[0];
82VehicleType::getSpeedDeviation(
const std::string& typeID) {
83 return getVType(typeID)->getSpeedFactor().getParameter()[1];
88VehicleType::getAccel(
const std::string& typeID) {
89 return getVType(typeID)->getCarFollowModel().getMaxAccel();
94VehicleType::getDecel(
const std::string& typeID) {
95 return getVType(typeID)->getCarFollowModel().getMaxDecel();
100VehicleType::getEmergencyDecel(
const std::string& typeID) {
101 return getVType(typeID)->getCarFollowModel().getEmergencyDecel();
106VehicleType::getApparentDecel(
const std::string& typeID) {
107 return getVType(typeID)->getCarFollowModel().getApparentDecel();
112VehicleType::getImperfection(
const std::string& typeID) {
113 return getVType(typeID)->getCarFollowModel().getImperfection();
118VehicleType::getTau(
const std::string& typeID) {
119 return getVType(typeID)->getCarFollowModel().getHeadwayTime();
124VehicleType::getVehicleClass(
const std::string& typeID) {
125 return toString(getVType(typeID)->getVehicleClass());
130VehicleType::getEmissionClass(
const std::string& typeID) {
136VehicleType::getShapeClass(
const std::string& typeID) {
142VehicleType::getMinGap(
const std::string& typeID) {
143 return getVType(typeID)->getMinGap();
148VehicleType::getWidth(
const std::string& typeID) {
149 return getVType(typeID)->getWidth();
154VehicleType::getHeight(
const std::string& typeID) {
155 return getVType(typeID)->getHeight();
160VehicleType::getColor(
const std::string& typeID) {
166VehicleType::getMinGapLat(
const std::string& typeID) {
167 return getVType(typeID)->getMinGapLat();
172VehicleType::getMaxSpeedLat(
const std::string& typeID) {
173 return getVType(typeID)->getMaxSpeedLat();
178VehicleType::getLateralAlignment(
const std::string& typeID) {
180 return toString(getVType(typeID)->getPreferredLateralAlignment());
182 return toString(getVType(typeID)->getPreferredLateralAlignmentOffset());
188VehicleType::getParameter(
const std::string& typeID,
const std::string& key) {
189 return getVType(typeID)->getParameter().getParameter(key,
"");
195VehicleType::getPersonCapacity(
const std::string& typeID) {
196 return getVType(typeID)->getPersonCapacity();
200VehicleType::getScale(
const std::string& typeID) {
201 return getVType(typeID)->getParameter().scale;
205VehicleType::setLength(
const std::string& typeID,
double length) {
206 getVType(typeID)->setLength(length);
211VehicleType::setMaxSpeed(
const std::string& typeID,
double speed) {
212 getVType(typeID)->setMaxSpeed(speed);
217VehicleType::setActionStepLength(
const std::string& typeID,
double actionStepLength,
bool resetActionOffset) {
223VehicleType::setVehicleClass(
const std::string& typeID,
const std::string& clazz) {
229VehicleType::setSpeedFactor(
const std::string& typeID,
double factor) {
230 getVType(typeID)->setSpeedFactor(factor);
235VehicleType::setSpeedDeviation(
const std::string& typeID,
double deviation) {
236 getVType(typeID)->setSpeedDeviation(deviation);
241VehicleType::setEmissionClass(
const std::string& typeID,
const std::string& clazz) {
247VehicleType::setShapeClass(
const std::string& typeID,
const std::string& shapeClass) {
253VehicleType::setWidth(
const std::string& typeID,
double width) {
254 getVType(typeID)->setWidth(width);
259VehicleType::setHeight(
const std::string& typeID,
double height) {
260 getVType(typeID)->setHeight(height);
265VehicleType::setMinGap(
const std::string& typeID,
double minGap) {
266 getVType(typeID)->setMinGap(minGap);
271VehicleType::setAccel(
const std::string& typeID,
double accel) {
272 getVType(typeID)->setAccel(accel);
277VehicleType::setDecel(
const std::string& typeID,
double decel) {
284 WRITE_WARNING(
"Automatically setting emergencyDecel to " +
toString(decel) +
" for vType '" + typeID +
"' to match decel.");
292VehicleType::setEmergencyDecel(
const std::string& typeID,
double decel) {
295 if (decel < v->getCarFollowModel().getMaxDecel()) {
302VehicleType::setApparentDecel(
const std::string& typeID,
double decel) {
303 getVType(typeID)->setApparentDecel(decel);
308VehicleType::setImperfection(
const std::string& typeID,
double imperfection) {
309 getVType(typeID)->setImperfection(imperfection);
314VehicleType::setTau(
const std::string& typeID,
double tau) {
315 getVType(typeID)->setTau(tau);
320VehicleType::setColor(
const std::string& typeID,
const TraCIColor& c) {
326VehicleType::setMinGapLat(
const std::string& typeID,
double minGapLat) {
327 getVType(typeID)->setMinGapLat(minGapLat);
332VehicleType::setMaxSpeedLat(
const std::string& typeID,
double speed) {
333 getVType(typeID)->setMaxSpeedLat(speed);
338VehicleType::setLateralAlignment(
const std::string& typeID,
const std::string& latAlignment) {
342 getVType(typeID)->setPreferredLateralAlignment(lad, lao);
344 throw TraCIException(
"Unknown value '" + latAlignment +
"' when setting latAlignment for vType '" + typeID +
"';\n must be one of (\"right\", \"center\", \"arbitrary\", \"nice\", \"compact\", \"left\" or a float)");
349VehicleType::setScale(
const std::string& typeID,
double value) {
350 getVType(typeID)->setScale(value);
354VehicleType::copy(
const std::string& origTypeID,
const std::string& newTypeID) {
355 getVType(origTypeID)->duplicateType(newTypeID,
true);
360VehicleType::setParameter(
const std::string& typeID,
const std::string& name,
const std::string& value) {
369VehicleType::getVType(std::string
id) {
372 throw TraCIException(
"Vehicle type '" +
id +
"' is not known");
378std::shared_ptr<VariableWrapper>
379VehicleType::makeWrapper() {
380 return std::make_shared<Helper::SubscriptionWrapper>(handleVariable, mySubscriptionResults, myContextSubscriptionResults);
385VehicleType::handleVariable(
const std::string& objID,
const int variable, VariableWrapper* wrapper,
tcpip::Storage* paramData) {
386 return handleVariableWithID(objID, objID, variable, wrapper, paramData);
391VehicleType::handleVariableWithID(
const std::string& objID,
const std::string& typeID,
const int variable, VariableWrapper* wrapper,
tcpip::Storage* paramData) {
394 return wrapper->wrapStringList(objID, variable, getIDList());
396 return wrapper->wrapInt(objID, variable, getIDCount());
398 return wrapper->wrapDouble(objID, variable, getLength(typeID));
400 return wrapper->wrapDouble(objID, variable, getHeight(typeID));
402 return wrapper->wrapDouble(objID, variable, getMinGap(typeID));
404 return wrapper->wrapDouble(objID, variable, getMaxSpeed(typeID));
406 return wrapper->wrapDouble(objID, variable, getAccel(typeID));
408 return wrapper->wrapDouble(objID, variable, getDecel(typeID));
410 return wrapper->wrapDouble(objID, variable, getEmergencyDecel(typeID));
412 return wrapper->wrapDouble(objID, variable, getApparentDecel(typeID));
414 return wrapper->wrapDouble(objID, variable, getActionStepLength(typeID));
416 return wrapper->wrapDouble(objID, variable, getImperfection(typeID));
418 return wrapper->wrapDouble(objID, variable, getTau(typeID));
420 return wrapper->wrapDouble(objID, variable, getSpeedFactor(typeID));
422 return wrapper->wrapDouble(objID, variable, getSpeedDeviation(typeID));
424 return wrapper->wrapString(objID, variable, getVehicleClass(typeID));
426 return wrapper->wrapString(objID, variable, getEmissionClass(typeID));
428 return wrapper->wrapString(objID, variable, getShapeClass(typeID));
430 return wrapper->wrapDouble(objID, variable, getWidth(typeID));
432 return wrapper->wrapColor(objID, variable, getColor(typeID));
434 return wrapper->wrapDouble(objID, variable, getMinGapLat(typeID));
436 return wrapper->wrapDouble(objID, variable, getMaxSpeedLat(typeID));
438 return wrapper->wrapString(objID, variable, getLateralAlignment(typeID));
440 return wrapper->wrapInt(objID, variable, getPersonCapacity(typeID));
442 return wrapper->wrapDouble(objID, variable, getScale(typeID));
445 return wrapper->wrapString(objID, variable, getParameter(objID, paramData->
readString()));
448 return wrapper->wrapStringPair(objID, variable, getParameterWithKey(objID, paramData->
readString()));
#define WRITE_WARNING(msg)
LatAlignmentDefinition
Possible ways to choose the lateral alignment, i.e., how vehicles align themselves within their lane.
@ GIVEN
The alignment as offset is given.
SUMOVehicleClass getVehicleClassID(const std::string &name)
Returns the class id of the abstract class given by its name.
SUMOVehicleShape getVehicleShapeID(const std::string &name)
Returns the class id of the shape class given by its name.
std::string getVehicleShapeName(SUMOVehicleShape id)
Returns the class name of the shape class given by its id.
@ SUMO_ATTR_EMERGENCYDECEL
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
#define LIBSUMO_SUBSCRIPTION_IMPLEMENTATION(CLASS, DOM)
#define LIBSUMO_GET_PARAMETER_WITH_KEY_IMPLEMENTATION(CLASS)
double getEmergencyDecel() const
Get the vehicle type's maximal phisically possible deceleration [m/s^2].
double getMaxDecel() const
Get the vehicle type's maximal comfortable deceleration [m/s^2].
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
MSVehicleControl & getVehicleControl()
Returns the vehicle control.
MSVehicleType * getVType(const std::string &id=DEFAULT_VTYPE_ID, SumoRNG *rng=nullptr, bool readOnly=false)
Returns the named vehicle type or a sample from the named distribution.
void insertVTypeIDs(std::vector< std::string > &into) const
Inserts ids of all known vehicle types and vehicle type distributions to the given vector.
The car-following model and parameter.
void setEmergencyDecel(double emergencyDecel)
Set a new value for this type's emergency deceleration.
void setDecel(double decel)
Set a new value for this type's deceleration.
const MSCFModel & getCarFollowModel() const
Returns the vehicle type's car following model definition (const version)
const SUMOVTypeParameter & getParameter() const
static std::string getName(const SUMOEmissionClass c)
Checks whether the string describes a known vehicle class.
static SUMOEmissionClass getClassByName(const std::string &eClass, const SUMOVehicleClass vc=SVC_IGNORING)
Checks whether the string describes a known vehicle class.
Structure representing possible vehicle parameter.
SubParams cfParameter
Car-following parameter.
static bool parseLatAlignment(const std::string &val, double &lao, LatAlignmentDefinition &lad)
Parses and validates a given latAlignment value.
static SUMOTime processActionStepLength(double given)
Checks and converts given value for the action step length from seconds to miliseconds assuring it be...
C++ TraCI client API implementation.
static TraCIColor makeTraCIColor(const RGBColor &color)
static RGBColor makeRGBColor(const TraCIColor &color)
virtual std::string readString()
virtual int readUnsignedByte()
TRACI_CONST int VAR_VEHICLECLASS
TRACI_CONST int TRACI_ID_LIST
TRACI_CONST int VAR_LATALIGNMENT
TRACI_CONST int VAR_SCALE
TRACI_CONST int VAR_MINGAP
TRACI_CONST int VAR_SHAPECLASS
std::map< std::string, libsumo::SubscriptionResults > ContextSubscriptionResults
TRACI_CONST int VAR_ACTIONSTEPLENGTH
TRACI_CONST int VAR_SPEED_FACTOR
TRACI_CONST int VAR_COLOR
TRACI_CONST int VAR_WIDTH
TRACI_CONST int VAR_PERSON_CAPACITY
TRACI_CONST int VAR_MAXSPEED
std::map< std::string, libsumo::TraCIResults > SubscriptionResults
{object->{variable->value}}
TRACI_CONST int VAR_LENGTH
TRACI_CONST int VAR_MAXSPEED_LAT
TRACI_CONST int VAR_PARAMETER
TRACI_CONST int VAR_IMPERFECTION
TRACI_CONST int VAR_HEIGHT
TRACI_CONST int VAR_APPARENT_DECEL
TRACI_CONST int VAR_DECEL
TRACI_CONST int VAR_PARAMETER_WITH_KEY
TRACI_CONST int VAR_MINGAP_LAT
TRACI_CONST int VAR_EMERGENCY_DECEL
TRACI_CONST int VAR_EMISSIONCLASS
TRACI_CONST int VAR_ACCEL
TRACI_CONST int VAR_SPEED_DEVIATION