-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5102 from michele-segata/master
Merging Plexe platooning models into official SUMO release
- Loading branch information
Showing
42 changed files
with
4,383 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
/****************************************************************************/ | ||
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo | ||
// Copyright (C) 2001-2019 German Aerospace Center (DLR) and others. | ||
// This program and the accompanying materials | ||
// are made available under the terms of the Eclipse Public License v2.0 | ||
// which accompanies this distribution, and is available at | ||
// http://www.eclipse.org/legal/epl-v20.html | ||
// SPDX-License-Identifier: EPL-2.0 | ||
/****************************************************************************/ | ||
/// @file CC_Const.h | ||
/// @author Michele Segata | ||
/// @date Fri, 11 Apr 2014 | ||
/// @version $Id$ | ||
/// | ||
// File defining constants, structs, and enums for cruise controllers | ||
/****************************************************************************/ | ||
#ifndef CC_CONST_H | ||
#define CC_CONST_H | ||
|
||
#include <string> | ||
#include <sstream> | ||
|
||
namespace Plexe { | ||
|
||
/** | ||
* @brief action that might be requested by the platooning management | ||
*/ | ||
enum PLATOONING_LANE_CHANGE_ACTION { | ||
DRIVER_CHOICE = 0, //the platooning management is not active, so just let the driver choose the lane | ||
STAY_IN_CURRENT_LANE = 3, //the car is part of a platoon, so it has to stay on the dedicated platooning lane | ||
MOVE_TO_FIXED_LANE = 4 //move the car to a specific lane | ||
}; | ||
|
||
/** | ||
* @brief TraCI modes for lane changing | ||
*/ | ||
#define FIX_LC 0b1000000000 | ||
#define DEFAULT_NOTRACI_LC 0b1010101010 | ||
|
||
/** @enum ACTIVE_CONTROLLER | ||
* @brief Determines the currently active controller, i.e., ACC, CACC, or the | ||
* driver. In future we might need to switch off the automatic controller and | ||
* leave the control to the mobility model which reproduces a human driver | ||
*/ | ||
enum ACTIVE_CONTROLLER | ||
{DRIVER = 0, ACC = 1, CACC = 2, FAKED_CACC = 3, PLOEG = 4, CONSENSUS = 5, FLATBED = 6}; | ||
|
||
/** | ||
* @brief struct used as header for generic data passing to this model through | ||
* traci | ||
*/ | ||
struct CCDataHeader { | ||
int type; //type of message. indicates what comes after the header | ||
int size; //size of message. indicates how many bytes comes after the header | ||
}; | ||
|
||
/** | ||
* Struct defining data passed about a vehicle | ||
*/ | ||
struct VEHICLE_DATA { | ||
int index; //position in the platoon (0 = first) | ||
double speed; //vehicle speed | ||
double acceleration; //vehicle acceleration | ||
double positionX; //position of the vehicle in the simulation | ||
double positionY; //position of the vehicle in the simulation | ||
double time; //time at which such information was read from vehicle's sensors | ||
double length; //vehicle length | ||
double u; //controller acceleration | ||
double speedX; //vehicle speed on the X axis | ||
double speedY; //vehicle speed on the Y axis | ||
double angle; //vehicle angle in radians | ||
}; | ||
|
||
#define MAX_N_CARS 8 | ||
|
||
#define CC_ENGINE_MODEL_FOLM 0x00 //first order lag model | ||
#define CC_ENGINE_MODEL_REALISTIC 0x01 //the detailed and realistic engine model | ||
|
||
//parameter names for engine models | ||
#define FOLM_PAR_TAU "tau_s" | ||
#define FOLM_PAR_DT "dt_s" | ||
|
||
#define ENGINE_PAR_VEHICLE "vehicle" | ||
#define ENGINE_PAR_XMLFILE "xmlFile" | ||
#define ENGINE_PAR_DT "dt_s" | ||
|
||
#define CC_PAR_VEHICLE_DATA "ccvd" //data about a vehicle, like position, speed, acceleration, etc | ||
#define CC_PAR_VEHICLE_POSITION "ccvp" //position of the vehicle in the platoon (0 based) | ||
#define CC_PAR_PLATOON_SIZE "ccps" //number of cars in the platoon | ||
|
||
//set of controller-related constants | ||
#define CC_PAR_CACC_XI "ccxi" //xi | ||
#define CC_PAR_CACC_OMEGA_N "ccon" //omega_n | ||
#define CC_PAR_CACC_C1 "ccc1" //C1 | ||
#define CC_PAR_ENGINE_TAU "cctau" //engine time constant | ||
|
||
#define CC_PAR_UMIN "ccumin" //lower saturation for u | ||
#define CC_PAR_UMAX "ccumax" //upper saturation for u | ||
|
||
#define CC_PAR_PLOEG_H "ccph" //time headway of ploeg's CACC | ||
#define CC_PAR_PLOEG_KP "ccpkp" //kp parameter of ploeg's CACC | ||
#define CC_PAR_PLOEG_KD "ccpkd" //kd parameter of ploeg's CACC | ||
|
||
#define CC_PAR_FLATBED_KA "ccfka" //ka parameter of flatbed CACC | ||
#define CC_PAR_FLATBED_KV "ccfkv" //kv parameter of flatbed CACC | ||
#define CC_PAR_FLATBED_KP "ccfkp" //kp parameter of flatbed CACC | ||
#define CC_PAR_FLATBED_H "ccfh" //h parameter of flatbed CACC | ||
#define CC_PAR_FLATBED_D "ccfd" //distance parameter of flatbed CACC | ||
|
||
#define CC_PAR_VEHICLE_ENGINE_MODEL "ccem" //set the engine model for a vehicle | ||
|
||
#define CC_PAR_VEHICLE_MODEL "ccvm" //set the vehicle model, i.e., engine characteristics | ||
#define CC_PAR_VEHICLES_FILE "ccvf" //set the location of the vehicle parameters file | ||
|
||
// set CACC constant spacing | ||
#define PAR_CACC_SPACING "ccsp" | ||
|
||
// get ACC computed acceleration when faked CACC controller is enabled | ||
#define PAR_ACC_ACCELERATION "ccacc" | ||
|
||
// determine whether a vehicle has crashed or not | ||
#define PAR_CRASHED "cccr" | ||
|
||
// set a fixed acceleration to a vehicle controlled by CC/ACC/CACC | ||
#define PAR_FIXED_ACCELERATION "ccfa" | ||
|
||
// get vehicle speed and acceleration, needed for example by the platoon leader (get: vehicle) | ||
#define PAR_SPEED_AND_ACCELERATION "ccsa" | ||
|
||
// set speed and acceleration of the platoon leader | ||
#define PAR_LEADER_SPEED_AND_ACCELERATION "cclsa" | ||
|
||
// set whether CACCs should use real or controller acceleration | ||
#define PAR_USE_CONTROLLER_ACCELERATION "ccca" | ||
|
||
// get lane count for the street the vehicle is currently traveling | ||
#define PAR_LANES_COUNT "cclc" | ||
|
||
// set the cruise control desired speed | ||
#define PAR_CC_DESIRED_SPEED "ccds" | ||
|
||
// set the currently active vehicle controller which can be either the driver, or the ACC or the CACC | ||
#define PAR_ACTIVE_CONTROLLER "ccac" | ||
|
||
// get radar data from the car | ||
#define PAR_RADAR_DATA "ccrd" | ||
|
||
// communicate with the cruise control to give him fake indications. this can be useful when you want | ||
// to advance a vehicle to a certain position, for example, for joining a platoon. clearly the ACC | ||
// must always take into consideration both fake and real data | ||
#define PAR_LEADER_FAKE_DATA "cclfd" | ||
#define PAR_FRONT_FAKE_DATA "ccffd" | ||
|
||
// get the distance that a car has to travel until it reaches the end of its route | ||
#define PAR_DISTANCE_TO_END "ccdte" | ||
|
||
// get the distance from the beginning of the route | ||
#define PAR_DISTANCE_FROM_BEGIN "ccdfb" | ||
|
||
// set speed and acceleration of preceding vehicle | ||
#define PAR_PRECEDING_SPEED_AND_ACCELERATION "ccpsa" | ||
|
||
// set ACC headway time | ||
#define PAR_ACC_HEADWAY_TIME "ccaht" | ||
|
||
// return engine information (for the realistic engine model) | ||
#define PAR_ENGINE_DATA "cced" | ||
|
||
// enabling/disabling auto feeding | ||
#define PAR_USE_AUTO_FEEDING "ccaf" | ||
|
||
// enabling/disabling data prediction | ||
#define PAR_USE_PREDICTION "ccup" | ||
|
||
// add/remove members from own platoon | ||
#define PAR_ADD_MEMBER "ccam" | ||
#define PAR_REMOVE_MEMBER "ccrm" | ||
|
||
// let the leader automatically change lane for the whole platoon if there is a speed advantage | ||
#define PAR_ENABLE_AUTO_LANE_CHANGE "ccalc" | ||
|
||
} | ||
|
||
#endif /* CC_CONST_H */ |
Oops, something went wrong.