# 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 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, 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, 2015, pp. 1158–1166. [Link to paper]