AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试   目标   1环境   2 Ubungtu下airsim工程配置 2-1  linux下安装UE4仿真平台 2-2ubuntu1804编译AirSim工程 3 使用AirSim 联合场景调试 python新建工程 报错问题

目标

1 完成在ubuntu1804下使用airsim工程中,飞机控制样例编译。

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

2 完成局域网下面,一台win10电脑运行UE4仿真,另一台ubuntu18电脑运行airsim的飞机程序控制。

你也可以两台win10,但是slam这种工程只能在linux,所以本教程按照ubuntu1804写的。

未来需要两台win10的话,除了airsim在不同平台编译过程,其他流程一样。

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 

1环境

ubuntu1804.5

联想笔记本y7000

显卡 1050ti

1-1安装系统

首先参考教程完成系统安装,驱动安装,cuda10安装和opencv从源码安装。

联想Y7000安装ubuntu1804.6双系统(一)

https://www.cnblogs.com/kekeoutlook/p/14227697.html

联想Y7000安装ubuntu1804.6显卡驱动(二)

https://www.cnblogs.com/kekeoutlook/p/14227698.html

ubuntu1804.6从源码编译opencv4.5和扩展库和cuda10.1

 https://www.cnblogs.com/kekeoutlook/p/14232440.html 

1-2 配置WIN10下的AirSim

AirSim 自动驾驶仿真 (1) win10环境配置(后面要跨平台使用准备)

https://www.cnblogs.com/kekeoutlook/p/13449525.html

AirSim 自动驾驶仿真 (2-1) win10配置 Visual Studio 2019工程 - C++  (只是为了学习)

https://www.cnblogs.com/kekeoutlook/p/14213737.html

 

1-3 开启某墙可以访问谷歌

最好自己买一个,能解决很多哦安装时候网络访问不了,下载东西巨慢速问题。

opencv配置教程中有写怎么配置 linux。

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

2 Ubungtu下airsim工程配置

官网

https://microsoft.github.io/AirSim/build_linux/

2-1  linux下安装UE4仿真平台

(如果win10装了UE4,可省略这个步骤,后面linux可以使用局域网访问win10的UE4环境,但是你的有两台机器,所以单机调试还是要装的,我暂时没装)

Linux-构建虚幻引擎

1确保您已在Epic Games注册。这是获取虚幻引擎源代码访问权限所必需的。

2在UE官网内部,将UE4账号关联GITHUB账号,保证后面下载时候输入自己的github账号密码可以执行下载。

https://www.unrealengine.com/account/connections

在个人-关联中

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

选择github账号

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 验证关联

(手机邮箱连接验证点不开,放弃了,反正后面用WIN10的仿真)

在您喜欢的文件夹中克隆Unreal并将其构建(这可能需要一段时间!)。注意:目前我们仅支持Unreal> = 4.25。我们建议使用4.25。

# go to the folder where you clone GitHub projects
git clone -b 4.25 https://github.com/EpicGames/UnrealEngine.git
cd UnrealEngine
./Setup.sh
./GenerateProjectFiles.sh
make

  

2-2ubuntu1804编译AirSim工程

# go to the folder where you clone GitHub projects
git clone https://github.com/Microsoft/AirSim.git
cd AirSim

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

默认情况下,AirSim使用clang 8构建与UE 4.25的兼容性。安装脚本将安装正确版本的cmake,llvm和eigen。 

  

./setup.sh
./build.sh
# use ./build.sh --debug to build in debug mode

  

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

正常开着某墙软件很快就成功了。

 到这里airsim 的库算是编译好了,后面我们要创建工程调用。

3 使用AirSim

3-1 官方自带例子 

一台机器,ubuntu18同时运行ue4和airsim控制

win10连调可调过。这里我暂时没有配置linux的ue4,所以没有执行。

设置AirSim后:

  • 转到UnrealEngine安装文件夹并通过运行启动虚幻引擎./Engine/Binaries/Linux/UE4Editor
  • 当虚幻引擎提示您打开或创建项目时,选择浏览并选择AirSim/Unreal/Environments/Blocks(或您的自定义虚幻项目)。
  • 或者,可以将项目文件作为命令行参数传递。对于块:./Engine/Binaries/Linux/UE4Editor <AirSim_path>/Unreal/Environments/Blocks/Blocks.uproject
  • 如果系统提示您转换项目,请查找“更多选项”或“就地转换”选项。如果系统提示您进行构建,请选择“是”。如果提示您禁用AirSim插件,请选择“否”。
  • 虚幻编辑器加载后,按“播放”按钮。

3-2 自己编译的c++工程

首先看到我自己编译好的airsim库路径

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

创建一个新工程(最终要有如下文件)

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

(1) main.cpp 我们用官方的飞机控制,拷贝这个文件到自己的文件夹airsim_code

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

修改 注意有注释的两行。我们后面要使用局域网内部另一个机器的UE4场景,所以输入的是对应电脑的IP

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

怎么知道更多修改,参考官网的api讲解

https://microsoft.github.io/AirSim/api_docs/html/ 

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

(2)新建CMakeLists.txt

1 修改自己的airsim编译库路径

# 设置airsim的路径
set(AIRSIM_ROOT "/home/dongdong/3Code/Airsim/AirSim")

 

2 修改名字和参与编译的工程名字(可不改)

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

3 要依赖opencv,记得提前装好

  

最终CMakeLists.txt

cmake_minimum_required(VERSION 3.5.0)
project(airsim_collect)

#set( CMAKE_BUILD_TYPE "Release" )
#set( CMAKE_CXX_FLAGS "-std=c++11 -O3" )
add_compile_options(-std=c++11)

find_package(OpenCV REQUIRED)
# 设置airsim的路径
set(AIRSIM_ROOT "/home/dongdong/3Code/Airsim/AirSim")

add_subdirectory("${AIRSIM_ROOT}/cmake/rpclib_wrapper" rpclib_wrapper)
add_subdirectory("${AIRSIM_ROOT}/cmake/AirLib" AirLib)
add_subdirectory("${AIRSIM_ROOT}/cmake/MavLinkCom" MavLinkCom)


LIST(APPEND CMAKE_MODULE_PATH "${AIRSIM_ROOT}/cmake/cmake-modules") 
LIST(APPEND CMAKE_MODULE_PATH "${AIRSIM_ROOT}/cmake")
INCLUDE("${AIRSIM_ROOT}/cmake/cmake-modules/CommonSetup.cmake")

set(RPC_LIB_INCLUDES ${AIRSIM_ROOT}/external/rpclib/rpclib-2.2.1/include)
set(RPC_LIB rpc)


include_directories(
  ${AIRSIM_ROOT}/AirLib/include
  ${AIRSIM_ROOT}/AirLib/deps/eigen3
  ${RPC_LIB_INCLUDES}
  ${AIRSIM_ROOT}/MavLinkCom/include
  ${AIRSIM_ROOT}/MavLinkCom/common_utils
)

link_directories(
 ${AIRSIM_ROOT}/AirLib/lib
 ${AIRSIM_ROOT}/AirLib/deps/rpclib/lib
 ${AIRSIM_ROOT}/AirLib/deps/MavLinkCom/lib
)

# airsim采集程序  
# -生成的可执行文件名字 airsim_collect
# -参与编译的代码 main.cpp
add_executable(airsim_collect
 main.cpp
)

target_link_libraries(airsim_collect
 ${AIRSIM_ROOT}/build_release/output/lib/
  ${OpenCV_LIBS}
  AirLib
  MavLinkCom
  rpc
  pthread
)

  

(3)新建buid文件夹

执行编译

make  

这里会出现一个可能错误,参考博客最后面问题。

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

运行程序

 生成的执行文件在build中。

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 如果你的场景没开,会一直输出xxxxxx等待连接,至此证明自己创建的代码编译成功。

联合场景调试

 

方式1:ubuntu本机运行ue4

(参考官网,我这里没有实验)  main.cpp  ip默认留空

方式2:两台机器联调

主机A  ubuntu18运行airsim控制代码,获取图像数据和控制

主机B   win10运行UE4仿真环境

 说明:一台机器运行仿真算力速度耗费巨大,运行仿真就很吃力,所以用另一台主机专门处理控制和别的计算。

 AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

过程

 (1)参考下面两个教程,保证win10的UE4创建一个地图工程,且能够运行进入,飞机处于等待状态,完成后关闭。

 

AirSim 自动驾驶仿真 (1) win10环境配置(后面要跨平台使用准备)
https://www.cnblogs.com/kekeoutlook/p/13449525.html
AirSim 自动驾驶仿真 (2-1) win10配置 Visual Studio 2019工程 - C++  (只是为了学习)
https://www.cnblogs.com/kekeoutlook/p/14213737.html

 

(2)设置两台电脑的网络

将win10电脑和ubuntu1804电脑连接在一个局域网

分别设置两台电脑的有线网络在同一个网段内

这里我的设置

ubuntu1804   IP  192.168.0.2,   255.255.255.0 

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

win10  IP 192.168.0.1,     255.255.255.0 

 AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

3 修改win10  ue4配置文件中默认ip,之后UE4工程需要重启生效。

settings.json文件在自己电脑对应的文档文件夹下面(DELL2080是用户名字,每个人不一样)

 AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 增加内容  "LocalHostIp":"192.168.0.1" 这个ip是有线连接设置的本机静态地址

最终完整的

{
    "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
    "SettingsVersion": 1.2,
    "LocalHostIp":"192.168.0.1"
}

  

4 修改ubuntu1804中我们自己编译的工程 main.cpp文件中,初始化连接ue4的IP地址,重新编译。 

 AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 

5 运行win10的地图仿真,飞机处于等待状态。

注意模式设置在airsim联调状态

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 飞机准备好处于等待状态

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

6 运行ubnutu1804的我们创建的airsim工程。 

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

连接成功,可以运行官方基本控制 ,起飞,获取数据,降落

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

7开始基本调试!!!!

c++版本和python版本代码自己选择进一步扩展。

3-3 自己编译的python工程

官方自带python

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

切换python默认执行环境

我已经把自己环境的python默认从python2修改成python3(百度怎么切换) 

所以使用 python都默认是python3

 安装库

sudo pip3 install msgpack-rpc-python

  

安装opencv

pip3 install opencv-python==4.2.0.34

 

使用代码

修改UE4主机的ip  

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 执行

python hello_drone.py 

  

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 按0显示3路图

 AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 更多例成继续探索

python新建工程

上面测试的样例是在原先的工程中,如何重新在一个新的位置创建

随意新建一个文件夹(纯英文),拷贝官方测试  hello_drone.py 到这个文件夹

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

找到原先编译airsim 的文件夹,获取其路径 AirSim/PythonClient

/home/dongdong/3Code/Airsim/AirSim/PythonClient

  

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

 拷贝这个路径,添加到新代码里面,让脚本能找到对应的airsim python库路径

AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

#源码倒入airsim库路径,相对位置有点改变
#import setup_path 

#手动倒入自己电脑编译的airsim python接口路径~AirSim/PythonClient
import sys
sys.path.append("/home/dongdong/3Code/Airsim/AirSim/PythonClient")

  

 AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题

报错问题

1 代码编译报错 fatal error: filesystem: No such file or directory

使用:
#include <filesystem>
namespace fs = std::filesystem;

报错:fatal error: filesystem: No such file or directory

尝试解决办法:

#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;

  

一共需要改两个文件,根据报错找到文件位置修改。

一个commad.cpp

一个main.cpp

  AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试
 
目标
 
1环境
 
2 Ubungtu下airsim工程配置
2-1  linux下安装UE4仿真平台
2-2ubuntu1804编译AirSim工程
3 使用AirSim
联合场景调试
python新建工程
报错问题