Ubuntu18.04搭建AirSim+ROS仿真环境

2023-05-16

AIRSIM在UBuntu 18.04上构建的官网文档

一、安装UE4引擎

AIRSIM是依赖于UE4引擎实现的,因此在安装AIRSIM之前要安装UE4引擎。

1、获取UE4的github许可

在Ubuntu上安装UE4引擎需要从源文件进行编译,因此我们需要访问UE4的github仓库。但想要访问UE4的github仓库,我们就必须建立github与UE4许可的链接,否则直接访问UE4的github仓库时就会404 Not Found。

首先在虚幻4官网注册账号,注册好账号之后进入个人/CONNECTIONS/ACCUNTS中,选择GITHUB进行关联,关联好后会EPIC会发送邮件到github账号邮箱中邀请你加入开发团队,在github上接受邀请后即可获取UE4的github仓库访问许可。这个时候再进入UE4的github仓库就可以正常进入了。

2、安装UE4

根据AIRSIM官方文档推荐,我选择下载4.25版本的UE4(更具体的是4.25.3,这是4.25的最新版本)

下载文件后解压,打开终端,执行以下命令进行编译,注意编译期间会下载几十GB资源,且不要使用make -j指令加速

1.进入工程文件夹

cd UnrealEngine-4.25.4-release/

2.运行脚本,配置依赖环境

./Setup.sh
//运行成功输出信息
**********  SUCCESS ****************
Setup successful.

3.运行工程配置脚本

./GenerateProjectFiles.sh
//运行成功输出信息
Setting up Unreal Engine 4 project files...

Fixing inconsistent case in filenames.
Setting up Mono
Generating data for project indexing... 100%
Generating data for project indexing... 100%
Writing project files... 100%
Generating data for project indexing... 100%
Generating data for project indexing... 100%
Generating data for project indexing... 100%
Generating data for project indexing... 100%
Writing project files... 100%

4.编译UE4

make

报错如下

Using llvm-ar : /home/zhangman/UnrealEngine-4.25.4-release/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v16_clang-9.0.1-centos7/x86_64-unknown-linux-gnu/bin/llvm-ar
Using fast way to relink  circularly dependent libraries (no FixDeps).
------------------------------
ERROR: Cannot use an old toolchain (missing ToolchainVersion.txt file, assuming version earlier than v11)
Makefile:307: recipe for target 'CrashReportClient-Linux-Shipping' failed
make: *** [CrashReportClient-Linux-Shipping] Error 6

根据这篇博客使用如下命令解决,其中命令前后两个部分的v15_clang-8.0.1-centos7要替换成报错中显示的版本,我这里是v16_clang-9.0.1-centos7

echo "v15_clang-8.0.1-centos7" > Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v15_clang-8.0.1-centos7/ToolchainVersion.txt

二、安装AirSim

1.克隆仓库

git clone https://github.com/Microsoft/AirSim.git

这一步可能会遇见如下报错

error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: The remote end hung up unexpectedly
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败

这是由于墙限制了文件传输大小,运行如下命令即可解决

git config --global http.postBuffer 524288000

这个时候在运行git clone https://github.com/Microsoft/AirSim.git可能会报错

fatal: unable to access 'https://github.com/Microsoft/AirSim.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.

这时候需要讲上述命令中的https更改为git,即可成功克隆

git clone git://github.com/Microsoft/AirSim.git

这几个问题发生的原因还不清楚,只是实测这样的解决办法可行,有清楚的大佬还麻烦评论区告知

2.配置AirSim依赖环境

使用AirSim中的setup.sh来配置依赖环境

cd AirSim
./setup.sh

成功输出如下

************************************
AirSim setup completed successfully!
************************************

3.编译AirSim

编译AirSim有两种模式可以选择,release在编译过程中会优化代码使得AirSim达到最优性能,但如果后期要对AirSim进行二次开发时候会难以分析测试。debug则不会优化代码,但方便后期二次开发调试。

./build.sh #普通release编译
./build.sh --debug #to build in debug mode

成功输出如下

==================================================================
 AirSim plugin is built! Here's how to build Unreal project.
==================================================================
If you are using Blocks environment, its already updated.
If you are using your own environment, update plugin using,
rsync -a --delete Unreal/Plugins path/to/MyUnrealProject

For help see:
https://github.com/Microsoft/AirSim/blob/master/docs/build_linux.md
==================================================================

三、UE + AirSim联合测试

1、车辆仿真测试

1.开启UE4引擎

cd UnrealEngine-4.25.4-release/Engine/Binaries/Linux
./UE4Editor

image-20211227101528062

2.打开AirSim项目

点击界面中的更多,选择/AirSim/Unreal/Environments/Blocks/下面的Blocks uproject工程文件,点击打开项目。首次打来会提示The project was made with a different version of the Unreal Engine,要求进行转换,点击Convert in-place(原位转换)来进行项目转换,转换完成后,UE4会重新加载,进入到项目仿真页面中

image-20211227102241614

3.仿真验证

点击运行,出现提示选择yes为车辆仿真,选择no为无人机仿真,这里选择yes,仿真项目中会出现一辆车,按上下左右键可以控制起运行,即运行正常。

image-20211227102558565

2、无人机仿真测试

1.打开AirSim无人机仿真界面

同上,当提示选择yes为车辆仿真,选择no为无人机仿真时选择no,界面出现四旋翼无人机一台

2.运行无人机控制脚本

官方提供的测试控制脚本需要在Python3的环境下运行,如果Ubuntu中安装了ROS,其自带版本是Python2.7,因此我这里使用了conda为AIRSIM创建了一个新环境

conda create --name AIRSIM python=3.6
conda activate AIRSIM

安装两个依赖

pip install opencv-python
pip install msgpack-rpc-python

运行无人机控制脚本

cd ~/AirSim/PythonClient/multirotor
python hello_drone.py 

无人机成功起飞,终端输出控制信息

...
    'velocity': <Vector3r> {   'x_val': 0.0,
    'y_val': 0.0,
    'z_val': 0.0}},
    'is_valid': True,
    'time_stamp': 1640574634647096064}
Press any key to takeoff

四、AIRSIM的ROS功能包测试

1、编译AIRSIM

官方文档中需要编译AIRSIM,但我们前面安装AIRSIM的时候已经编译过了,因此我认为这一步应该不是必要的,但还是按照官方来吧

cd AirSim;
./setup.sh;
./build.sh --debug

2、编译AIRSIM的ROS包

1.安装GCC-8和G+±8

sudo apt install gcc-8
sudo apt install g++-8

注意,虽然我们安装了gcc-8和g++ -8,但其默认版本仍是7,因此后面编译的时候应手动指明起版本

2.编译ROS包

cd ros
catkin build -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8

成功输出

[build] Summary: All 3 packages succeeded!                                     
[build]   Ignored:   None.                                                     
[build]   Warnings:  1 packages succeeded with warnings.                       
[build]   Abandoned: None.                                                     
[build]   Failed:    None.                                                     
[build] Runtime: 48.6 seconds total.                                           
[build] Note: Workspace packages have changed, please re-source setup files to use them.

3.更新环境变量

source devel/setup.bash

4.测试

更新环境变量后运行

roslaunch airsim_ros_pkgs airsim_node.launch

不报错

roslaunch airsim_ros_pkgs rviz.launch

不报错,正确打开rviz,则说明编译成功

五、UE4+AIRSIM+ROS联合运行

1.拷贝setting文件

这一步应该是AIRSIM在运行仿真的时候,只会从Documents/AirSim路径下读取settings.json文件作为仿真配置,因此我们需要讲AIRSIM提供的测试配置文件拷贝到该路径下

cd AirSim/ros/src/airsim_tutorial_pkgs/settings
cp front_stereo_and_center_mono.json ~/Documents/AirSim/settings.json

2.使用UE4运行AIRSIM仿真环境

cd UnrealEngine-4.25.4-release/Engine/Binaries/Linux/
./UE4Editor

选择AIRSIM工程文件运行,由于我们的配置文件是针对无人机的,因此我们选择无人机仿真页面

3.开启AIRSIM的node节点

打开新终端

cd AirSim/ros
source devel/setup.bash
roslaunch airsim_ros_pkgs airsim_node.launch

4.运行无人机控制节点

打开新终端

cd AirSim/ros
source devel/setup.bash
roslaunch airsim_tutorial_pkgs front_stereo_and_center_mono.launch

rviz中正常显示无人机传感器数据,测试成功

image-20211227120615653

六、仿真配置

1、更改仿真环境

AIRSim已经为我们搭建了一些仿真环境,我们可以到其网站下载

下载好后解压,以AIRSIMNH环境为例,进入如下路径运行仿真环境

cd AirSimNH/LinuxNoEditor
./AirSimNH.sh

然后参照第五节中的3小节和4小节即可完成新仿真环境中的传感器数据获取

2、更改仿真模型车辆或飞机参数

请更改~/Documents/AirSim路径下的settings.json文件,注意文件名需要保持为settings.json,AIRSIM在进行仿真的时候默认从该文件加载仿真车辆或飞机参数。

具体修改方法见[官方文档](

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu18.04搭建AirSim+ROS仿真环境 的相关文章

  • Python 实现 Dijkstar 路径规划算法

    Dijstar 最短路径算法 用于计算起始点到最终点的最短路径 一般采用的是贪心算法策略 原理可以参考 图解 Open list 和 close list 环境 Terminal 需要预先安装两个库 matplotlib 和 math pi
  • 思岚RPLIDAR A2 在ubuntu 16.04上的测试

    1 下载雷达ROS包 首先在github上下载rplidar的ros包 下载指令为 默认安装了git git clone https github com Slamtec rplidar ros git 在ubuntu上创建工作空间 并将该
  • SLAM-hector_slam 简介与使用

    hector slam功能包使用高斯牛顿方法 不需要里程计数据 只根据激光信息便可构建地图 所以他的总体框架如下 hector slam功能包 hector slam的核心节点是hector mapping 它订阅 scan 话题以获取SL
  • ros 中ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdist

    ros 中ERROR cannot download default sources list from https raw githubusercontent com ros rosdistro master rosdep sources
  • V-REP安装

    小知识 是当前目录 是父级目录 是根目录 1 下载V REP 官网地址 http www v rep eu downloads html 我用ubuntu16 04下载V REP PRO EDU V3 5 0 Linux tar 2 解压安
  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • 1-如何安装ROS

    如何安装ROS 大家好 我是如何 今天尝试在Ubantu下安装ROS Robot Operating System 测试环境 虚拟机VMware Ubantu20 04 准备步骤 添加ROS软件源 sudo sh c echo deb ht
  • ModuleNotFoundError: No module named ‘rosbag‘

    1 ModuleNotFoundError No module named rosbag File opt ros kinetic lib python2 7 dist packages roslib launcher py line 42
  • 清华大学开源软件镜像站网址

    清华大学 TUNA 协会原名清华大学学生网管会 注册名清华大学学生网络与开源软件协会 是由清华大学网络技术和开源软件爱好者 技术宅组成的团体 现阶段向校内外提供开源软件镜像等服务 清华大学 TUNA 协会清华大学 TUNA 协会原名清华大学
  • 激光雷达LMS111在ROS上的使用

    LMS111 10100 在ROS上的测试与使用 准备工作 设备 硬件 LMS111 101000激光雷达 软件 ubuntu16 04 ROS 开始 设备连接 将激光雷达与处理器 电脑 工控机等 通过以太网连接好 激光雷达默认的IP地址为
  • 在Ubuntu 14.04.2 LTS上安装Qt

    Qt是一个跨平台的应用程序框架 广泛用于开发具有GUI界面的应用软件以及命令行工具 几乎所有操作系统都可以使用Qt 如Windows Mac OS X Android等 用于开发Qt应用程序的主要编程语言是C 但是可以使用诸如Python
  • 最快实现一个自己的扫地机

    作者 良知犹存 转载授权以及围观 欢迎关注微信公众号 羽林君 或者添加作者个人微信 become me 扫地机介绍 扫地机器人行业本质是技术驱动型行业 产品围绕导航系统的升级成为行业发展的主旋律 按功能划分 扫地机器人分为四大系统 即导航系
  • 服务数据的定义和使用

    1 自定义数据服务 在包下创建srv文件夹 在文件夹下创建Person srv 在Person srv下输入以下内容 代表数据类型 string name uint8 age uint8 sex uint8 unknown 0 uint8
  • ROS1 ROS2学习

    ROS1 ROS2学习 安装 ROS ROS1 ROS2 命令行界面 ROS2 功能包相关指令 ROS 命令行工具 ROS1 CLI工具 ROS2 CLI工具 ROS 通信核心概念 节点 Node 节点相关的CLI 话题 Topic 编写发
  • ROS AsyncSpinner 的多线程行为

    我试图了解 ROS 中的 AsyncSpinner 是如何工作的 因为我可能有一些误解 你可以找到类似的问题here As seen here它的定义提到 异步旋转器 产生几个线程 可配置 将并行执行回调 同时不会阻塞执行该操作的线程 叫它
  • 不使用ros编译roscpp(使用g++)

    我正在尝试在不使用ROS其余部分的情况下编译roscpp 我只需要订阅一个节点 但该节点拥有使用旧版本ROS的节点 并且由于编译问题 我无法将我的程序与他的程序集成 我从git下载了源代码 https github com ros ros
  • 错误状态:平台不允许不安全的 HTTP:http://0.0.0.0:9090

    我正在尝试从我的 flutter 应用程序连接到 ws local host 9090 使用 rosbridge 运行 的 Ros WebSocket 服务 但我在 Flutter 中收到以下错误 错误状态 平台不允许不安全的 HTTP h
  • Caught exception in launch(see debug for traceback)

    Caught exception in launch see debug for traceback Caught exception when trying to load file of format xml Caught except
  • 在 Ubuntu 18.10 上安装 ROS Melodic

    I can t是唯一对 Cosmic 与 Wayland 和 Melodic 的组合感兴趣的人 我会坦白说 我似乎已经在 XPS 13 9370 上成功管理了此操作 或者至少安装脚本 最终 成功完成 然而 有一个非常棘手的解决方法 无论结果
  • ROS安装错误(Ubuntu 16.04中的ROS Kinetic)

    中列出的步骤顺序http wiki ros org kinetic Installat 已被关注 尝试在Ubuntu 16 04中安装ROSkinetic 输入以下命令时出错 sudo apt get install ros kinetic

随机推荐

  • 成功解决PackageNotFoundError: Package not found at

    Python使用docx库时 span class token keyword from span docx span class token keyword import span Document document span class
  • vscode导入项目并启动

    不好意思图片不够清晰 我重新编辑一下文本信息 一 添加文件 打开vscode 如果之前没有添加过项目 可以点添加项目 也可以直接拖拽进去都是可以的 之前如果添加过 可以亦可以直接拖进去 但是只要项目之间互不干扰就可以 二 选择项目目录右键打
  • stm32f103c8移植Free RTOS遇到的bug和解决措施

    一 SVC系统调度错误 1 现象 xff1a 进入不了task 2 解决措施 xff1a xff08 1 xff09 将stm32f1xx it c里的void SVC Handler xff08 void xff09 函数给注释了 原因
  • FreeRTOS 实时内核实用指南之第一章任务管理知识总结

    任务函数顶层任务状态创建任务任务优先级扩充 非运行态 空闲任务与空闲任务钩子函数改变任务优先级删除任务调度算法 简述 一 任务函数 1 pvParameters 代表传入函数的参数 2 变量i和变量j 是在任务函数中的变量 xff0c 但是
  • 安装 kubectl

    以 Linux 为例 xff0c 两步 xff1a 1 下载 span class token function curl span span class token parameter variable LO span span clas
  • 关于单应性矩阵的若干思考

    1 名词解释 单应与射影变换是同义的 射影变换描述的是SE 2 到SE 2 的映射关系 映射与变换同义 映射h xff1a SE 2 到SE 2 是射影映射的充要条件是 xff1a 存在一个3x3非奇异矩阵H xff0c 使得任何一个用矢量
  • 自己的Docker Hub仓库 拉取镜像、推送镜像

    docker将本地镜像放入自己的Docker Hub仓库 首先到官网注册账号 xff1a https hub docker com 在本地Linux登录docker xff1a docker login 用户名 xff1a libowen1
  • 在gittee上建立远程仓库

    1 注册登录码云 xff0c 完善个人信息 2 设置本机绑定SSH公钥 xff0c 实现免密码登录 xff01 xff08 免密码登录 xff0c 这一步挺重要的 xff0c 码云是远程仓库 xff0c 我们是平时工作在本地仓库 xff01
  • 用windows自带WSL实现Ubuntu使用及ROS安装及gazebo黑屏解决

    Windows自带WSL实现Ubuntu使用 ROS安装 可视化桌面 gazebo黑屏解决 1 Ubuntu安装1 1 开放权限1 2 安装1 3 初始化 2 桌面环境配置2 1 换镜像源2 2 安装可视化桌面2 2 1 远程桌面连接 3
  • Optitrack视觉定位下基于ROS及PX4搭建四旋翼多机飞行平台

    Optitrack视觉定位下基于ROS及PX4搭建四旋翼多机飞行平台搭建 1 单机平台1 1 四旋翼硬件组装a 注意 1 2 机载板环境配置1 3 飞控参数配置a 注意 1 4 实飞全流程 2 多机通信2 1 多机ip地址存储2 2 ROS
  • Optitrack使用说明-基于ROS&vrpn实现的室内定位

    Optitrack使用说明 基于ROS amp vrpn实现的室内定位 待续
  • C语言实现http请求器

    C语言实现http请求器 项目介绍 本项目完成一个http客户端请求器 xff0c 该请求器往服务器发送请求 xff0c 并接受服务器发来的响应数据 程序执行流程 建立TCP连接在TCP连接获得的socket的基础上 xff0c 发送htt
  • 【 ROS 软件包 】ROS安装软件包的两种方法

    使用apt安装 xff0c 安装在 opt ros melodic share目录下 xff1a sudo apt span class token operator span get install ros span class toke
  • 【 PID 算法 】PID 算法基础

    前言 xff1a 这两天打算找个实习 xff0c 奈何感觉自己有点菜 xff0c 所以 xff0c 就补习了一下知识 xff0c 说一下 xff0c 这个PID算法吧 一 简介 PID即 xff1a Proportional xff08 比
  • 7、OPencv 图形轮廓检测

    要想实现轮廓检测 xff0c 首先我们需要对待检测的图像进行图像处理 xff1a 图像灰度化 高斯滤波 Canny 边缘检测 边缘检测放大处理 提取轮廓 一 实现简单的全图型检测 即只要将drawContours第三个参数设置为 1 既能实
  • Spring Boot 接口统一前缀

    需求 需求如题 xff0c 想给一个 spring boot 项目的所有请求路径添加统一前缀 xff0c 可以通过 context path 来配置 但是在同时存在静态资源和 Controller 接口的项目中 xff0c 如果希望静态资源
  • 一文读懂pid控制器

    文章目录 PID控制器1 控制器1 1 电机速度控制系统1 2 温度或水位控制系统1 3 小小总结 2 PID3 模拟式PID4 数字式PID4 1 位置式PID算法4 1 2 位置式pid算法的缺点 4 2 增量式PID算法4 2 2 增
  • Gazebo创建围墙并生成.world文件

    Gazebo创建围墙并生成 world仿真环境文件 文件说明 world文件是gazebo中搭建的仿真环境保存后的文件格式 xff0c 其中包含了若干个模型文件 world文件如图所示 xff1a 其中相关参数是gazebo基于我们在gaz
  • Ubuntu18.04分区方案

    由于Ubluntu18 04安装和16 04基本一样 xff0c 因此就没什么好说的 xff0c 主要记录一下分区方案 硬盘总容量 xff1a 500G 分区方案 xff1a EFI分区 逻辑分区 xff0c 空间起始位置 xff0c 10
  • Ubuntu18.04搭建AirSim+ROS仿真环境

    AIRSIM在UBuntu 18 04上构建的官网文档 一 安装UE4引擎 AIRSIM是依赖于UE4引擎实现的 因此在安装AIRSIM之前要安装UE4引擎 1 获取UE4的github许可 在Ubuntu上安装UE4引擎需要从源文件进行编