Autoware.universe与Carla(二进制版)联调

news2024/11/17 23:24:29

文章目录

  • 一、Carla的使用
    • 1.1 二进制Carla的安装
    • 1.2 Carla API的使用
      • 1.2.1 增加行人流和车流
      • 1.2.3 改变服务器的时间,光照,天气
      • 1.2.3 手动控制车辆
      • 1.1.4 车辆的自动驾驶
  • 二、Universe与Carla联调
    • 2.1 设置OpenPlanner
    • 2.2 重新编译并运行


本文介绍了 Autoware.universe 与 Carla 二进制版的联调过程。Autoware.universe 是一个开源的自动驾驶软件平台,而 Carla 则是一个用于自动驾驶仿真的开源工具。将这两者联调起来可以在仿真环境中测试和验证 Autoware.universe 的功能和性能,为自动驾驶系统的开发和测试提供有力支持。其中Autoware.universe的安装参考我的另一篇文章:Ubuntu20.04安装Autoware.universe并与Awsim联调

一、Carla的使用

1.1 二进制Carla的安装

二进制包github地址:https://github.com/carla-simulator/carla/releases,下载第一个.tar.gz压缩包:
在这里插入图片描述
解压后可以直接运行,出现如下的服务器界面:

tar -zxvf CARLA_0.9.13.tar.gz
cd CARLA_0.9.13
./CarlaUE4.sh

在这里插入图片描述
去/home/autoware/CARLA_0.9.13/PythonAPI/examples下运行API:

python manual_control.py

即可开启Carla仿真驾驶,界面如下:
在这里插入图片描述
命令行选项:启动Carla时有一些可用的配置选项,它们可以按如下方式使用:

./CarlaUE4.sh -quality-level=Low

启动 CARLA 时,有一些配置选项可用:

  • carla-rpc-port=N:侦听端口 N 处的客户端连接。默认情况下,流式端口 Streaming port 设置为 N+1;
  • carla-streaming-port=N:指定用于传感器数据流的端口。 使用 0 获取随机未使用的端口。 第二个端口将自动设置为 N + 1;
  • quality-level={Low,Epic}:更改图形质量级别;
  • -carla-server:让 carla以服务的方式运行;
  • -benchmark -fps=15:引擎以1/15秒的固定时间逐步运行;

1.2 Carla API的使用

这里介绍常用的几个API,首先打开carla:./CarlaUE4.sh

1.2.1 增加行人流和车流

执行CARLA_0.9.13/PythonAPI/examples路径下的generate_traffic.py文件:

python generate_traffic.py -w 10 -n 10

在这里插入图片描述
可以看到,carla服务器中的街道上多了很多运动的车辆和行人。后面的参数 -n 10 -w 10分别代表车辆和行人的数量,这个脚本还有很多其他的参数:

  • --host #主机服务器ip
  • -p --port #端口
  • -n --number-of-vehicles #车辆数量
  • -w --number-of-walkers #行人数量
  • --safe #避免碰撞
  • --filterv #车辆滤波器
  • --filterw #行人滤波器
  • --generationv #限制某些车辆生成
  • --generationw #限制某些行人生成

1.2.3 改变服务器的时间,光照,天气

执行CARLA_0.9.13/PythonAPI/examples路径下的dynamic_weather.py文件

python dynamic_weather.py -s 5

参数-s 5意思是把天气变化加速了5倍。这个脚本里是按照仿真时间,修改服务器中设置天气的参数carla.WeatherParameters,按照一定的顺序自动的调整系统的光照和天气。光照条件包括:太阳高度和太阳角度;天气条件包括:云,雨,水坑,风,雾,湿度。
在这里插入图片描述
更多天气参数的设置可以查看/pythonAPI/python_api.md中的carla.WeatherParameters.

1.2.3 手动控制车辆

执行CARLA_0.9.13/PythonAPI/examples路径下的manual_control.py文件:

python manual_control.py

在这里插入图片描述

键盘B按键可以切换自动控制和人工控制,pygame操作手册如下:

按键功能备注
W前进↑ 键也可以前进
S刹车↓ 键也可以刹车
A/DA左转 D 右转← 也可以左转,→ 也可以右转
Q倒车档Q+W可以倒车
Space手刹-
P开启/关闭自动驾驶模式-
M自动档/手动档-
,和 .加减挡,减档 . 加档
CTRL + W按一下 CTRL + W,匀速前进车会一直以 60 km/h 的速度前进
L控制车灯切换雾灯、近光灯等切换
SHIFT + L切换远光灯-
Z/X转向灯Z 左转向,X 右转向
I车内照明灯-
TAB切换视角-
N切换不同类型的 camera 和 lidar每按下一次,sensor
[1-9]顺序切换切换不同类型的 camera 和 lidar按下数字键,可直接切换到对应sensor
G打开/关闭 毫米波雷达-
C切换天气Shift+C切换顺序和C相反
Backspace换车型-
V选地图图层Shift+V ,切换顺序和V 相反
B加载当前的地图图层Shift+B 卸载当前的地图图层
O打开/关闭所有车门-
T切换到车辆的自动测量记录传导在carla客户端界面显示
R记录车辆走行情况CTRL + R : 切换到 R做的记录
CTRL + P回放R的记录-
F1显示/不显示左侧sensor相关信息例如加速度,陀螺仪,GNSS等-
H可以弹出帮助命令-
ESC退出pygame-

1.1.4 车辆的自动驾驶

执行CARLA_0.9.13/PythonAPI/examples路径下的automatic_control.py文件

python automatic_control.py 

会弹出一个pygame窗口,车辆正在进行自动驾驶
在这里插入图片描述
到达终点后,自动关闭

二、Universe与Carla联调

参考文章:https://blog.csdn.net/yuteng12138/article/details/130102293

2.1 设置OpenPlanner

(1)下载拓展代码

cd ~/autoware_universe
mkdir op_carla && cd op_carla/
git clone https://github.com/hatem-darweesh/op_bridge.git -b ros2
git clone https://github.com/hatem-darweesh/op_agent.git -b ros2
git clone https://github.com/hatem-darweesh/scenario_runner.git

(2)从https://drive.google.com/drive/folders/1Or0CMS08AW8XvJtzzR8TfhqdY9MMUBpS下载Town01.pcd 和 Town01.osm地图。创建 Town01 文件夹,将 Town01.pcd 和 Town01.osm 复制到Town01_map 文件夹中。

  • Town01.pcd重命名为pointcloud_map.pcd
  • Town01.osm重命名为lanelet2_map.osm

(3)修改文件:op_carla/op_bridge/op_scripts/run_exploration_mode_ros2.sh,在第8行,如果不在同一台电脑上运行仿真,需要设置运行仿真的电脑的 IP 地址。如下:

export SIMULATOR_LOCAL_HOST=“192.168.11.5”

如果在本机上运行仿真需要修改为:

export SIMULATOR_LOCAL_HOST=“localhost”

在这里插入图片描述
(4)修改文件:op_carla/op_agent/start_ros2.sh,在第15行,按照实际的安装路径修改。

source ${YouPath}/autoware_universe/autoware/install/setup.bash

在第18行,按照实际的安装路径修改启动Autoware的launch文件路径,按照Town01的路径修改map_path。

ros2 launch \
  ${YouPath}/src/launcher/autoware_launch/autoware_launch/launch/autoware.launch.xml \
  map_path:=${YouPath}/autoware_universe/autoware/src/${map_name} \
  vehicle_model:=sample_vehicle \
  sensor_model:=sample_sensor_kit

(5)修改文件: src/launcher/autoware_launch/autoware_launch/launch/autoware.launch.xml
在第11行添加如下,用于将Carla点云转换为Autoware.universe使用的点云:

<arg name="launch_carla_interface" default="true" description="convert carla sensor data to autoware suitable format"/>

在第17行将launch_sensing_driver中的true改成false,关闭自带的传感器驱动,可以直接复制以下替换第17行。

<arg name="launch_sensing_driver" default="false" description="launch sensing driver"/>

在第23行将use_sim_time中的false改成true,使用仿真时间,可以直接复制以下替换第23行。

<arg name="use_sim_time" default="true" description="use_sim_time"/>

注意:这里改了之后,如果再使用非仿真测试时要改回来,否则将不能定位。另外也可以不改参数文件,在launch时添加参数,例如:

ros2 launch \
  ${YouPath}/src/launcher/autoware_launch/autoware_launch/launch/autoware.launch.xml \
  map_path:=${YouPath}/${map_name} \
  vehicle_model:=sample_vehicle \
  sensor_model:=sample_sensor_kit \
  use_sim_time:=true

在第52行添加如下,将Carla点云转化为Universe可用的点云:

  <!-- CARLA -->
  <group if="$(var launch_carla_interface)">
    <node pkg="carla_pointcloud" exec="carla_pointcloud_node" name="carla_pointcloud_interface" output="screen"/>
  </group>

(6)修改文件: src/sensor_kit/sample_sensor_kit_launch/sample_sensor_kit_launch/launch/gnss.launch.xml,在第4行将coordinate_system中的1改成2,坐标系使用MGRS,可以直接复制以下替换第4行。

<arg name="coordinate_system" default="2" description="0:UTM, 1:MGRS, 2:PLANE"/>

在第5行添加如下:

<arg name="plane_zone" default="0"/>

(7)修改文件:src/sensor_kit/sample_sensor_kit_launch/sample_sensor_kit_description/config/sensor_kit_calibration.yaml,由于修改较多,可以直接全部替换:

sensor_kit_base_link:
  camera0/camera_link:
    x: 0.7
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  camera1/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  camera2/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  camera3/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  camera4/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  camera5/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  traffic_light_right_camera/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  traffic_light_left_camera/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  velodyne_top_base_link:
    x: 0.0
    y: 0.0
    z: 0.8
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  velodyne_left_base_link:
    x: -0.5
    y: 0.0
    z: 0.8
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  velodyne_right_base_link:
    x: 0.5
    y: 0.0
    z: 0.8
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  gnss_link:
    x: 0.0
    y: 0.0
    z: 0.8
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  tamagawa/imu_link:
    x: 0.0
    y: 0.0
    z: 0.8
    roll: 0.0
    pitch: 0.0
    yaw: 0.0

(8)修改文件:src/sensor_kit/sample_sensor_kit_launch/sample_sensor_kit_description/config/sensors_calibration.yaml,由于修改较多,可以直接全部替换:

base_link:
  sensor_kit_base_link:
    x: 0.0
    y: 0.0
    z: 1.6
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  velodyne_rear_base_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0

(9)修改环境变量

gedit ~/.bashrc

根据安装位置修改路径后,再添加到环境变量中。

export CARLA_ROOT=/yourpath/carla
export SCENARIO_RUNNER_ROOT=/home/username/autoware_universe/op_carla/scenario_runner
export LEADERBOARD_ROOT=/home/username/autoware_universe/op_carla/op_bridge
export TEAM_CODE_ROOT=/home/username/autoware_universe/op_carla/op_agent
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/util
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla/agents
# 注意下面的文件名称要对,可以去Carla文件夹看看(我的是,3.7)
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla/dist/carla-0.9.13-py3.7-linux-x86_64.egg

在这里插入图片描述

2.2 重新编译并运行

把上面改动的几个包重新编译(ROS2需要把所有文件复制到install,因此包里任何文件修改均需重新编译)一下:

colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-select autoware_launch sample_sensor_kit_description

安装依赖:

pip install py-trees networkx tabulate transforms3d
sudo apt-get install ros-galactic-sensor-msgs-py

运行Carla服务器:

cd $CARLA_ROOT
./CarlaUE4.sh -quality-level=Epic -world-port=2000 -resx=800 -resy=600

在这里插入图片描述
再打开一个终端运行Universe,同时启动Carla ros2 bridge:

cd ${YouPath}/autoware_universe/op_carla/op_bridge/op_scripts
source ~/autoware_universe/install/setup.bash
./run_exploration_mode_ros2.sh

成功加载地图
在这里插入图片描述
自动驾驶测试:
在这里插入图片描述

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

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

相关文章

Nginx反向代理配置流式响应

Nginx 是通过缓存响应内容来处理请求的。也就是说&#xff0c;当 Nginx 接收到完整的响应后&#xff0c;才会将其发送给客户端&#xff0c;所以默认不支持流式响应&#xff0c;这里讲讲 Nginx 反向代理中怎么配置流式响应&#xff1f; 一、使用背景 最近使用 Egg.js 搭建自动化…

冠达管理:非银金融是什么?

非银金融&#xff08;Non-banking Financial Institutions&#xff0c;简称非银&#xff09;是指除了传统的银行以外的其他金融机构。与银行不同的是&#xff0c;非银金融机构没有颁发钱银的权利&#xff0c;但在金融市场中发挥着重要的效果。在全球范围内&#xff0c;非银金融…

每日刷题(翻转+二分+BFS)

食用指南&#xff1a;本文为作者刷题中认为有必要记录的题目 ♈️今日夜电波&#xff1a;凄美地—郭顶 1:10 ━━━━━━️&#x1f49f;──────── 4:10 &#x1f504; ◀️ ⏸ ▶️ ☰…

Android 标准语音识别框架:SpeechRecognizer 的封装和调用

前言 此前&#xff0c;笔者梳理了语音相关的两篇文章&#xff1a; 如何打造车载语音交互&#xff1a;Google Voice Interaction 给你答案&#xff1a;介绍的是 3rd Party App 如何通过 Voice Interaction API 快速调用系统的语音交互服务快速完成确认、选择的基础语音对话直面…

创建 github 项目,并自动化配置

一 新建项目 github 创建新项目&#xff0c;并自动化部署 二 github 到本地 三 自动化部署

苹果iOS17引入新功能:实时显示充电设施信息,续航焦虑不再

据外媒9to5mac报道&#xff0c;苹果公司计划在iOS 17中引入一项非常方便电动汽车车主的功能&#xff0c;即iPhone内置的地图应用将实时显示充电设施的可用性信息。在最新发布的iOS 17 Beta 1版本中&#xff0c;这一功能仍在开发阶段&#xff0c;尚缺少一些必要的数据。 据称&am…

【健康医疗】Axure用药提醒小程序原型图,健康管理用药助手原型模板

作品概况 页面数量&#xff1a;共 10 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;健康管理领域&#xff0c;用药助手 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本作品为「用药提醒」小程序原…

基于Java+SpringBoot+Vue的养老服务管理系统【源码+论文+演示视频+包运行成功】

博主介绍&#xff1a;✌csdn特邀作者、博客专家、java领域优质创作者、博客之星&#xff0c;擅长Java、微信小程序、Python、Android等技术&#xff0c;专注于Java技术领域和毕业项目实战战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏…

Linux面试笔试题(3)

54、统计磁盘空间或文件系统使用情况的命令是&#xff1a;(  A  ) A. df        B. dd   C. du        D. fdisk 在Linux系统中&#xff0c;df命令用于统计磁盘空间或文件系统使用情况。例如&#xff0c;要查看当前目录及其子目录下所有文件和文件夹…

linux 安装 kibana

首先下载 kibana https://www.elastic.co/cn/downloads/kibana 然后上传到linux /usr/local 目录下解压安装 修改config/kibana.yml 配置文件&#xff0c;将elasticsearch.hosts

攻防世界-supersqli

原题 解题思路 直接查找看不到明显的回显变化 先找回显变化数量 -1 order by 2 #如果是3列就报错&#xff0c;说明只有两列。接下来找数据库名称&#xff1a; -1 union select 1,databases # 结果是后端做了一些简单的过滤&#xff0c;需要更换查找语句。 -1; show …

python打包的exe文件运行时出现DLL load failed找不到DLL

一、问题&#xff0c;python开发的py代码文件通过"pyinstaller -c -F .\test.py"命令打包后在windows控制台(cmd.exe)运行报如下错误 D:\python\test>test.exe Traceback (most recent call last):File "test.py", line 7, in <module>File &qu…

轮胎侧偏刚度拟合估计

参考博客&#xff1a; carsim如何获得轮胎侧偏刚度_SSW.hani的博客-CSDN博客

面试算法变成题-必须掌握

一 多线程 1.1 死锁 1.1.1 死锁的案例 package com.ljf.day0814;/*** ClassName: DeadLock* Description: TODO* Author: admin* Date: 2023/08/21 09:31:16 * Version: V1.0**/ public class DeadLock {public static void main(String[] args) {Object objAnew Object(…

Delphi 安卓App自动升级

Androidapi.JNI.Support引用这个单元 procedure _InstallApk(Apk: string); varLFile: JFile;LIntent: JIntent; beginLFile : TJFile.JavaClass.init(StringToJString(ExtractFilePath(Apk)), StringToJstring(ExtractFileName(Apk)));LIntent : TJIntent.Create;LIntent.set…

【Vue】全家桶之Axios

文章目录 概述axios特点安装关于 ajax、fetch、axiosAxios APIAxios 实例请求配置响应结构默认配置拦截器错误处理取消请求取消请求请求体编码 概述 Axios是基于promise的网络请求库&#xff0c;可以在nodejs和浏览器中运行&#xff0c;是isomorphic的&#xff0c;意思就是同一…

fastgpt构建镜像

1.把client目录复制到服务器 .next和node_modules文件夹不用上传到服务器 在服务器目录运行 docker build -t fastgpt:1.0.3 . 构建服务 再运行 docker ps 就可以看到容器了

【从零学习python 】58.Python中的自定义异常及引发异常的方法

文章目录 自定义异常补充文件备份制作文件的备份 进阶案例 自定义异常 你可以用 raise 语句来引发一个异常。异常/错误对象必须有一个名字&#xff0c;且它们应是 Error 或 Exception 类的子类。 下面是一个引发异常的例子: class ShortInputException(Exception):自定义的异…

触摸屏与PLC之间 EtherNet/IP无线以太网通信

在实际系统中&#xff0c;同一个车间里分布多台PLC&#xff0c;用触摸屏集中控制。通常所有设备距离在几十米到上百米不等。在有通讯需求的时候&#xff0c;如果布线的话&#xff0c;工程量较大耽误工期&#xff0c;这种情况下比较适合采用无线通信方式。 本方案以MCGS触摸屏和…

Linux面试笔试题(6)

91、6块300G的硬盘做raid5&#xff0c;新的设备容量是多大&#xff08;C&#xff09; A 900G B 1800G C 1500G D 300G 6300G−300G 1500G 由于一块硬盘用于奇偶校验&#xff0c;所以设备容量将是1500G. Raid 5是一种磁盘阵列&#xff0c;将数据分散到多个硬盘上以提高性能和可…