Closed lcipolina closed 4 years ago
Dear Lucia,
you can upgrade to a newer version of Plexe. If you checkout the master branch of Plexe, you will be using version 3.0-alpha2
. The main difference is that Plexe and Veins are now two separated pieces of software. So you would need to first download and compile Veins 5.0 in, for example, ~/src/veins
and then, to compile Plexe, you need to run the following commands
./configure --with-veins ~/src/veins
make -j <n CPUs>
Let me know if this fixes your problem.
Hi Michele, I am following up on this... Just to see if I understand.. the installation has to be done as follows: Thank you very much in advance!
Download VEINS from here https://veins.car2x.org/download/
unzip in ~/src/veins
Not sure if I need to build it ??? (step 3 here: https://veins.car2x.org/tutorial/)
cd ~/src
git clone https://github.com/michele-segata/plexe-veins.git
cd plexe-veins
git checkout plexe-2.1
(I guess this needs to be changed to git checkout plexe-3.0-alpha2 ??)
./configure --with-veins ~/src/veins
(this part is new)
make -j <number of cores of your PC> MODE=release
(do we keep the MODE part?)
git clone https://github.com/michele-segata/plexe-sumo.git
cd ~/src/plexe-sumo
git checkout plexe-3.0-alpha2
(here changed version??)
mkdir build-release
cd build-release
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j <number of cores of your PC>
Download VEINS from here https://veins.car2x.org/download/ unzip in
~/src/veins
It would be better to clone it from https://github.com/sommer/veins into ~/src/veins
so it is easier to do upgrades later.
Not sure if I need to build it ??? (step 3 here: https://veins.car2x.org/tutorial/)
Yes, you need to compile it.
git checkout plexe-2.1
(I guess this needs to be changed to git checkout plexe-3.0-alpha2 ??)
Yes, choose the new version.
./configure --with-veins ~/src/veins
(this part is new)
make -j <number of cores of your PC> MODE=release
(do we keep the MODE part?)
As you wish. If you keep MODE
it will only compile in release mode, while if you remove it it will compile it both in release and in debug mode.
PLEXE-SUMO
Plexe-SUMO is not required anymore, as of SUMO 1.2.0 my platooning models have been integrated into the official release. So you can just download and install the SUMO 1.6.0 binaries and you are ready to go without compiling SUMO.
Hello Michele,
Thank you for the Plexe, It greatly helps for my MSc dissertation as I'm starting my project on cyber threats on the platoon formations and its communications. I hope your libraries will help me a lot with my experiments.
In the meantime, I am trying to install the latest version of the Plexe by referring to the above comments, and I'm hitting with the below error while compiling. I am trying to compile on the macOS 10.15.6. Appreciate any help here thanks.
"plexe/messages/UpdatePlatoonFormation_m.cc plexe/messages/UpdatePlatoonFormationAck_m.cc Creating shared library: ../out/clang-Release/src/libplexe.dylib ld: library not found for -lveinsd clang: error: linker command failed with exit code 1 (use -v to see invocation) make[1]: ** [../out/clang-Release/src/libplexe.dylib] Error 1 make: [all] Error 2** "
I just need to try it out with my host machine before going into VMs. If the latest version not ready for macOS yet I may look for alternatives. Thanks.
Regards, Safras
Plexe depends on Veins, the error is indicating that the Veins library cannot be found. Have you built it, and passed its location to Plexe's configure?
Hi mightyCelu,
Thank you for the prompt response. I remember I did build the Veins and just to make sure to rebuild it and below 2 lines executed.
Creating script "./run"
Creating shared library: ../out/clang-release/src/libveins.dylib
Creating shared library: ../out/clang-debug/src/libveins.dylib
then I tried to build the Plexe and the error is gone. However, I got some error when try to run the first example.
`safras@Safrass-MacBook-Pro platooning % ./run -u Cmdenv -c Sinusoidal -r 2'
'OMNeT++ Discrete Event Simulation (C) 1992-2017 Andras Varga, OpenSim Ltd.
Version: 5.1.1, build: 170508-adbabd0, edition: Academic Public License -- NOT FOR COMMERCIAL USE
See the license for distribution terms and warranty disclaimer'
'<!> Error: Attempt to load the oppsim shared library more than once. This usually happens when part of your simulation is using release libraries while other parts are using the debug version. Make sure to rebuild all parts of your model in either release or debug mode!`
It seems I build the Veins without specifying the MODE. so I rebuilt again with the release mode. this time I got a different error when trying to run the first example.
safras@Safrass-MacBook-Pro platooning % ./run -u Cmdenv -c Sinusoidal -r 2
<!> Warning: opp_run: Cannot check library ../../src/plexe: dlopen(../../src//libplexe.dylib, 10): Library not loaded: /Users/safras/src/veins/out/clang-debug/src/libveins.dylib
Referenced from: /Users/safras/src/plexe-veins/out/clang-release/src/libplexe.dylib
Reason: image not found
OMNeT++ Discrete Event Simulation (C) 1992-2017 Andras Varga, OpenSim Ltd.
Version: 5.1.1, build: 170508-adbabd0, edition: Academic Public License -- NOT FOR COMMERCIAL USE
See the license for distribution terms and warranty disclaimer
<!> Error: Cannot load library '../../src//libplexe.dylib': dlopen(../../src//libplexe.dylib, 10): Library not loaded: /Users/safras/src/veins/out/clang-debug/src/libveins.dylib
Referenced from: /Users/safras/src/plexe-veins/out/clang-release/src/libplexe.dylib
Reason: image not found
End.
Please help with this error. Is it something to do with the OMNET++ version? I install the 5.1.1 version. Thanks
Regards, Safras
The above issue is related to not properly installing omnet++. Once I build the omnet++ properly its works fine. Thanks.
Hi @SafrasIqbal sorry to jump in. I am interested in your Thesis once it's done. If you can share it, I will be happy to read. I am working on Platooning and Reinforcement Learning.
Cheers.
PD: I will make a "Pull request" with an updated version of the installation steps, in the case Michele wants to update the tutorial.
Hi Lucian,
Thank you for the interest, yes sure I am happy to share the thesis one it's done.
I should thank you for initiating this thread, it did enlighten me with the PLEXE version 3.0. It was much easier to get it up and running the simulator. In fact, I was struggling with the 2.5 version in 3 different environments. However, with the 3.0 version, I have some issues with generating the results.
Regards, Safras
I would like to confirm the following:
This wont work with SUMO 1.6, right? One needs SUMO 1.2.0 as per Vein's instructions here: https://veins.car2x.org/tutorial/#step1
Thanks!
For me yes, it did work with SUMO 1.6, no issues.
I would like to confirm the following:
This wont work with SUMO 1.6, right? One needs SUMO 1.2.0 as per Vein's instructions here: https://veins.car2x.org/tutorial/#step1
Thanks!
Yes, Veins will work with SUMO 1.6.
Hi all, thank you very much for your kind replies. I am building VEINS following the tutorial here: https://veins.car2x.org/tutorial/#step3
*Import the project into your OMNeT++ IDE workspace by clicking File > Import > General: Existing Projects into Workspace and selecting the directory you unpacked the module framework to.
Build the newly imported project by choosing Project > Build All in the OMNeT++ 5 IDE. After the project built, you are ready to run your first IVC evaluations, but to ease debugging, the next step will ensure that SUMO works as it should.*
I just wanted to check whether this step was correct. As I am not given the option to do "Next" just to "Finish". Thank you very much.
Finish should work just fine, it's simply the last step in the process.
Thank you very mych @mightyCelu ! I am following the tutorial. I am finding this step a little bit bananas :) https://veins.car2x.org/tutorial/#step4
I believe it is written with Windows in mind (hence the mention of MinGW) . Even so, I guess the initial directory change to VEINS' folder is not needed if one just wants to test SUMO.
Is this step aimed to test SUMO's GUI working? if so, on Linux command line, one can simply do:
sumo-gui
Or is this step aimed to some other configuration that I am missing. Thank you very much for your time.
See below:
_Step 4: Make sure SUMO is working
In the OMNeT++ MinGW command line window, you should be able to have SUMO simulate an example scenario by changing the current directory to /c/Users/user/src/veins-5.0/examples/veins/ using cd ../veins-5.0/examples/veins and running
/c/Users/user/src/sumo-1.2.0/bin/sumo.exe -c erlangen.sumo.cfg_
Yes, the tutorial is executed on Windows. On Linux it should work similarly, just that the paths will be different, and the binaries don't have .exe
suffixes.
Hi @mightyCelu , Thank you very much for your reply.
Now I have made progress up to STEP 5: "Final step: Run the Veins demo scenario"
I was able to do the following:
cd to:
$<path to veins>
Then execute:
$ python sumo-launchd.py -vv –c <path to SUMO>
In my case:
~/src/veins/ python sumo-launchd.py -vv –c /usr/share/sumo/bin/sumo
The script prints: Listening on port 9999
Then for the equivalent of this line, I did:
I left that there and opened a new Terminal window and did:
~/src/veins/examples/veins$ omnetpp omnetpp.ini
Which prints:
Starting the OMNeT++ IDE...
It will start OMNET++ and throw these messages. Since It's my first time with this application, I am not sure what to select
Thank you very much:
The omnetpp
binary starts the OMNeT++ IDE. To run the simulation, there are two ways:
In the OMNeT++ 5 IDE, simulate the Veins demo scenario by right-clicking on veins-5.0/examples/veins/omnetpp.ini and choosing Run As > OMNeT++ simulation.
examples/veins
directory, call ./run -u Qtenv
.Hello @mightyCelu , thank you very much for all your answers. I see that I had to select a workspace and then go to the Project Explorer. I found the omnetpp.ini file After doing "run with Omnet++" I am getting the following error message: "Error within Debug UI"
I have been searching online with no luck so far. Do you have an idea what it could be? Thank you very much!
From the screenshot you shared it looks to me like you only included/importet the example directory of veins (examples/veins
) in the workspace. If that's the case, you need Veins as a complete project in your workspace, this should be possible with the Import existing projects into workspace
dialog you mentioned above.
Otherwise, I need a bit more context to be able to help, such as details to the error message or an console/error log.
Hi @mightyCelu , thank you for your assistance. The way I've imported the projects is following the screen I've pasted above. I am pasting it here for your reference. It seems to me that it imported everything.
Then I've built the project as indicated on the tutorial.
How can I get more context on the error beyond the pop up screen?
This is interesting. I just tried to import Veins as well, for me it looks different, in particular, the first project in your list is examples/veins
, when it should be veins itself. Can you try downloading the zipped version of Veins and importing that, i.e., use an archive instead of an directory? Also, what version of omnet are you using?
First of all, thank you very much @mightyCelu for all your time dedicated to solving my issues. I believe I've found the light at the end of the tunnel. In exchange, I offer to make a nice "Pull Request" with a Linux installation tutorial to help other Linux users.
Now, I will explain where the issue was:
If you look above, one of the messages, says
"It would be better to clone it from https://github.com/sommer/veins into ~/src/veins so it is easier to do upgrades later."
This actually was complicating importing VEINS into Omnet, simply due to the folder structure, as you pointed out. So there are 2 options:
Or this is what I did (POLEMIC DECISION, can be undone if necessary):
cd ~/src
https://github.com/sommer/veins/archive/master.zip
(We need to unzip it, as omnet doesn't allow to load .zip files) Then, we will have a directory embedded into another folder called "veins-master" see below:
To test SUMO (step 4)
alpha@alpha:~/src/veins/veins-master/examples/veins$ sumo-gui -c erlangen.sumo.cfg
To run the VEINS scenario (step 5)
alpha@alpha:~/src/veins/veins-master$ python sumo-launchd.py -vv –c /usr/share/sumo/bin/sumo
On a new terminal:
alpha@alpha:~/src/veins/veins-master/examples/veins$ omnetpp
And here are the resulting screens, which seem to indicate that everything run as planned (RIGHT??):
Except for this part, which I don't see (see the screenshots below):
"If everything worked as intended this will give you a working simulation scenario using OMNeT++ and SUMO running in parallel to simulate a stream of vehicles that gets interrupted by an accident."
Great to hear that everything worked out for you and thanks for posting this guide, it might help someone. The screenshots you posted look like everything's working fine now.
Hi @mightyCelu thank you very much for all this help. Once this issue is closed, the instructions will be hidden. So I plan to make a Pull Request on the GitHub Repo, that you can use for following users.
Now that I have compiled VEINS, I would like to compile PLEXE-VEINS. The instructions I was given by @michele-segata above are as follows:
cd ~/src
git clone https://github.com/michele-segata/plexe-veins.git
cd plexe-veins
Here it complains that it can't find the git Repo:
git checkout plexe-3.0-alpha2
Error message:
fatal: not a git repository (or any of the parent directories): .git
Is the address of the git checkout correct? Thanks.
Then the rest of the instructions, as I understand them, are as follows:
./configure --with-veins ~/src/veins
# To compile it both in release and in debug mode:
make -j <number of cores of your PC>
Here it complains that it can't find the git Repo:
git checkout plexe-3.0-alpha
As I understood, I think it is because the branch plexe-3.0-alpha
does not exist. I can see that the latest one is named plexe-3.0a1
Hi @whatgit. That is true. I am not sure why Michele recommended Version Alpha-2...
In any case, I checked out that branch, and then execute the following commands:
git checkout plexe-3.0a1
./configure --with-veins /home/alpha/src/veins/veins-master (I've pointed it to the folder where package.ned is)
make -j 48 (my number of cores)
Getting this lovely error message:
../../veins/veins-master/src/veins/modules/application/ieee80211p/DemoBaseApplLayer.h:29:10: fatal error: 'veins/modules/messages/BaseFrame1609_4_m.h' file not found
#include "veins/modules/messages/BaseFrame1609_4_m.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Makefile:171: recipe for target '../out/clang-release/src/plexe/protocols/SimplePlatooningBeaconing.o' failed
make[1]: *** [../out/clang-release/src/plexe/protocols/SimplePlatooningBeaconing.o] Error 1
Makefile:171: recipe for target '../out/clang-release/src/plexe/apps/GeneralPlatooningApp.o' failed
make[1]: *** [../out/clang-release/src/plexe/apps/GeneralPlatooningApp.o] Error 1
1 error generated.
Makefile:171: recipe for target '../out/clang-release/src/plexe/protocols/BaseProtocol.o' failed
make[1]: *** [../out/clang-release/src/plexe/protocols/BaseProtocol.o] Error 1
1 error generated.
Makefile:171: recipe for target '../out/clang-release/src/plexe/scenarios/BrakingScenario.o' failed
make[1]: *** [../out/clang-release/src/plexe/scenarios/BrakingScenario.o] Error 1
1 error generated.
Makefile:171: recipe for target '../out/clang-release/src/plexe/maneuver/JoinAtBack.o' failed
make[1]: *** [../out/clang-release/src/plexe/maneuver/JoinAtBack.o] Error 1
make[1]: Leaving directory '/home/alpha/src/plexe-veins/src'
Makefile:15: recipe for target 'all' failed
make: *** [all] Error 2
I am not sure what could cause the error, it just did not find the header file. Hopefully it exists?
Perhaps you could try to configure it like this instead?
./configure --with-veins /home/alpha/src/veins
I have not done this for a very long time, so I have no experience configuring it with --with-veins
option. I just think the path you gave should point to the source directory of Veins.
Thank you very much @whatgit.
The make file is searching on this directory:
While I've found the header file on these directories: /home/alpha/src/omnetpp-5.6.2/workspace/veins/src/veins/modules/messages/BaseFrame1609_4_m.h /home/alpha/src/omnetpp-5.6.2/samples/veins/src/veins/modules/messages/BaseFrame1609_4_m.h
It seems to me that I didn't build VEINS correctly into Omnet :) I am unsure of what next steps to take.
Hi Lucia,
I assume you have built the Veins 5.0 through OMNET++ IDE as per the tutorial.
I would suggest trying below steps which worked for me.
Once the above steps completed, try to build the Plexe-Veins 3.0 again in Release mode. The first time it worked for me in release mode. If I don't specify the mode, it will compile in debugging and release mode both, in that case, I did encounter some issue in debug mode. So it's better try in release mode first and compile again for debug mode if necessary.
Hi @SafrasIqbal thank you very much. I have downloaded VEINS the way @michele-segata told me above: from its Repo "It would be better to clone it from https://github.com/sommer/veins into ~/src/veins so it is easier to do upgrades later."
Then I compiled VEINS with OMNET as you can see my screenshots above.
Then, Michele suggested me above to do the following:
cd ~/src
git clone https://github.com/michele-segata/plexe-veins.git
cd plexe-veins
git checkout plexe-2.1 (I changed this to the latest checkout as per his recommendation above)
./configure --with-veins ~/src/veins (this part is new)
make -j <number of cores of your PC> MODE=release
./configure
script is telling me that it needs the option "--with veins"alpha@alpha:~/src/plexe-veins$ ./configure
usage: configure [-h] --with-veins PATH
configure: error: argument --with-veins is required
Hi Lucia,
Sorry for the confusion, my suggestion is on Veins 5.0 which you need to built before compiling Plexe-Veins. The all the steps you mentioned above are applicable after compiling Veins 5.0.
- So I am not sure if I should run the "./configure" file on the "plexe-veins" as suggested above, or on the "veins" folder
just ./configure will not work in "Plexe-veins" it should be tried on Veins folder.
Hi @SafrasIqbal , my confussion comes with the fact that now I have 2 set of directives:
Safras:
cd to Veins 5.0 folder.
./configure
make -j4 MODE=release
While @michele-segata :
clone it from https://github.com/sommer/veins into ~/src/veins so it is easier to do upgrades later.
cd ~/src
git clone https://github.com/michele-segata/plexe-veins.git
cd plexe-veins
git checkout plexe-2.1 (I changed this to the latest checkout as per his recommendation above)
./configure --with-veins ~/src/veins (this part is new)
make -j <number of cores of your PC> MODE=release
Hi Lucia,
I can see 2 different directives for 2 different software. Both are not same.
If you notice:
./configure --with-veins ~/src/veins
step to include "Venis" while compiling latest version Plexe-veins 3.0. where you need to give the path of Venis, which already compiled. If you have missing files in this path, PLEXE will not succeed compline correctly, and you will get issues like you getting now.
Apologies if I try to confuse you further.
Hi @SafrasIqbal Thank you very much for this.
I first compiled VEINS (using the GitHub link and some screenshots that you will see above) and following this tutorial: https://veins.car2x.org/tutorial and now I would like to use Plexe-Veins. When I try to follow the directives provided by Michele to compile Plexe-Veins, is where I am getting the error of a missing header file.
Supposedly, my compilation of VEINS was successful (see the chain above where @mightyCelu tells me that my compilation was successful. So I don't know what I am doing wrong.
My guess is that I need to "recompile" veins again, is this what you are saying? So first run this:
cd to Veins 5.0 folder.
./configure
make -j4 MODE=release
and then this:
clone it from https://github.com/sommer/veins into ~/src/veins so it is easier to do upgrades later.
cd ~/src
git clone https://github.com/michele-segata/plexe-veins.git
cd plexe-veins
git checkout plexe-2.1 (I changed this to the latest checkout as per his recommendation above)
./configure --with-veins ~/src/veins (this part is new)
make -j <number of cores of your PC> MODE=release
Thanks
Yes you have complied Veins above using OMNET++ IDE and the path for this I can see
/home/alpha/src/omnetpp-5.6.2/workspace/veins
I think easiest way to resolve your issue to include above path while compiling Plexe-Veins.
./configure --with-veins /home/alpha/src/omnetpp-5.6.2/workspace/veins
Please try this first. if this is not working will try some alternatives.
@SafrasIqbal SUCCESS! thank you very very much.
Now, This is my understanding, if you can please confirm:
There are 3 options to run PLEXE:
Download VEINS and build using:
cd to Veins 5.0 folder.
./configure
make -j<number of CPUS> MODE=release
Then build Plexe using:
git clone https://github.com/michele-segata/plexe-veins.git
cd plexe-veins
git checkout plexe-3.0-alpha2
./configure --with-veins ~/src/veins
make -j <number of cores of your PC> MODE=release
Or, if I want to hook-up Plexe with Omnet, to simulate communication in Platooning, then I have to go through all this: https://veins.car2x.org/tutorial and then build PLEXE using the command you added above, since there is where the header files are. Which is what I did.
Is my understanding correct?
Ok great. finally, it worked. :)
I think above option 1 & 2 should be combined into one option. The second option is as option 3, so there're 2 options.
yes, indeed you are right. I'll put them together in the tutorial.
So option 1 above, doesn't allow one to do V2V communications, right? it's just to test platooning in Sumo?
I guess that's the difference between (1) and (3) above (that will be called "2")
I'm glad you finally made it work. I'll try to clear some doubts.
So option 1 above, doesn't allow one to do V2V communications, right? it's just to test platooning in Sumo?
Plexe is composed by two parts. The mobility part (control algorithms and vehicle dynamics) which is implemented in SUMO, and the communication and applications part which is this repository. Veins is an OMNeT++ library that enables you to couple OMNeT++ with SUMO and to simulate vehicular communications and applications, but it doesn't provide functionalities for platooning, which is what Plexe does. Veins is a requirement for Plexe (the communication part), because Plexe needs to be coupled with SUMO and to use the V2V communication modules that Veins provides.
Option 1+2 and option 3 are exactly the same thing. The only difference is that, in option 3, you are building Veins using the OMNeT++ GUI instead of doing it on the command line.
The option of using Plexe without simulating communication is a different thing. You don't need OMNeT++, nor Veins, nor Plexe in this repository. You just need SUMO (post version 1.2.0, because Plexe modules have been embedded into SUMO as of version 1.2.0) and the Python APIs for Plexe. The Python APIs control the SUMO simulation and the tells vehicles how to behave.
Another doubt you had was about ./configure
: this generates all the required Makefiles
to build the software, so it is needed to build both Veins and Plexe. In addition to generating the Makefiles
, in Plexe it also tells where Veins is located, so that 1) Plexe can find Veins' include files and 2) Plexe can be linked against Veins.
To sum up, this is the complete procedure I follow to build this repository (I am assuming SUMO and OMNeT++ are already installed).
cd ~/src
git clone https://github.com/sommer/veins
cd veins
./configure
make -j <n cpus> MODE=release
cd ~/src
git clone https://github.com/michele-segata/plexe-veins
cd plexe-veins
git checkout plexe-3.0a2
./configure --with-veins ~/src/veins
make -j <n cpus> MODE=release
Thank you very much to everyone who has helped me through the installation of all these libraries. I will make a PR with the installation steps in the hope that it will help someone else in the future.
I'll close the issue now as all my questions have been answered and I am able to run the examples provided.
Hello Michele, Thank you very much for these libraries.
I am on Ubuntu 18 and I have some problems on installation that I've fixed them this way:
Error: undefined-reference-to-symbol-pthread-key-deleteglibc-2-2-5 Solution:
$ make -j <my number of CPUs> **–pthread**
I believe this solved the problem... however, I am trying to run the tutorials: Now, I am trying:
./run -u Cmdenv -c Sinusoidal -r 2
However, I am getting the following error:
<!> Model error: TraCI server "SUMO 1.6.0" reports API version 20, which is unsupported. We recommend using SUMO 0.32.0 -- in module (Veins::TraCIScenarioManagerForker) Highway.manager (id=6), at t=0s, event #2
QUESTION: Should I downgrade my SUMO version to 0.32 or is there any other solution available? Downgrading will not be convenient since I am using CARLA on this same machine which needs the latest SUMO
Thank you very much.