ubuntu 20.04 carla |
您所在的位置:网站首页 › pip照相机 › ubuntu 20.04 carla |
目录
在Ubuntu 20.04 下安装 Carla 指定版本系统配置要求安装依赖安装Unreal EngineCarla源码编译安装
Carla Python API 使用配置Python环境Carla机制简述Carla Client 脚本Sensors搭建
Carla ros bridgeGithub 源码编译安装与使用
在Ubuntu 20.04 下安装 Carla 指定版本
参考: Ubuntu 20.04 安装CARLA. CARLA官网. 系统配置要求130GB以上的硬盘空间,其中carla需要19.5GB,UnrealEngine需要96.1GB 16GB以上的内存,不够的可以扩容虚拟内存,但是会使运行卡顿 6 GB GPU,但推荐8GB 2 个TCP 端口以及良好的网络,安装时要确保不被防火墙block 安装依赖参考官网命令,安装系统依赖 sudo apt-get update && sudo apt-get install wget software-properties-common && sudo add-apt-repository ppa:ubuntu-toolchain-r/test && wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - && sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" && sudo apt-get update配置编译器,要保证CALAR 和Unreal Engine用的是相同的clang。 sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main" sudo apt-get install build-essential clang-10 lld-10 g++-7 cmake ninja-build libvulkan1 python python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-10/bin/clang++ 180 && sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-10/bin/clang 180为了与carla-ros-bridge适配,carla安装版本选择0.9.13,需要clang-8编译,但是clang-8不是Ubuntu20.04默认的版本,安装可参考 ubuntu20.04 安装clang(什么是llvm、什么是clang以及其和clang的关系). Cannot install ‘libclang-dev‘–Ubuntu20.04 安装 libclang-dev 插件. 使用 aptitude安装clang-8 sudo aptitude install clang-8通过 aptitude 安装 libclang-dev 时,选择安装目标clang版本的方案执行(不一定就是第二个) 安装Python依赖。pip版本需要大于20.3。 pip install --user setuptools && pip3 install --user -Iv setuptools==47.3.1 && pip install --user distro && pip3 install --user distro && pip install --user wheel && pip3 install --user wheel auditwheel 安装Unreal EngineCALAR 0.9.12以后的版本使用的引擎是Unreal Engine 4.26。在安装CALAR 之前要安装好Unreal Engine 4.26 。我这里使用的是刘博士提供的安装包。 解压后进入UnrealEngine_4.26文件夹,执行 ./Setup.sh && ./GenerateProjectFiles.sh && make cd ~/UnrealEngine_4.26/Engine/Binaries/Linux && ./UE4Editor检查是否安装成功: cd ~/UnrealEngine_4.26/Engine/Binaries/Linux && ./UE4Editor安装完,要把UnrealEngine的路径添加到 ~/.bashrc gedit ~/.bashrc在最后一行写入 export UE4_ROOT=~/UnrealEngine_4.26 Carla源码编译安装首先从GitHub上下载指定版本的carla。为了与carla-ros-bridge适配,需安装carla 0.9.13 git clone -b 0.9.13 https://github.com/carla-simulator/carla安装aria2可以加速下载 sudo apt-get install aria2编译安装 cd ~/carla ./Update.sh make PythonAPI #若指定Python版本,使用 #make PythonAPI ARGS="--python-version=2.7" make launchcarla 0.9.13编译需要clang8,与ubuntu20.04自带的不同,需另外安装。 过程中可能会遇到下载失败的问题,多试几次可以成功。 用这种方法安装0.9.13的话,直接make PythonAPI 的话主要出现两个问题,参考Ubuntu 20.04 安装CARLA.可以解决。 make launch最后会启动carla窗口,点击绿色三角运行按钮可以运行的话,可以认为安装成功。
设置python2为默认可参考在 Ubuntu20.04 上安装 python2 并设置为默认方式 首先安装python2的setuptools sudo apt-get install -y python-setuptools安装过程中可能会报错缺少python依赖,参考Ubuntu 20.04 python2安装pip使用pip安装
安装 Carla Python API 使用参考:史上最全Carla教程 |(三)基础API的使用. 配置Python环境make PythonAPI 命令基于Ubuntu20.04默认的Python 3.8环境编译出了一个.whl文件和一个.egg文件。两个文件均在 carla/PythonAPI/carla/dist 路径下。Ubuntu 20.04 下的ros noetic实现了对Python3的支持,使用系统默认的Python版本即可。Ubuntu 18.04 下的ros melodic 仅支持Python2,所以需要将系统默认Python版本设为Python2。也可以使用anaconda进行管理。相关可参考这个. .whl文件可以通过如下命令安装: #Python 3 pip3 install .whl #Python 2 pip install .whl修改~/.bashrc,在末尾添加 export CARLA_ROOT=~/carla export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.13-py3.8-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carlaCarla 官方提供了一些例程在 carla/PythonAPI/examples 路径下,可通过在carla安装目录下运行如下命令进行测试 #第一个终端 cd PythonAPI/examples python3 -m pip install -r requirements.txt python3 generate_traffic.py #另外再打开一个终端 cd PythonAPI/examples python3 dynamic_weather.py运行效果如图 自己编写Python脚本并运行,可以将.py置于和 carla/PythonAPI/examples 同级的文件夹下,如carla/PythonAPI/carla_projects Carla机制简述如下图所示,Carla主要分为Server与Client两个模块,Server端用来建立这个仿真世界,而Client端则是由用户控制,用来调整、变化这个仿真世界。 Server: Server端负责任何与仿真本身相关的事情:从3D渲染汽车、街道、建筑,传感器模型的构建,到物理计算等等。它就像一个造物主, 将整个世界建造出来,并且根据Client 的外来指令更新这个世界。它本身是基于UnrealEnigne做出的3D渲染。make launch启动carla窗口后点击运行按钮之后,Server端才启动成功。 Client: 如果server构造了整个世界,那么这个世界不同时刻到底该如何运转(比如天气是什么样,有多少辆车在跑,速度是多少)则是由Client端控制的。用户通过书写Python脚本(最新版本C++ 也可以)来向Server端输送指令指导世界的变化,Server根据用户的指令去执行。 另外,Client端也可以接受Server端的信息,譬如某个照相机拍到的路面图片。Client需要等Server端启动后再运行。 参考 carla/PythonAPI/examples 里的内容,Carla Client 脚本需添加如下内容引入Carla #!/usr/bin/env python import glob import os import sys try: sys.path.append(glob.glob('../carla/dist/carla-*%d.%d-%s.egg' % ( sys.version_info.major, sys.version_info.minor, 'win-amd64' if os.name == 'nt' else 'linux-x86_64'))[0]) except IndexError: pass import carla用户通过Client载体与python API与仿真环境交互,所以我们第一步就是要创建Client,并且设置一个timeout时间防止连接时间过久。 client = carla.Client('127.0.0.1', 2000) client.set_timeout(2.0)其中2000是端口,2.0是秒数。 接下来我们就要通过这个构建的Client来获取仿真世界(World)。我们如果想让仿真世界有任何变化,都要对这个获取的world进行操作。 world = client.get_world()这样加载的是默认地图。Carla官方提供了很多地图,可以通过在脚本中添加 print(client.get_available_maps()) 来查看。如要切换地图: # 加载Town01 world = client.load_world('Town01') # 重新加载当前地图 world = client.reload_world()加载地图或者重新加载当前地图都会初始化当前Carla World对象。详细可参考Carla 地图 自己编辑carla地图需要使用RoadRunner软件 创立了世界之后,就要开始安放我们的主角——actor了。顾名思义,Actor意味演员,在仿真世界里则代表可以移动的物体,包括汽车,传感器(因为传感器要安在车身上)以及行人。完整流程的简单示例如下 # 拿到这个世界所有物体的蓝图 blueprint_library = world.get_blueprint_library() # 从浩瀚如海的蓝图中找到奥迪的蓝图 ego_vehicle_bp = blueprint_library.find('vehicle.audi.a2') # 随机选一个是这样 # ego_vehicle_bp = random.choice(blueprint_library.filter('vehicle.*.*')) # 找到所有可以作为初始点的位置并随机选择一个 transform = random.choice(world.get_map().get_spawn_points()) # 在这个位置生成汽车 ego_vehicle = world.spawn_actor(ego_vehicle_bp, transform) # 再给它挪挪窝 location = ego_vehicle.get_location() location.x += 10.0 ego_vehicle.set_location(location) # 把它设置成自动驾驶模式 ego_vehicle.set_autopilot(True) # 我们可以甚至在中途将这辆车“冻住”,通过抹杀它的物理仿真 # actor.set_simulate_physics(False) Sensors搭建与汽车类似,我们先创建蓝图,再定义位置,设置传感器参数,然后再选择我们想要的汽车安装上去。不过,这里的位置都是相对汽车中心点的位置(以米计量)。我们还要对传感器定义它的callback function,定义每次仿真世界里传感器数据传回来后,我们要对它进行什么样的处理。 我添加了Lidar、IMU、GNSS传感器 # 雷达 # 创建蓝图 lidar_bp = blueprint_library.find('sensor.lidar.ray_cast') # 设置传感器参数 lidar_bp.set_attribute('channels', str(32)) lidar_bp.set_attribute('points_per_second', str(90000)) lidar_bp.set_attribute('rotation_frequency', str(40)) lidar_bp.set_attribute('range', str(20)) output_path = "/home/sydl/carlaData/" # 相对位置 lidar_location = carla.Location(0, 0, 2) lidar_rotation = carla.Rotation(0, 0, 0) lidar_transform = carla.Transform(lidar_location, lidar_rotation) # 选择我们想要的汽车安装上去 lidar = world.spawn_actor(lidar_bp, lidar_transform, attach_to=ego_vehicle) # 定义回调函数 lidar.listen(lambda point_cloud: point_cloud.save_to_disk(os.path.join(output_path, '%06d.ply' % point_cloud.frame))) # IMU IMU_bp = blueprint_library.find('sensor.other.imu') IMU_location = carla.Location(0, 0, 1) IMU_rotation = carla.Rotation(0, 0, 0) IMU_transform = carla.Transform(IMU_location, IMU_rotation) IMU = world.spawn_actor(IMU_bp, IMU_transform, attach_to=ego_vehicle) IMU.listen(lambda IMUData : print(IMUData)) # GNSS GNSS_bp = blueprint_library.find('sensor.other.gnss') GNSS_location = carla.Location(0, 0, 1.5) GNSS_rotation = carla.Rotation(0, 0, 0) GNSS_transform = carla.Transform(GNSS_location, GNSS_rotation) GNSS = world.spawn_actor(GNSS_bp, GNSS_transform, attach_to=ego_vehicle) GNSS.listen(lambda GNSSData : print(GNSSData))Carla可以设置很多传感器,可参考官方文档或者CARLA传感器详细文档介绍+python实例(持续更新ing) 当我们去观察仿真界面时,我们会发现,自己的视野并不会随我们造的小车子移动,所以经常会跟丢它。解决这个问题的办法就是把spectator对准汽车,这样小汽车就永远在我们的视野里了。 while True: # set the sectator to follow the ego vehicle spectator = world.get_spectator() transform = ego_vehicle.get_transform() spectator.set_transform(carla.Transform(transform.location + carla.Location(z=20), carla.Rotation(pitch=-90)))运行效果如图 参考官方文档 [carla入门教程]-5 使用ROS与carla通信 Github 源码编译安装与使用 mkdir -p ~/carla-ros-bridge/catkin_ws/src cd ~/carla-ros-bridge git clone --recurse-submodules https://github.com/carla-simulator/ros-bridge.git catkin_ws/src/ros-bridge cd catkin_ws rosdep update rosdep install --from-paths src --ignore-src -r catkin build修改~/.bashrc,在最后一行添加 source ~/carla-ros-bridge/catkin_ws/devel/setup.bash这样每次启动终端即完成ros初始化,比较方便 启动carla ros bridge。carla ros bridge也是一个carla client,所以运行前应确保carla server运行。 #roslaunch carla_ros_bridge carla_ros_bridge.launch roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch第二个选择会启动一个新窗口,我们可以手动操控车辆。如图所示:
这是由于 ~/.bashrc 中没有添加如下内容导致的,或者是make PythonAPI 的Python版本和ros使用的不对应 export CARLA_ROOT=~/Append/carla export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.13-py3.8-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carla如果是别的模块没找到,安装对应的包即可。 如下启动 carla ros bridge 时,创建的小车会包含carla支持的全部传感器,并将传感器数据发送到对应的 ros topic 中。对于车辆的控制也有相应的话题。 roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch
传感器、车辆等的信息可以在如下路径的文件中进行修改和配置。 ~/carla-ros-bridge/catkin_ws/src/ros-bridge/carla_spawn_objects/config/objects.json 激光雷达,可以看到是32线的 这样我们就可以在ros里使用这些信息了,比如跑一下Fast-Lio-SAM
carla_twist_to_control 的启动: roslaunch carla_twist_to_control carla_twist_to_control.launch利用rqt工具我们可以向 /carla/ego_vehicle/twist 话题中发布消息,之后就可以看到车辆动起来了。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |