Carla基础 | Carla预编译版安装与ROS联合仿真图文教程

目录

  • 1 什么是Carla?
  • 2 Carla预编译版安装
    • 2.1 独立显卡配置
    • 2.2 安装ROS
    • 2.3 启动虚拟环境
    • 2.4 安装Carla预编译版
    • 2.5 安装carla-ros-bridge
  • 3 测试案例
  • 常见问题

1 什么是Carla?

Carla是由西班牙巴塞罗那自治大学计算机视觉中心指导开发的开源仿真模拟器,旨在帮助开发者设计、训练和评估自动驾驶系统,其特点是

  • 高度可定制的城市环境: Carla提供了一个开放且可定制的城市环境,包括道路、车辆、行人、交通信号灯等元素,可以根据需要进行调整和修改;
  • 真实感的仿真环境: Carla致力于提供高度真实的仿真环境,使开发者能够在虚拟世界中测试各种自动驾驶算法和系统,以及评估它们在真实世界中的表现;
  • 开放的API和工具: Carla提供了丰富的API和工具,使开发者能够轻松地与仿真环境交互,并自定义和扩展平台以满足其特定需求;
  • 多种传感器模拟: Carla支持模拟各种传感器,包括摄像头、激光雷达、毫米波雷达等,使开发者能够测试不同传感器组合的性能;
  • 支持多种平台: Carla可在Windows、Linux和macOS等多个平台上运行,为开发者提供了灵活的选择;
  • 活跃的社区支持: Carla拥有一个活跃的开发者社区,提供文档、教程和技术支持,帮助开发者更好地利用该平台进行自动驾驶研究和开发。

在这里插入图片描述
CarlaROS都是开源的软件平台,具有高度的可定制性和灵活性。通过将两者结合使用,开发者可以根据自己的需求定制和扩展仿真环境和功能,从而更好地满足自动驾驶系统开发的需求。例如,通过CarlaROS的联合使用,开发者可以在仿真环境中模拟各种传感器,并使用ROS进行数据采集、处理和分析,从而加速自动驾驶系统的开发和优化。

2 Carla预编译版安装

本文系统环境:

  • Carla 0.9.12
  • Ubuntu 20.04
  • Python 3.7

2.1 独立显卡配置

本文只介绍图形化安装方案,更多安装方式请看ROS从入门到精通0-2:Win10+Ubuntu双系统安装、配置、卸载保姆级图文教程

  1. 搜索Additional Drivers

    在这里插入图片描述
  2. 直接选择驱动,点击Apply Changes安装即可。

    在这里插入图片描述
  3. 重启设备后输入
nvidia-smi

出现以下界面则安装成功

在这里插入图片描述

2.2 安装ROS

本文只介绍ROS1的最基本安装过程,更详细的安装、卸载教程请看ROS从入门到精通0-3:ROS简介、安装与常见问题,ROS2的环境配置请看ROS2从入门到精通0-2:ROS2简介、对比ROS1与详细安装流程

  1. 设置软件源
    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
    
  2. 设置秘钥
    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
    
  3. 更新软件源
    sudo apt update
    
  4. 安装ROS(推荐安装桌面完整版安装——包含ROSrqtrviz、2D/3D仿真器等)
    # kinetic
    sudo apt install ros-kinetic-desktop-full
    # noetic
    sudo apt install ros-noetic-desktop-full
    # melodic
    sudo apt install ros-melodic-desktop-full
    
  5. ROS环境变量配置
    # kinetic
    echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
    # noetic
    echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
    # melodic
    echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
    

2.3 启动虚拟环境

新建名为carla的虚拟环境

conda create -n carla python=3.7

并启动

conda activate carla

接下来的所有操作都在虚拟环境中进行。对虚拟环境不熟悉的请看Anaconda安装与Python虚拟环境配置保姆级图文教程(附速查字典)

2.4 安装Carla预编译版

进入Carla官网

在这里插入图片描述

下载需要的Carla版本到本地

在这里插入图片描述
安装CarlaPython接口

cd ./PythonAPI/carla/dist
pip install carla-0.9.12-cp37-cp37m-manylinux_2_27_x86_64.whl

配置环境变量

sudo vim ~/.bashrc

增加Carla相关配置

# Carla
export CARLA_ROOT=/home/winter/AutoDriving/carla
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.12-py3.7-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carla

接着启动Carla即可,遇到问题请看常见问题小节

./CarlaUE4.sh

在这里插入图片描述

2.5 安装carla-ros-bridge

首先提供apt安装方式

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1AF1527DE64CB8D9
sudo add-apt-repository "deb [arch=amd64] http://dist.carla.org/carla $(lsb_release -sc) main"
sudo apt-get update
sudo apt-get install carla-ros-bridge

但这个方式容易被墙,目前没找到好的解决方案

Err:13 http://dist.carla.org/carla focal InRelease                             
  Could not connect to dist.carla.org:80 (34.227.255.250), connection timed out
Reading package lists... Done                     
W: Failed to fetch http://dist.carla.org/carla/dists/focal/InRelease  Could not connect to dist.carla.org:80 (34.227.255.250), connection timed out
W: Some index files failed to download. They have been ignored, or old ones used instead.

所以本文采用源码编译

  1. 创建ROS工作空间
    mkdir -p ~/carla-ros-bridge/catkin_ws/src
    
  2. 下载carla-ros-bridge源码
    cd ~/carla-ros-bridge
    git clone --recurse-submodules https://github.com/carla-simulator/ros-bridge.git catkin_ws/src/ros-bridge
    
  3. 安装依赖
    cd catkin_ws
    rosdep update
    rosdep install --from-paths src --ignore-src -r
    
  4. 编译
    catkin_make
    
  5. 安装pyton依赖
    cd src/ros-bridge/
    pip install -r requirements.txt
    
  6. 设置环境变量
    sudo vim ~/.bashrc
    
    添加
    # Carla-ros bridge
    source ~/AutoDriving/carla-ros-bridge/catkin_ws/devel/setup.bash
    

3 测试案例

  • 终端1:启动Carla
    ./CarlaUE4.sh -prefernvidia
    
  • 终端2:启动carla_ros_bridge测试用例
    roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch town:='town01'
    
    其中的参数含义如下
    • use_sim_time: 应将此设置为True,以确保ROS使用仿真时间而不是系统时间。此参数将使ROS/clock话题与CARLA仿真时间同步。
    • hostport: 使用Python客户端连接到CARLA的网络设置。
    • timeout: 等待成功连接服务器的时间
    • passive: 被动模式用于同步。当启用时,ROS桥将暂时处于后台,等待所有传感器的所有预期数据都被接收。
    • synchronous_mode: 如果为false,则数据在每次world.on_tick()和每次sensor.listen()回调时发布。如果为true(默认值),则ROS桥在下一次tick之前等待所有预期的传感器消息。这可能会减慢整体仿真速度,但可以确保可重现的结果。
    • fixed_delta_seconds: 仿真步骤之间的仿真时间(增量秒)。它必须小于0.1
    • ego_vehicle: 角色名称用于识别自我车辆。相关话题将被创建以便可以从ROS对这些车辆进行控制。
    • town: 可以使用可用的CARLA城镇(例如,town01)或一个OpenDRIVE文件(以.xodr结尾)
    • register_all_sensors: 如果为false,则仅注册由桥梁生成的传感器;如果为true,则注册仿真中存在的所有传感器。

在这里插入图片描述
在这里插入图片描述
B后可以控制车跑起来

  • 终端3Rviz可视化

    Rviz不熟悉的可以看ROS从入门到精通2-1:机器人3D可视化工具——Rviz。运行

    rosrun rqt_graph rqt_graph
    

    可以看到如下所示的话题网络,说明Carla传感器数据通信正常

    在这里插入图片描述
    打开Rviz订阅相关话题可以看到

    在这里插入图片描述
    至此,Carla预编译版安装与ROS联合仿真的基本流程结束

常见问题

  1. 运行./CarlaUE4.sh后报错

    MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
    
    X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)
      Major opcode of failed request:  149 ()
      Minor opcode of failed request:  4
      Resource id in failed request:  0x340003b
      Serial number of failed request:  298
      Current serial number in output stream:  308
    terminating with uncaught exception of type std::__1::system_error: mutex lock failed: Invalid argument
    Signal 6 caught.
    Segmentation fault (core dumped)
    

    解决方案:这实际上是两个问题,首先

    sudo sysctl dev.i915.perf_stream_paranoid=0
    

    接着采用

    ./CarlaUE4.sh -prefernvidia
    

    运行Carla即可

  2. ImportError: No module named transforms3d.euler

    解决方案:在虚拟环境中

    pip install transforms3d
    
  3. CARLA python module version 0.9.13 required. Found: 0.9.12

    解决方案:修改carla-ros-bridge中默认的Carla版本。在carla-ros-bridge/catkin_ws/src/ros-bridge/carla_ros_bridge/src/carla_ros_bridge/CARLA_VERSION中修正为0.9.12即可

  4. 连接超时:RuntimeError: time-out of 2000ms while waiting for the simulator, make sure the simulator is ready and connected to localhost:2000

    解决方案:修改carla-ros-bridge/catkin_ws/src/ros-bridge/carla_ros_bridge/launch/carla_ros_bridge.launch中的

    <!--arg name='timeout' default='2'/>等待接收仿真器的时间 单位 s-->
    <arg name='timeout' default='200'/>
    

🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/594519.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目管理-项目沟通管理

项目管理&#xff1a;每天进步一点点~ 活到老&#xff0c;学到老 ヾ(◍∇◍)&#xff89;&#xff9e; 何时学习都不晚&#xff0c;加油 1.项目沟通管理-主要内容 项目沟通管理过程--重点&#xff1a; ①ITTO 输入&#xff0c;输出工具和技术。 ②问题和解决方案。 ③论文…

爆火4年后,露营的风还能吹多久? | 最新快讯

五一假期你去露营了吗&#xff1f; 文 | 趣解商业&#xff0c;作者 | 刘亮 “不是说露营不火了吗&#xff1f;为何订个营地如此困难&#xff1f;”江女士疑惑地说&#xff0c;她原本计划“五一”期间带家人前往浙江安吉游玩&#xff0c;但早在4月中旬咨询时就已经无法预约。 露…

构造,CF989C. A Mist of Florescence

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 989C - Codeforces 二、解题报告 1、思路分析 题目让构造网格图…

学术咸鱼入门指南(1)

学术基础素养 一.巧用工具管理文献&#xff0c;形成自己的文献体系 养成习惯的第一步&#xff1a;文献命名 当你下载完一篇文献&#xff0c;应该做的第一步就是给文献重新命名。命名的逻辑可以随自己的喜好来&#xff0c;可以按照“发表年份作者文章标题”。 也可以使用文献…

hadoop启动后没有namenode,datanode等解决方法

之前用的是虚拟机&#xff0c;在虚拟机上安装的hadoop&#xff0c;但是后来&#xff0c;电脑恢复出厂设置了&#xff0c;什么都重新开始。就在本地安装 Linux 子系统。 但是&#xff0c;有时候start-dfs.sh后&#xff0c;jps出现错误。 像这种拒绝连接 解决办法就是如下&…

​可视化大屏C位图:3D模型,可视化大屏的画龙点睛之处

Hello&#xff0c;我是大千UI工场&#xff0c;本期可视化大屏的焦点图&#xff08;C位&#xff09;分享将图表作为焦点图的情形&#xff0c;欢迎友友们关注、评论&#xff0c;如果有订单可私信。 3D模型在可视化大屏中有很大的价值&#xff0c;以下是一些相关的优点&#xff1a…

【平时工作中的各种术语__持续更新~~~~】

中文&#xff1a; 1、jar包 JAR包&#xff08;Java Archive Package&#xff09;是一种将多个Java类文件以及与它们相关的元数据和资源&#xff08;如文本、图片等&#xff09;打包到一个单一文件中的归档工具。它基于ZIP文件格式。JAR文件主要用于分发和部署Java应用程序。J…

机器学习入门之模型性能评估与度量

文章目录 性能评估误差欠拟合和过拟合模型选择与数据拟合 性能度量二分类的混淆矩阵查全率查准率F1分数 P-R曲线ROC曲线AUC 性能评估 机器学习的模型有很多&#xff0c;我们在选择的时候就需要对各个模型进行对比&#xff0c;这时候就需要一个靠谱的标准&#xff0c;能够评估模…

Redis 实战之RDB文件结构

RDB文件结构 databases 部分key_value_pairs 部分value 的编码字符串对象列表对象集合对象哈希表对象有序集合对象INTSET 编码的集合ZIPLIST 编码的列表、哈希表或者有序集合 总结AOF持久化的实现命令追加 AOF 文件的写入与同步小结 在本章之前的内容中&#xff0c; 我们介绍了…

ChatGPT 4.0 直接用 !!!Code Copilot编程大模型、DALL-E AI绘图、绘制流程图、上传文件

嗨&#xff0c;你好呀&#xff0c;我是哪吒。 这一年最让人揪心的热点&#xff0c;就是各种层出不穷的AI技术。 原以为它只是短暂霸屏&#xff0c;但现实却赤裸裸展示了&#xff0c;什么叫AI抢走你的饭碗&#xff0c;连招呼都不打一声! 什么策划方案、公众号文案、营销卖点、…

计算机网络4——网络层7 VPN 和NAT,MPLS

文章目录 一、虚拟专用网VPN1、介绍2、工作原理 二、网络地址转换1、介绍2、工作原理2、注意事项 三、多协议标签交换MPLS1、介绍2、MPLS 的工作原理1&#xff09;基本工作过程2&#xff09;转发等价类 FEC 3、MPLS首部的位置与格式4、新一代的 MPLS 一、虚拟专用网VPN 1、介绍…

【Linux系统化学习】网络套接字(编写简单的UDP服务端和客户端)

目录 理解源IP地址和目的IP地址 认识端口号 端口号和进程ID的区别 源端口号和目的端口号 认识TCP和UDP协议 TCP协议 UDP协议 网络字节序 socket编程接口 socket常见API sockaddr结构 简单的UDP网络程序 UDP服务端 创建套接字 填充本地网络信息 绑定 收取消息 …

selenium 4.x 之验证码处理(python)

验证码处理 一般情况公司如果涉及web自动化测试需要对验证码进行处理的方式一般有一下几种&#xff1a; 关闭验证码功能&#xff08;开发处理&#xff09;设置万能验证码&#xff08;开发处理&#xff09;使用智能识别库进行验证 通过第三方打码平台识别验证码 1. 跳过验证功…

Activity工作流基本知识点

1.概念 工作流(Workflow)&#xff0c;就是“业务过程的部分或整体在计算机应用环境下的自动化”&#xff0c;它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使此目标的…

MySql#MySql数据库基础

目录 一、什么是数据库 二、主流数据库 三、基本使用 1.连接服务器 2.使用 1.查看你数据库 2.创建数据库 ​编辑 ​编辑 ​编辑​编辑 3.使用数据库 ​编辑 4.创建数据库表 5.表中插入数据 6.服务器&#xff0c;数据库&#xff0c;表之间的关系 四、MySQL架构…

AI图书推荐:AI在语言学习教育领域的应用和挑战

这本书《AI在语言学习教育领域的应用和挑战》&#xff08;AI in Language Teaching, Learning, and Assessment&#xff09;由Fang Pan编辑&#xff0c;出版于IGI Global&#xff0c;主要探讨了人工智能&#xff08;AI&#xff09;在语言教育领域的应用、挑战以及潜在的益处。 …

Vue踩坑,less与less-loader安装,版本不一致

无脑通过npm i less -D安装less之后&#xff0c;继续无脑通过npm i less-loader -D安装less-loader出现如下错误&#xff1a; 解决方法&#xff1a; 1) npm uninstall less与 npm uninstall less-loader 2) 直接对其版本&#xff1a; npm i less3.0.4 -D npm i less-loader…

Jackson 中使用 Optional

介绍 在本文中&#xff0c;我们会对 Optional 类进行一些说明&#xff0c;并且会解释下如果在使用 Optional 类的时候可能在 Jackson 中进行序列化和反序列化的过程中出现的问题。 针对上面的问题&#xff0c;本文会将会介绍在 Jackson 中如何处理 Optional 对象&#xff0c;…

vue2项目升级到vue3经历分享3

当初花了1个半月将十几个微服务从mybatis升级为mybatis-plus&#xff0c;就很自信的认为前端vue2升级到vue3也不过so so&#xff0c;世界过程中却是折腾&#xff0c;写法乱七八糟&#xff0c;不兼容的问题一大堆。 1 操作dom元素 this.$refs.subject[index].$children[0].$chil…

「 网络安全常用术语解读 」通用配置枚举CCE详解

1. 背景介绍 NIST提供了安全内容自动化协议&#xff08;Security Content Automation Protocol&#xff0c;SCAP&#xff09;为漏洞描述和评估提供一种通用语言。SCAP组件包括&#xff1a; 通用漏洞披露(Common Vulnerabilities and Exposures, CVE)&#xff1a;提供一个描述…