ApolloCarla联合仿真基本操作

news2025/1/11 9:52:23

Apollo 系统架构

在这里插入图片描述CANBus:对接车辆的底盘,做一些数据的收发,如油门,方向盘转角
HDMap:

  • 给localization提供定位图层的信息
  • 给perception一些车道线、道路拓扑、红绿灯的信息(超时空感知),附注感知的预测。如关注某位置的红绿灯,划分前景和背景中的障碍物然后滤除背景中的障碍物(如车道线外)
    Prediction:预测行人或车辆的轨迹预测,预测会到哪个车道去
    Planning:借助高精地图给以提供一些车道信息如boundary和车道中心线。
    Control:把决策传到这个模块,control再将底盘命令发出进行交互

Apollo安装

git clone XXX
git checkout vXXXX
bash docker/scripts/dev_start.sh   #编译时间较长
bash docker/scripts/dev_into.sh    #进入apollo环境

文件夹结构

主要的任务模块可以在apollo/modules看到, common_msg模块是表示数据类型,dreamview用于数据可视化,drivers包括各种传感器的驱动
模块文件夹下:
/conf:参数配置文件,输入输出话题的订阅
/launch:启动模块的启动文件,会启动某个dag文件
/dag: 包括调用流程,加载的模块是什么,订阅的通道,使用的config文件
/XXX: 该模块下具体的方法(算法),可能有多个文件夹

基本指令

cyber_monitor  #监控个个topic的信息
cyber_launch start/stop modules/localization/..../xxx.launch #启动/关闭模块
cyber_recorder -h #可以显示出和数据集.bag相关的指令,比如bag包信息,播放等
bash scripts/bootstrap.sh  #打开可视化,可以进入一个网页端,默认为“mkz standard debug”,车型可选为“mkz lgsvl321”,地图可选“sunnyvale big loop”

播放数据之后,窗口内就会开始变化了。播放时可在终端按空格暂停,然后可以输入指令启动其他想要的模块,加载完成后就可以接着播放数据了。
在这里插入图片描述

Carla联合仿真环境搭建

Carla基本介绍

基于UE4开发的开源无人驾驶仿真器

  • PythonAPI
  • 自动驾驶传感器(还有理想化的collision detection传感器)
  • 用于规划和控制的快速仿真
  • 地图生成
  • 交通场景(open scenario)仿真
  • ROS集成
  • 自动驾驶baseline

0.9.15新特性

  • 新的车型以及地图
  • 基于Omniverse的素材导入
  • 基于OSM的三维场景生成

Carla安装方式

  • 源码安装:只有在要修改carla底层逻辑,或要导入自定义的车or地图时才如此安装,会安上一个ue4包,很占空间
  • docker安装:实现多平台使用
  • 预编译包安装:比较轻量,推荐使用

安装流程

版本:
apollo v8.0.0: https://github.com/ApolloAuto/apollo/tree/v8.0.0
CARLA 0.9.14: https://carla.org/2022/12/23/release-0.9.14

基础使用:

import carla
import random
import time
#客户端连接
actor_list = []
carla_client = carla.Client('172.17.0.1', 2000) 
#carla默认端口为2000
#172.17.0.1为dorcker默认地址
carla_client.set_timeout(4.0)
#切换地图
carla_client.load_world("Town03") #默认为town10
world = carla_client.get_world()
#添加动态天气
weather = carla.WeatherParameters(cloudiness=10.0, precipitation=10.0,
sun_altitude_angle=20.0)
#cloudiness=99时,天黑了
#sun_altitude_angle 太阳角度
world.set_weather(weather)
# 添加车辆
bp_lib = world.get_blueprint_library()
vehicle_bp = bp_lib.find('vehicle.tesla.model3')
spawn_points = world.get_map().get_spawn_points()
transform_v = random.choice(spawn_points)
vehicle = world.spawn_actor(vehicle_bp, transform_v)
actor_list.append(vehicle)
print('created %s' % vehicle.type_id)
# 设定视角
spectator = world.get_spectator()
#把视角调整成和车一致,一般carla的车原点在底盘中间,实现可以从车后方进行观察
transform = carla.Transform(vehicle.get_transform().transform(carla.Location(x=-4,
z=2.5)), vehicle.get_transform().rotation)
spectator.set_transform(transform)
#添加传感器
camera_bp = bp_lib.find('sensor.camera.rgb')
camera_transform = carla.Transform(carla.Location(x=1.5, z=2.4))
camera = world.spawn_actor(camera_bp, camera_transform, attach_to=vehicle)
actor_list.append(camera)
camera.listen(lambda image: image.save_to_disk('out/%06d.png' % image.frame))
camera.stop() #不stop的话会存很多很多照片
print('created %s' % camera.type_id)
# 随机添加车辆位置 仿真测试
for _ in range(0, 10):
transform = random.choice(spawn_points)
bp = random.choice(bp_lib.filter('vehicle'))
npc = world.try_spawn_actor(bp, transform)
if npc is not None:
actor_list.append(npc)
npc.set_autopilot(True, 6000)
print('created %s' % npc.type_id)
time.sleep(1)
vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=-1.0))
vehicle.set_autopilot(True, 6000)
print('destroying actors')
camera.destroy() #一定要把车和传感器销毁掉,否则下一次打开可能会报错
client.apply_batch([carla.command.DestroyActor(x) for x in actor_list])
print('done.')

还可以在终端跑脚本实现手动控制车辆
python manual_control.py

联合仿真

基础逻辑:carla中构建环境,信息传入apollo的算法,得到控制的结果后再传回carla实现车辆的控制

CARLA Apollo Bridge: https://github.com/guardstrikelab/carla_apollo_bridge?tab=readme-ov-file

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一台Linux服务jdk1.6 与 jdk1.8 并存,tomcat6+tomcat8 并存

Linux jdk1.6,1.8 tomcat6 tomcat8 并存 需求场景: 有一个项目 原来是 jdk1.6tomcat6 部署的,现在需要进行项目架构升级 项目需要适配jdk1.8 然后用 jdk.8 tomcat 8进行部署,然后下架 jdk1.6 的linux服务 现在有一台 jdk.8 tomcat 8的linu…

【办公软件】手机当电脑摄像头Iriun Webcam软件安装与试用

家里电脑是台式的没有摄像头,但老安卓手机有一台。本来想用小爱摄像头做电脑摄像头,但是发现像素有点差,捣鼓了半天没成功。看网上别人都用旧手机来当电脑摄像头,并且也能使用音频,所以还是用旧手机做摄像头比较香。 …

Java 常见缓存详解以及解决方案

一. 演示Mybatis 一级缓存 首先我们准备一个接口 两个实现的方法, 当我们调用这个queryAll()方法时我们需要调用selectAll()方法来查询数据 调用此接口实现效果 这个时候我们就可以发现了问题,我们调用方法…

车速预测 | Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 车速预测 | Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图) 程序设计 完整程序和数据获取方式:私信博主回复Matlab基于RBF径向基神经网络的车速预测模型…

电脑重装系统有什么好处和坏处?利弊分析

在数字时代,电脑已成为我们日常生活和工作中不可或缺的工具。随着时间的推移,电脑可能会出现各种问题,如运行缓慢、软件冲突、病毒侵入等。此时,许多人会选择重装系统作为解决问题的方法。重装系统既有好处也有坏处。本文将深入探…

GC6109——双通道5V低电压步进电机驱动芯片,低噪声、低振动,应用摄像机,机器人等产品中

GC6109是双通道5V低电压步进电机驱动器,具有低噪声、低振动的特点,特别适用于相机的变焦和对焦系统,万向节和其他精密、低噪声的STM控制系统。该芯片为每个通道集成了256微步驱动器。带SPl接口,用户可以方便地调整驱动器的参数。内…

Java版直播商城:电商源码、小程序、三级分销及 免 费 搭 建 方案

一、技术选型 java开发语言:java是一种跨平台的编程语言,适用于大型企业级应用开发。使用java开发直播商城可以保证系统的稳定性和可扩展性。 spring boot框架:spring boot是一个快速构建spring应用的框架,简化了开发过程&#xf…

Elasticsearch windows开箱即用【记录】

一、准备工作 安装ES之前要在本机安装好JDK,对应的兼容性见官网链接:https://www.elastic.co/cn/support/matrix ES官网链接:https://www.elastic.co/cn/, 我本机安装的是JDK8,测试使用的是7.3.0版本的ES和Kibana。 1、首先去…

【2024最新-python3小白零基础入门】No3.python六大数据类型学习

文章目录 前言一、 Number(数字)1.1 数字类型分类1.2 数字类型转换1.3 数字运算 二、 String(字符串)2.1 字符串的创建: 2.2 字符串的基本操作:2.3 字符串常用方法: 三、 List(列表&…

Vulnhub靶机:Corrosion 2

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:corrosion:2(10.0.2.13) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entry/c…

Python教程39:使用turtle画美国队长盾牌

---------------turtle源码集合--------------- Python教程36:海龟画图turtle写春联 Python源码35:海龟画图turtle画中国结 Python源码31:海龟画图turtle画七道彩虹 Python源码30:海龟画图turtle画紫色的小熊 Python源码29&a…

大创项目推荐 深度学习手势检测与识别算法 - opencv python

文章目录 0 前言1 实现效果2 技术原理2.1 手部检测2.1.1 基于肤色空间的手势检测方法2.1.2 基于运动的手势检测方法2.1.3 基于边缘的手势检测方法2.1.4 基于模板的手势检测方法2.1.5 基于机器学习的手势检测方法 3 手部识别3.1 SSD网络3.2 数据集3.3 最终改进的网络结构 4 最后…

iOS14 Widget 小组件调研

桌面小组件是iOS14推出的一种新的桌面内容展现形式。 根据苹果的统计数据,“一般用户每天进入主屏幕的次数超过90次”,如果有一个我们应用的小组件在桌面,每天都有超过90次曝光在用户眼前的机会,这绝对是一个顶级的流量入口。 “…

LCD—液晶显示中英文

本节主要介绍以下内容: 字符编码 字模 各种模式的液晶显示字符实验 本节字符编码说明参考网站 字符编码及转换测试:导航菜单 - 千千秀字 Unicode官网:http://www.unicode.org。 一、字符编码 由于计算机只能识别0和1,文字…

TensorFlow相关组件的安装

安装Anaconda3 安装Anaconda3的时候可以安装在任意磁盘中,在勾选path的时候全部勾选即可。更换Anaconda3的下载源为清华大学源,在此期间不要打开Anaconda3,在cmd中依次输入以下即可: conda config --add channels https://mirro…

基于TI TPSXX系列 Buck电路应用计算-外围器件详细计算过程

TPS54202 Buck电路应用计算 1、电气特性2、内部框图3、典型应用电路4、设计需求5、计算EN引脚电阻6、FB引脚电阻估算7、查看反馈电压电压基准8、输入电容计算10、FB引脚反馈电阻计算11、功率电感计算12、输出电容计算13、前馈电容计算15、Layout布局 TPS54202-中文版 1、电气特…

软件测试|详解 Pytest 参数化:简化测试用例的编写

简介 Pytest 是一个广泛使用的 Python 测试框架,它提供了丰富的功能来编写和执行测试用例。其中一个强大的特性是参数化,它允许我们通过一种简洁的方式运行多个输入参数的相似测试用例,从而减少冗余的代码。本文将详细介绍 Pytest 的参数化功…

招投标系统是Electron的纯内网编辑Office Word,可以设置部分区域可编辑,其他的地方不能编辑吗?

问题: 我们是招投标系统的开发公司,框架是用的Electron,需要在纯内网的环境下编辑Office Word,可以设置部分区域可编辑,其他的地方不能编辑吗(如下红框位置)并且在用户忘记填写一些区域的时候做…

linux kernel:devres模块架构分析

参考文档: https://www.kernel.org/doc/html/latest/driver-api/driver-model/devres.html https://www.cnblogs.com/sammei/p/3498052.html devres in linux driver devres: Managed Device Resource device resource managementdevres_alloc()动态申请内存分配…

【Python】编程练习的解密与实战(二)

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《Python | 编程解码》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 ​ 目录 🪐1. 初识Python …