无人机仿真环境配置初探(Unreal Engine + AirSim Plugin)

这篇具有很好参考价值的文章主要介绍了无人机仿真环境配置初探(Unreal Engine + AirSim Plugin)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概要

AirSim插件配合Unreal Engine游戏引擎的3D渲染能力,可以实现比较逼真的环境渲染效果,具备Camera、Lidar和GNSS三种导航数据供供导航程序使用,其代码架构如下(参考自知乎文章)
:AirSim仅支持UE4,对于UE5,需要下载https://github.com/CodexLabsLLC/Colosseum对应的UE版本的Colosseum(AirSim的successor),后续步骤类似。
无人机仿真airsim,ROS2,AirSim仿真,无人机,虚幻,游戏引擎
因此,无人机仿真环境由两部分组成:Windows平台上使用UE+AirSim插件搭建无人机飞行场景,配置无人机物理参数,为导航模块提供图像、激光雷达和GNSS测量数据;NVIDIA JETSON ORIN板卡运行导航程序,接收Windows传输的测量数据、进行导航解算并输出控制指令至Windows平台控制无人机移动。
本文内容是在Windows和ORIN两个平台的环境配置和数据传输测试。

1. ORIN端环境配置

1.1 AirSim插件配置

  1. 在Github-AirSim下载AirSim源码,我选择1.8.0-Linux;
  2. 找到AirSimRootDir/setup.sh文件,根据命令中网址下载rpclib-2.3.0文件(解压后命名为rpclib-2.3.0文件并复制到AirSimRootDir/external/rpclib/路径下)、下载Eigen库(找到eigen/Eigen文件夹并复制到AirSimRootDir/AirLib/deps/eigen3/ 路径下);
  3. 进入AirSim目录,命令行执行./setup.sh --no-full-poly-car (我仅使用无人机,因此不用下载汽车模型);
  4. 如果出现clang-8安装失败(底层库不兼容问题),将setup.sh文件中sudo apt-get install -y clang-8 clang++-8 libc++-8-dev libc++abi-8-dev删除,使用aptitude工具手动安装,将不兼容的库降级使用;
  5. 在AirSimRootDir命令行执行./build.sh构建AirSim,对应生成的插件文件在AirSimRootDir/Unreal/Plugins/AirSim中。

1.2 AirSim-ROS2-Wrapper配置

  1. ROS2的源码位于AirSimRootDir/ros2处,AirSim貌似仅支持ROS2-galatic(不太确定,可在Github的issues处查看);
  2. 参考Github/AirSim-Add ROS2 wrapper链接,依次运行 How to test it yourself? 处命令以编译ROS2包、启动airsim_node节点。

2. Windows端环境配置

2.1 下载Epic Game游戏软件和Unreal Engine

  1. 下载Epic Game游戏软件

无人机仿真airsim,ROS2,AirSim仿真,无人机,虚幻,游戏引擎

  1. 点击左侧Unreal Engine->Library选择对应的UE版本,我选择4.27。
  2. UE引擎下载完毕后,在Marketplace界面选择目标场景下载(须与刚下载的引擎兼容)并创建工程。
  3. 右键点击工程的uproject文件,Generate Visual Studio Projectfiels,生成C++项目,以和AirSim源码一起生成。

2.2 UE工程配置AirSim插件

  1. 仿照 1.1 AirSim插件配置在Windows平台下载、setup、编译AirSim插件;
    以下内容参考了——AirSim配置Unreal Environment
  2. 将编译后AirSimRootDir/Unreal/Plugins文件夹复制到UE工程根目录(此目录下存在UEProjectName.uproject文件);
  3. 使用记事本打开UEProjectName.uproject,添加AirSim依赖和AirSim插件,最终效果如下
{
   "FileVersion": 3,
   "EngineAssociation": "4.27",
   "Category": "Samples",
   "Description": "",
   "Modules": [
       {
           "Name": "LandscapeMountains",
           "Type": "Runtime",
           "LoadingPhase": "Default",
           "AdditionalDependencies": [
               "AirSim"
           ]
       }
   ],
   "TargetPlatforms": [
       "MacNoEditor",
       "WindowsNoEditor"
   ],
   "Plugins": [
       {
           "Name": "AirSim",
           "Enabled": true
       }
   ]
}
  1. 在UE工程根目录下,使用记事本打开Config\DefaultGame.ini文件并在末尾添加
    +MapsToCook=(FilePath="/AirSim/AirSimAssets")
    目的是将AirSim的content添加到UE工程。
  2. 打开文档/AirSim/settings文件,添加"SimMode":"Multirotor"设置,将仿真节点设置为无人机。该文件可以用来配置仿真环境中无人机/车的各种物理参数,留待后续研究。
  3. 打开工程,点击编辑/项目设置/地图和模式将默认地图模式选择为AirSimGameMode,点击运行即可开始仿真。

3. 测试ROS2与AirSim地图的数据传输结果

对ROS2-wrapper和ROS2不熟悉,使用如下方法进行简单测试,后续填坑。

3.1 ORIN使用python-airsim控制无人机起飞

参考知乎专栏

#作者:宁子安
#链接:https://zhuanlan.zhihu.com/p/359214411
#来源:知乎
#著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

"""
 airsim 四旋翼飞圆形
 """
import airsim
import numpy as np
import math
import time
​
​
client = airsim.MultirotorClient()  # connect to the AirSim simulator
client.enableApiControl(True)       # 获取控制权
client.armDisarm(True)              # 解锁
client.takeoffAsync().join()        # 起飞
client.moveToZAsync(-3, 1).join()   # 第二阶段:上升到2米高度
​
center = np.array([[0], [5]])    # 圆心设置
speed = 2                        # 速度设置
radius = 5                       # 半径设置
clock_wise = True                # 顺时针或逆时针设置
​
pos_reserve = np.array([[0.], [0.], [-3.]])# 速度控制
for i in range(2000):
    # 获取无人机当前位置
    state = client.simGetGroundTruthKinematics()
    pos = np.array([[state.position.x_val], [state.position.y_val], [state.position.z_val]])
    # 计算径向速度的方向向量
    dp = pos[0:2] - center
    if np.linalg.norm(dp) - radius > 0.1:
        vel_dir_1 = -dp
    elif np.linalg.norm(dp) - radius < 0.1:
        vel_dir_1 = dp
    # 计算切向速度的方向向量
    theta = math.atan2(dp[1, 0], dp[0, 0])
    if clock_wise:
        theta += math.pi / 2
    else:
        theta -= math.pi / 2
    v_dir_2 = np.array([[math.cos(theta)], [math.sin(theta)]])
    # 计算最终速度的方向向量
    v_dir = 0.08 * vel_dir_1 + v_dir_2
    # 计算最终速度指令
    v_cmd = speed * v_dir/np.linalg.norm(v_dir)
    # 速度控制
    client.moveByVelocityZAsync(v_cmd[0, 0], v_cmd[1, 0], -3, 1)
    # 画图
    point_reserve = [airsim.Vector3r(pos_reserve[0, 0], pos_reserve[1, 0], pos_reserve[2, 0])]
    point = [airsim.Vector3r(pos[0, 0], pos[1, 0], pos[2, 0])]
    point_end = pos + np.vstack((v_cmd, np.array([[0]])))
    point_end = [airsim.Vector3r(point_end[0, 0], point_end[1, 0], point_end[2, 0])]
    client.simPlotArrows(point, point_end, arrow_size=8.0, color_rgba=[0.0, 0.0, 1.0, 1.0])
    client.simPlotLineList(point_reserve+point, color_rgba=[1.0, 0.0, 0.0, 1.0], is_persistent=True)
    # 循环
    pos_reserve = pos
    time.sleep(0.02)

结果为:Windows平台下的无人机成功起飞并按照圆形来飞行。

使用ROS2-Wrapper测试

待补充完善。文章来源地址https://www.toymoban.com/news/detail-846700.html

到了这里,关于无人机仿真环境配置初探(Unreal Engine + AirSim Plugin)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (最新)ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建

    前言 在搭建之前,需要把 ROS、MAVROS、QGC 等基础环境安装配置完成。大家可以参考我之前的教程 本次安装是以 px4 v1.13.2 为例。 我的配置如下: 虚拟机 Ubuntu 18.04 (运行内存 4G、硬盘内存 80G) 、ROS melodic 、最新版 QGC 建议安装之前可以先看看这个 👉 ubuntu搭建PX4无人机仿真环境

    2024年02月09日
    浏览(59)
  • 【无人机三维路径规划Matlab仿真】基于萤火虫算法实现复杂环境下无人机避障三维航迹规划

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月03日
    浏览(78)
  • 【无人机三维路径规划matlab仿真】基于蜣螂优化算法DBO求解复杂山地环境下无人机三维路径规划研究

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月04日
    浏览(86)
  • (最新)ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍及环境建议

    搭建PX4仿真环境一个有挑战性的过程,如果没有一个有经验的人来带的话会走很多弯路。我在搭建PX4仿真环境的时候,不知道Linux、ROS、git,语言也只会一个C语言,没有任何无人机基础,纯小白一个,靠着自学与网上的各种教程,花了一两个月才搭好基本的仿真环境框架。我

    2024年02月08日
    浏览(62)
  • 一种改进多旋翼无人机动态仿真的模块化仿真环境研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码、Simulink实现

    2024年02月10日
    浏览(54)
  • (最新)ubuntu搭建PX4无人机仿真环境(2) —— MAVROS安装

    MAVROS是一个ROS(Robot Operating System)软件包 , 有了它就可以让ROS与飞控通信。这次安装是以ubuntu 18.04 (ROS Melodic)为例,也适用于其他版本 。安装之前确保 ROS 安装成功,没安装的可以看我仿真系列教程。 (注:安装方式有二进制安装和源码安装两种方式,源码安装需要从Git

    2024年02月09日
    浏览(61)
  • ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站

    前言 QGC ( QGroundControl) 是一个开源地面站,基于QT开发的,有跨平台的功能。这次安装是基于Ubuntu 18.04,QGC v4.2.6 但也适用于其他ubuntu发行版,QGC 版本也可以自行选择,如果发现不行可以降版本。 搭建仿真环境系列教程 👇 ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍 ubuntu搭

    2024年02月16日
    浏览(45)
  • (最新)ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站

    前言 QGC ( QGroundControl) 是一个开源地面站,基于QT开发的,有跨平台的功能。这次安装是基于Ubuntu 18.04,QGC v4.2.6 但也适用于其他ubuntu发行版,QGC 版本也可以自行选择,如果发现不行可以降版本。 搭建仿真环境系列教程 👇 ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍 ubuntu搭

    2024年02月09日
    浏览(46)
  • Ubuntu18.04搭配无人机仿真环境(ROS,PX4,gazebo,Mavros,QGC安装教程)

    我个人使用了代理环境进行下载。Linux没有代理的可以使用国内源。 清华大学源 sudo sh -c ‘. /etc/lsb-release echo “deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main” /etc/apt/sources.list.d/ros-latest.list’ 中科大源 sudo sh -c ‘. /etc/lsb-release echo “deb http://mirrors.ustc.edu.cn/ros/ubu

    2024年02月13日
    浏览(65)
  • ORB_SLAM3配置及修改——将图像、点云用ROS消息发布(基于无人机仿真)

            本文有点长,可以根据目录跳转到想看的部分。因为仿真和应用环境不同,可能例程的运行方式(输入话题等)有所不同,但第三部分有关ORB_SLAM3相机仿真标定、第四部分有关ORB_SLAM3源码修改的部分是通用的。 目录 一、仿真环境配置 1.双系统安装 ① 工具准备 ②

    2024年04月10日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包