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.