安装之前找好官方对应的资料,基本是英文,那这篇博客就是第一个中文版开山之作啦!
项目github地址:CarlaSumoArtery-CoSimulation
需要安装的软件:
关于CARLA Sumo Omnetpp的安装可以参考上一篇博客,版本都是对的,因为这个版本是Veins5.2推荐的版本。所以本篇博客主要是安装Artery。
Artery官网:Artery V2X Simulation Framework
Artery 支持基于 ETSI ITS-G5 协议(例如 GeoNetworking 和 BTP)的 V2X 模拟。通过Artery的中间件,单辆车可以配备多个ITS-G5服务,Artery也为这些服务提供了通用设施。一些基本服务,例如合作意识(CAM)和去中心化通知(DENM)已经包含在内。(就是DSRC)
Environment Model: Artery 环境模型 (envmod) 的开发是由集体感知用例推动的。该用例旨在通过 V2X 通信与其他道路参与者共享车辆传感器感知的物体。
Global and local environment models:其中一个GlobalEnvironmentModel跟踪 SUMO 报告的所有障碍物和车辆。在上图中,建筑物等静态障碍物被着色为深绿色。车辆,即动态障碍物,充满蓝色。每辆具有传感器功能的车辆都拥有其LocalEnvironmentModel,这是车辆对环境的局部视角。与附加到中间件的服务模块类似,本地环境模型托管一组可配置的传感器。XML 配置与服务配置非常相似,并且可以应用相同的过滤规则。传感器可以安装在车身的前部、后部、左侧或右侧。服务可以通过设施访问本地环境模型并查询感知对象。雷达传感器的范围和视场可以单独配置。只能感知配置的传感器锥体内的物体。此外,如果另一辆车的各个角落的视线被遮挡,则无法感知该车辆。建筑物和其他车辆可能会阻挡这些视线。在环境模型的可视化中,视线被绘制为与相应传感器锥体颜色相同的虚线。
GEMV²: GEMV²是一种基于几何的V2V通信高效传播模型。GEMV² 是由Mate Boban在撰写博士论文时开发的。具体详情可以去看博士论文。
官方安装说明:Install Instructions
以及该视频,不过是Ubuntu 22.04.2 LTS。
视频中涉及到的密令都在Link。
克隆
git clone --recurse-submodule https://github.com/riebl/artery.git
要求:
验证g++编译器是否存在:
验证clang:
若没有,使用sudo apt install clang
安装。
安装Boost:
sudo apt-get install libboost-all-dev
验证cmake:
若没有,使用sudo apt install cmake
安装。
OMNeT++已经安装。如有需要可以看上一篇博客VEINS_CARLA安装指南。
查看python3:
安装GeographicLib:
sudo apt install libgeographic-dev
sudo apt install libcrypto++-dev
sumo已经安装,不是强制的,建议安装。
创建build目录:
mkdir build
cd build
cmake ..
cmake --build .
wget https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-linux-x86_64.sh
sudo bash ./cmake-3.23.0-linux-x86_64.sh --skip-licence --prefix=/usr
# 安装过程中遇到:
# 选择1
Do you accept the license? [yn]:
# 输入 y
# 选择2
By default the CMake will be installed in:
"/usr/cmake-3.23.0-linux-x86_64"
Do you want to include the subdirectory cmake-3.23.0-linux-x86_64?
Saying no will install in: "/usr" [Yn]:
# 输入 n
安装完成后,可以看到 cmake 版本已经更新
$ cmake --version
cmake version 3.23.0
在artery/build目录下面再次编译:
仍然报错,估计是版本太高了。
换成最低要求的3.12.0了。
随后重新编译:
困难重重啊,怀疑了版本的问题,但没有效果,只能看这个提示,看看问题在哪了。
直接去搜错误提示是什么正则式表达错误,我又详细了看了cmake/AddOppTarget.cmake这个文件,然后将错误和38行对应的代码都发给GPT,
我发现还挺有用的,抱着试一试的心态(也没有其他的办法了):
按GPT的提示添加了防止正则式出错的代码,然后编译:
太帅了,和这个视频中的一样。
最后cmake --build .
和视频中一样:
运行例子:
运行成功!表明成功安装了Artery框架。
已经做好CarlaSumoArtery-CoSimulation安装前的环境准备了。
pip3 install psutil pyproj
./configure WITH_TKENV=no WITH_QTENV=no
make cleanall
make MODE=release
使用命令 ./configure WITH_TKENV=no WITH_QTENV=no 中的选项 WITH_TKENV=no 和 WITH_QTENV=no 表示你选择禁用了图形化界面支持。这意味着在配置OMNeT++后,你将以命令行方式运行OMNeT++,而不再能够使用图形用户界面(GUI)。
如果你需要启用图形用户界面(GUI),请确保不使用 WITH_TKENV=no 和 WITH_QTENV=no 这两个选项。可以更改为运行以下命令:
./configure WITH_TKENV=yes WITH_QTENV=yes
git clone https://github.com/mohammedLamine/CarlaSumoArtery-CoSimulation.git
将simulation_modules的文件夹移到和carla的同一个目录下即可。(没错,我的carla就装在Downloads下,笑哭!)
接下来进入测试环节:
运行carla:
进入:carla/Unreal/CarlaUE4,我的密令是这个$~/UnrealEngine_4.26/Engine/Binaries/Linux/UE4Editor "$PWD/CarlaUE4.uproject"
(第一个$符号后面的直到结束)
python3.7 synchro_client.py
由于Ubuntu18.04系统自带的python版本为3.6.9,可以在为系统安装一个3.7的版本。
找到如下教程:
在Ubuntu 18.04 LTS上安装Python 3.7
不是很确信的话也可以在找个英文的参照,中文教程也可以先看看评论。
开始吧!
选择从源代码在ubuntu上安装Python 3.7
首先需要更新apt的本地存储库索引,如下所示::
sudo apt update
随着本地存储库索引的更新,我们现在将安装编译和安装python3.7所需的依赖项。为此,我们需要执行以下命令:
sudo apt install -y build-essential wget zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev
一旦所有依赖项都已安装并准备就绪,我们将使用wget命令从官方python网站下载Python 3.7的最新版本,如下所示:
wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz
使用tar命令下载并提取tgz文件。
tar -xf Python-3.7.7.tgz
现在将cd进入目录,然后执行configure脚本以评估是否满足了编译所需的依赖项关系。启用优化标志优化python二进制文件并将代码执行增加10-20%。
cd Python-3.7.7
成功执行configure脚本后,我们现在将通过使用带有altinstall参数的make命令在Ubuntu 18.04 LTS计算机中安装python 3.7。altinstall参数可确保未将其安装为系统默认的python版本。
sudo make altinstall
现在,我们可以通过如下检查其版本来检查python 3.7是否已成功安装。
python3.7 -V
创建venv的虚拟环境。
装好环境后在此运行,你会发现有个路径的问题,改完之后又出现了个错误,找不到carla模块,这个应该是安装完carla后没有将Carla Library安装到你的python3里,这里小飞哥的教程有说。
接下来就按照小飞哥的教程试下:
我发现装的是0.9.14,应该向前兼容吧。。。
cd ~/carla/PythonAPI/carla/dist/
unzip carla-0.9.14-py3.6-linux-x86_64.egg -d carla-0.9.14-py3.6-linux-x86_64
cd carla-0.9.14-py3.6-linux-x86_64
接下来打开你的文档编辑器,建立一个setup.py, 将以下内容复制进去。
from distutils.core import setup
setup(name='carla',
version='0.9.10',
py_modules=['carla'],
)
这里有点坑,路径要正确,我最后用的绝对路径…
一直报上面那个ERROR,晕死。
继续:
3.7应该不不能import carla,干脆就用自带的3.6了,-_-||,不明白为啥教程要用3.7
这里应该也是路径的问题,应该是synchro_client.py的上一级才能够进入到carla文件夹:
感觉应该是问题不大了,试一下command example:
这里也是路径的问题,应该说github上的readme描述文件就稍微有点问题,不然不会出现这种路径问题。不过自己改一下就行。
搜索一下,相关的路径都改一下。
果然,这个解决了,另一个又来了,
重新编译一下看看有没有这个文件吧。。。
我没有按CarlaSumoArtery-CoSimulation的编译方式,按Omnet++官方文档的编译方式。
装完后就有了。
我最后的编译是这样的:
./configure WITH_TKENV=no WITH_QTENV=no
make cleanall
make
我没有使用MODE=release,使用了之后就没有opp_run_dbg了。
这里我又改回来了。
然后再次运行:
没有报错,看样子是成功了!代表测试成功!
synchro_client.py 脚本使用 carlas 的“run_synchronization.py”来同步 carla 和 sumo,然后在模拟循环中查找来自 Artery 模拟的连接以开始接收消息。该脚本还会查找已定义的攻击者和检测机制,并在同一循环中运行它们,并在 Carla 中绘制相应的可视化效果。
如果要开启sumo,加上sumo-gui即可。
python3.6 synchro_client.py --color-agents --color-cams --num-clients 2 --sumo-gui --start-artery --artery-build-path /home/luo/OMNet++/omnetpp-5.6.2-src-linux/artery/build
如果要和carla同步的话,需要加载carla的地图,
随后执行
python3.6 synchro_client.py --color-agents --color-cams --num-clients 2 --sumo-gui --start-artery --artery-build-path /home/luo/OMNet++/omnetpp-5.6.2-src-linux/artery/build
然后就可以联合仿真了。