The Platooning Extension for Veins.
SimplePlatooningApp or GeneralPlatooningApp), now it is possible to specify a vector of applications like INET or Simu5G do via the numPlexeApps parameter. See this example configuration.BaseApp and SimplePlatooningApp: in past versions, BaseApp was in charge of processing platoon beacons with vehicle data and send them to CACC for actuation. As multiple applications are now supported, this had to be removed from BaseApp and has been moved to SimplePlatooningApp, which is now the one responsible for the task. This also means that other simulations that were not using SimplePlatooningApp (like the join maneuver example) will now have to also use the multiple applications feature and have SimplePlatooningApp as an additional applications, otherwise beacons data will never be sent to CACC for actuation.BaseApp is also in charge of logging vehicle data such as position and speed, having multiple applications would cause unnecessary logging. Logging is thus disabled by default and one app must enable that by calling the enableLogging();. Currently SimplePlatooningApp does so.HelloPlexeApp: A new HelloPlexeApp has been included to show users how to create a custom app, send and receive packets from other vehicles, as well as using different communication interfaces. Moreover, it clearly shows how to create new packet types and how to register for them to BaseProtocol.sendFrame() of BaseApp has been improved to set packet type and the interface to use for transmission.cookiecutter. Simply launch the script and let cookiecutter run the commands to download and build the code for you.bin folder of Plexe, instead of having a copy of all of them in each of the analysis folder inside the examples.UnicastProtocol module that was placed between the 802.11p NIC and the BaseProtocol module has been removed.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).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.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.master branch is the new development branch, while releases are still marked using branches.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..csv format. See here for the documentation.examples/autolanechange folder.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.XML file.sumo-launchd.py anymore before running your simulations..Rdata files ready to be used for your plots. See the github page of the project for detailed information.Show vehicle parameters you will also see some platooning-related quantities such as control input (desired acceleration), current acceleration, and radar distance.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.Center, the GUI will center the view on the vehicle and automatically start tracking it.