# Plexe

The Platooning Extension for Veins.

# Features

## Main Features

• Open: Plexe is Open Source, free to download, use, and modify, making it a valid tool for research
• Realistic network and vehicle dynamics simulation: Plexe is based on Veins, meaning that users can exploit a fully detailed IEEE 802.11p and IEEE 1609.4 DSCR/WAVE network stack for realistic simulation of vehicular networks. Moreover, it extends SUMO by implementing several state-of-the-art cruise control models and realistic engine dynamics
• Extensibility: Plexe is thought for researchers both in the control theory and in the vehicular networking fields. It is well documented and easy to extend, providing examples that show how to use and how to modify it
• Large-scale and mixed scenarios: Being based on Veins, it is easy to generate and analyze large-scale scenarios, as well as mixed traffic. It is indeed possible to investigate platooning systems in the presence of human-driven vehicle, a necessary step toward the deployment of automated car-following systems

## What’s new in Plexe 3.0

• Plexe becomes a lightweight OMNeT library: to improve maintainability, Veins source files have been removed from the Plexe repository. Now Plexe is simply a library that is linked against Veins, which should be pre-installed on your computer. This way, it is much simpler to keep Plexe up-to-date with the newest Veins features. The Plexe repository now only includes Plexe-related files.
• Plexe models available in standard SUMO: as of SUMO 1.2.0, Plexe CACC and engine models are included within the official release. A user thus can simply download SUMO binaries and will be able to use Plexe out of the box. Users that wants to implement their own control system will still be required to download and build SUMO sources.
• Goodbye UnicastProtocol: to enable reliable unicast delivery of 802.11p frames, Plexe now exploits the newly available unicast mechanism implemented within the Veins 802.11p MAC protocol. The UnicastProtocol module that was placed between the 802.11p NIC and the BaseProtocol module has been removed.
• Simplified Position Helpers: in previous versions of Plexe, different scenarios might have required dedicated position helpers (e.g., the JoinPositionHelper for the join maneuver example). Now Plexe has a single position helper that initializes itself automatically by fetching information about platoons from a singleton class (DynamicPositionManager) which, in turn, is populated by the traffic manager. Developers now just need to define their own traffic manager and inform the DynamicPositionManager class about vehicles and platoons being generated. In addition, the new position helper is only initialized through the DynamicPositionManager class. Then each vehicle has its own copy of the position manager, permitting to modify the information therein without affecting the others (e.g., changing the known formation through the setPlatoonFormation() method).
• New sample maneuver: Plexe now implements a new sample maneuver that merges two platoons into a single one.
• Upgraded to latest software versions: Plexe is compatible with Veins 5.1, SUMO 1.8.0, and OMNeT++ 5.6.2.
• New scripts for formatting code and running simulation: to minimize the discrepancies with Veins (thus enabling smoother transitions from Veins to Plexe) the scripts for formatting the code (plexe_format_code) and for running the simulations (plexe_run, automatically generated at build time) have been moved to the bin folder. The scripts can be added to the PATH by using the setenv script inside the root folder. Users can still use the old format-code.sh and run scripts in the root folder, but they are marked as deprecated.
• New automatic vehicle coloring: Vehicles belonging to the same platoon are now visualized in the SUMO GUI using a color that depends on the assigned platoon id. The color is picked from a small list of 8 colors, which can be changed depending on necessity. Vehicles not belonging to a platoon are shown in white. This improves the visualization and helps debugging maneuvers, as the color of the vehicle reflects its state.
• Support for OMNeT++ 6.0-pre11: Building and running instructions refer to OMNeT++ 5.6.2, but tests indicates Plexe 3.0 is compatible with OMNeT++ 6.0 as well.
• Switching between Veins Launchd and Forker: By default, Plexe uses the TraCIScenarioManagerForker module of Veins to automatically start SUMO instead of using the veins_launchd utility. Users that prefer veins_launchd can now switch to it by simply setting *.useLaunchd = true in their omnetpp.ini file.

## What’s new in Plexe 2.1

• New branch structure: the git master branch is the new development branch, while releases are still marked using branches.
• Upgraded to latest software versions: Plexe-Veins is based on Veins 4.7, Plexe-SUMO has been upgraded to SUMO 0.32.0, and OMNeT++ 5.1.1 is required.
• Coherent code styling: After long discussions with the Veins development team we decided to enforce some rules on code styling, to have a coherent styling over the whole codebase. Basically, we enforce the use of spaces over tabs and we use clang-format to automatically format the source files, using a configuration file provided with Plexe-Veins. Please see the FAQs to know how to automatically format your files to be Plexe-Veins code-style compliant.
• Distinct “Search” and “Track” buttons: Differently from the previous release the SUMO GUI has now two distinct buttons. The “Search” button only searches for a vehicle, while “Track” will also start tracking it.
• New data extraction output: The automatic data extraction can now export data to .csv format. See here for the documentation.
• New ring scenario: A new ring scenario is now available in the examples/autolanechange folder.
• Coordinated lane changes: Platoons can now automatically change lane in a coordinated way as a single, human-driven vehicle would do (still experimental).
• Auto feeding: The CACC algorithms in SUMO can automatically obtain data about other vehicles if needed, allowing the study of vehicle dynamics without simulating communication.
• Prediction: When enabled, Plexe estimates missing data caused by packet losses.
• Controller/Real acceleration: All sent beacons now include both controller (control input) and real vehicle acceleration. The usage of one or the other value by the control algorithm can be chosen via a new dedicated API.
• Simplified and reorganized codebase: Plexe-SUMO code has been cleaned up, removing all tweaks that were required to make platooning work properly in Plexe. Plexe now uses only standard SUMO functionalities, for better maintainability. The Plexe-Veins code has also been cleaned up.
• Join example: The join maneuver example is now on the main branch and not on a separated one.
• New CACC available: Plexe now implements the CACC proposed in [1].
• GUI interface: Plexe examples now automatically track the vehicles in the simulations, so you don’t need to manually search for them in the GUI.
• Several bugfixes: Bugfixes for both Plexe-Veins and Plexe-SUMO.

## What’s new in Plexe 2.0

• Upgraded to latest software versions: Plexe-Veins is based on Veins 4.4 and supports the latest OMNeT++ 5.0 release. Plexe-SUMO has been upgraded to SUMO 0.26.0.
• Programmable vehicle injection: You don’t need to insert SUMO flows in SUMO config files anymore. Using a TrafficManager you can inject vehicles from Veins directly from your code. This way you can inject entire platoons directly at steady state instead of waiting for all vehicles to join the simulation and “speed up” to form the platoons. The examples in the tutorial section use this mechanism.
• Detailed engine model: The new version comes with the classical First Order Lag model, as well as a new detailed engine model which accounts for engine power, gear ratios, aerodynamic characteristics of the vehicle, mass, etc. You can switch between the two depending on your needs. You can configure vehicles by setting parameters inside an XML file.
• No sumo-launchd anymore: Plexe-Veins 2.0 inherits all the new Veins features, including a SUMO-Forker module. This means there is no need to start sumo-launchd.py anymore before running your simulations.
• Automated pre-processing scripts: To automatically and easily extract data from the simulations, Plexe now provides some scripts that can be configured by means of configuration files. Just tell the scripts what you want to extract, and you will find pre-processed .Rdata files ready to be used for your plots. See the github page of the project for detailed information.
• New CACCs available: Plexe now comes with the CACCs proposed in [2], [3], and [4].
• Platooning-related vehicle parameters in the GUI: In the Plexe-SUMO GUI, by right-clicking a vehicle and choosing Show vehicle parameters you will also see some platooning-related quantities such as control input (desired acceleration), current acceleration, and radar distance.
• Multiplexing between beaconing protocols and applications: Differently from the previous version, now the BaseProtocol class can be connected to multiple applications. The applications register their interest in being notified about certain beacon types, so the network protocol will forward them those beacons. The idea is to separate different applications with different duties in your code, making it easier to keep it well-organized. For example, one application might take care of feeding the CACC with the data obtained from beacons, while another application might manage a maneuver. See the join maneuver tutorial for an example.
• Track vehicles by search in Plexe-SUMO: In the Plexe-SUMO GUI, if you search for a vehicle and then click on Center, the GUI will center the view on the vehicle and automatically start tracking it.
• Web-based tool for engine parameters verification and tuning: Given that the engine model has a lot of parameters and that it is difficult to verify if their values are correct, Plexe includes a web-based tool which loads vehicle parameters from the XML file and graphically shows the engine characteristics you would obtain with such parameters. You can then adjust those parameters and immediately see the outcome in the browser, for quick troubleshooting. Moreover, Plexe also provides a tool to translate the engine power curve taken from dyno measurements into a polynomial that it is used by the model to reproduce engine behavior.
• Several bugfixes: Software improves with time (usually).
• Windows support: Plexe can now be compiled in Windows as well, altough this is not recommended as a “production” solution.

## References

1. , “The Flatbed Platoon Towing Model for Safe and Dense Platooning on Highways,” Intelligent Transportation Systems Magazine, IEEE, vol. 7, no. 1, pp. 58–68, Jan. 2015 [Link to paper]
2. , “Demonstration of Integrated Longitudinal and Lateral Control for the Operation of Automated Vehicles in Platoons,” IEEE Transactions on Control Systems Technology, vol. 8, no. 4, pp. 695–708, Jul. 2000 [Link to paper]
3. , “Design and Experimental Evaluation of Cooperative Adaptive Cruise Control,” in IEEE International Conference on Intelligent Transportation Systems (ITSC 2011), Washington, DC, Oct. 2011, pp. 260–265 [Link to paper]
4. , “A Consensus-based Approach for Platooning with Inter-Vehicular Communications,” in 34th IEEE Conference on Computer Communications (INFOCOM 2015), Hong Kong, China, Apr. 2015, pp. 1158–1166 [Link to paper]