zoukankan      html  css  js  c++  java
  • AirSim 自动驾驶仿真 (2-2) ubuntu1804 配置AirSim工程和局域网两台电脑调试

     

    目标

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

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

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

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

     

    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。

    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

    在个人-关联中

    选择github账号

     验证关联

    (手机邮箱连接验证点不开,放弃了,反正后面用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使用clang 8构建与UE 4.25的兼容性。安装脚本将安装正确版本的cmake,llvm和eigen。 

      

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

      

     

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

     到这里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库路径

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

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

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

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

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

    (2)新建CMakeLists.txt

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

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

     

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

    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  

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

    运行程序

     生成的执行文件在build中。

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

    联合场景调试

     

    方式1:ubuntu本机运行ue4

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

    方式2:两台机器联调

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

    主机B   win10运行UE4仿真环境

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

     

    过程

     (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 

    win10  IP 192.168.0.1,     255.255.255.0 

     

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

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

     

     增加内容  "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地址,重新编译。 

     

     

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

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

     飞机准备好处于等待状态

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

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

    7开始基本调试!!!!

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

    3-3 自己编译的python工程

    官方自带python

    切换python默认执行环境

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

    所以使用 python都默认是python3

     安装库

    sudo pip3 install msgpack-rpc-python
    

      

    安装opencv

    pip3 install opencv-python==4.2.0.34
    

     

    使用代码

    修改UE4主机的ip  

     执行

    python hello_drone.py 
    

      

     

     

     按0显示3路图

     

     更多例成继续探索

    python新建工程

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

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

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

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

      

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

    #源码倒入airsim库路径,相对位置有点改变
    #import setup_path 
    
    #手动倒入自己电脑编译的airsim python接口路径~AirSim/PythonClient
    import sys
    sys.path.append("/home/dongdong/3Code/Airsim/AirSim/PythonClient")
    

      

     

    报错问题

    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

      

  • 相关阅读:
    正确使用c语言中的头文件
    用Python玩转大数据-入门阶段
    Python基础知识进阶(五---2)----程序基本结构、简单分支、异常处理、三大实例分析、基本循环结构、通用循环构造方法、死循环嵌套循环、布尔表达式
    Python基础知识进阶(五---1)----程序基本结构、简单分支、异常处理、三大实例分析、基本循环结构、通用循环构造方法、死循环嵌套循环、布尔表达式
    Python小程序练习(7个) 2017年9月28日---告诉自己多东西练习,而不是去空想
    python基础知识进阶(四) Python语言的math库和random库和实例
    python基础知识进阶(二) Python语言的数据类型
    python基础知识进阶之路(一)
    今天2017.5.23 开始一个web端网上商城项目的开发
    Lambda表达式(转载)
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/14243251.html
Copyright © 2011-2022 走看看