当前位置: 首页 > news >正文

UE+Airsim(Win11)+gazebo+PX4(WSL)配置——持续更新中

参考链接:
https://zhuanlan.zhihu.com/p/618440744

Win11安装WSL和VS

安装WSL

参考链接:
https://blog.csdn.net/2301_80003447/article/details/158887391?spm=1011.2415.3001.5331

# 查看可安装的版本wsl.exe--list--online# 安装特定版本的Ubuntuwsl.exe--install-dUbuntu-22.04

安装VS

https://visualstudio.microsoft.com/zh-hans/vs/

Win11安装UE

下载EpicInstaller

在官网选择社区版下载EpicInstaller-19.2.0-unrealEngine.msi,安装过程中需要epic账户,没有的话需要创建。

PorjectAirsim暂时使用的还是Airsim

在 Win11 开始菜单中找到并打开 “Developer Command Prompt for VS 2022”
在英文目录下,使用git clone https://github.com/iamaisim/ProjectAirSim.git下载代码

cdProjectAirSim&&build all

Airsim

在 Win11 开始菜单中找到并打开 “Developer Command Prompt for VS 2022”
在英文目录下,使用git clone https://github.com/Microsoft/AirSim.git下载代码

cdAirSim build.cmd

WSL和UE通信

这部分配置比较复杂,网上有英文资料,但也是多次尝试才算成功。
参考链接:

https://ardupilot.org/dev/docs/sitl-with-airsim.html#sitl-with-airsim-usagehttps://discuss.ardupilot.org/t/gsoc-2019-airsim-simulator-support-for-ardupilot-sitl-part-ii/46395/5 https://github.com/mahmoudajawad/wsl-hacks/blob/master/wsl2-networking.md
  1. 找到UE4Editor.exe
    在安装的UE文件夹Engine/Binaries/Win64中找到UE4Editor.exe启动脚本
  2. 使用win按键
  3. 进入系统防火墙的高级设置
  4. 左侧点击入站规则,右侧选择新建规则
  5. 选择程序,在程序路径中选择第一步中找到的UE4Editor.exe文件
  6. 下一页选择允许连接,下一页勾选全部/专用公用
  7. 下一页取一个辨识度的名字,点击完成
  8. 获取宿主机IP地址
    参考链接建议使用
    ipconfig.exe|awk'/WSL/ {getline; getline; getline; getline; print substr($14, 1, length($14)-1)}'
    获取IP地址,但我这样操作提示错误
    -bash: /mnt/c/WINDOWS/system32/ipconfig.exe: cannot execute binary file: Exec format error
    应该是Ubuntu系统无法获取ipconfig.exe这样的windows执行文件,虽然也有资料显示Working across Windows and Linux file systems,但我没有成功。
    我的理解是,这一步的作用就是获取宿主机的IP地址,因此可以使用指令ifconfig查找IP地址,并运行export WSL_HOST_IP=host_IP
    可以使用ping $WSL_HOST_IP测试。
  9. 将地址填入/etc/hosts
    运行一下程序,将地址填入/etc/hosts
    echo-e"\n$WSL_HOST_IPwindows.local"|sudotee-a/etc/hosts>/dev/null
  10. export DISPLAY=$WSL_HOST_IP:0
  11. 可能需要安装Xlaunch
    比较简单,可以在网上找资料,xclock有输出表示正常

启动UE+AIRSIM

启动UE

settings.json文件中内容都替换为

{"SettingsVersion":1.2,"LogMessagesVisible":true,"SimMode":"Multirotor","OriginGeopoint":{"Latitude":-35.363261,"Longitude":149.165230,"Altitude":583},"Vehicles":{"Copter":{"VehicleType":"ArduCopter","UseSerial":false,"LocalHostIp":"127.0.0.1","UdpIp":"127.0.0.1","UdpPort":9003,"ControlPort":9002}}}

启动UE窗口可能卡住,在启动SITL之后就正常了。

启动ardupilot

使用指令

sim_vehicle.py-vArduCopter-fairsim-copter--map--console

启动AP的SITL
我的地面站暂时连接不上,可以使用以下指令测试电机功能

motortest1110052motortest2110052motortest3110052motortest4110052

使用以下指令测试起飞

paramsetARMING_SKIPCHK-1rc31800


添加端口发布

outputadd127.0.0.1:5762

mavros建立连接

ros2 launch mavros apm.launch fcu_url:=tcp://127.0.0.1:5762

启动airsim的ros2节点,实现可见光图像,深度图像等的发布

ros2 launch airsim_ros_pkgs airsim_node.launch.py

使用mavros进行速度控制

python ap_vel_ENU_pub.py

使用Mavros的服务进行解锁上锁和模式切换

ros2servicecall /mavros/cmd/arming mavros_msgs/srv/CommandBool"{value: true}"ros2servicecall /mavros/cmd/arming mavros_msgs/srv/CommandBool"{value: false}"ros2servicecall /mavros/set_mode mavros_msgs/srv/SetMode"{base_mode: 0, custom_mode: 'LOITER'}"ros2servicecall /mavros/set_mode mavros_msgs/srv/SetMode"{base_mode: 0, custom_mode: 'GUIDED'}"ros2servicecall /mavros/set_mode mavros_msgs/srv/SetMode"{base_mode: 0, custom_mode: 'LAND'}"ros2servicecall /mavros/cmd/takeoff mavros_msgs/srv/CommandTOL"{min_pitch: 0.0, yaw: 0.0, latitude: 0.0, longitude: 0.0, altitude: 5.0}"

AIRSIM+ROS1

官方教程中有提供airsim+ros1的操作指南,可以直接按照步骤一步一步来做就好,可实现AIRSIM中可见光相机,激光雷达等传感器信息在ros话题中的发布。
参考链接:
https://microsoft.github.io/AirSim/airsim_ros_pkgs/
https://microsoft.github.io/AirSim/airsim_tutorial_pkgs/

注意:我使用的是WSL2,安装了ubuntu20.04系统和ROS1,官方中虽然有ROS2的文件,但支持好像还不是很好,编译的时候报错,资料也较少,所以还是使用了ROS1

在WSL的ubuntu20.04系统中下载AirSim代码并编译

gitclone https://github.com/Microsoft/AirSim.gitcdAirSim ./setup.sh ./build.shcdros catkin build

为了实现WSL下的airsim节点与windows下的UE仿真可以连接,需要设置一下IP地址export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

运行检查编译是否完成

sourcedevel/setup.bash roslaunch airsim_ros_pkgs airsim_node.launch output:=screen host:=$WSL_HOST_IProslaunch airsim_ros_pkgs rviz.launch

若以上没有问题,则可以正式连接UE,开始仿真。
front_stereo_and_center_mono.json
首先可以将以上链接中的json文件内容复制到windows的Documents/AirSim/settings.json中,随后启动UE仿真,加载多旋翼飞行器,可以看到激光雷达、可见光等传感器都顺利加载。
之后在两个wsl终端中分别运行

# pane / terminal 1$sourcePATH_TO/AirSim/ros/devel/setup.bash $ roslaunch airsim_ros_pkgs airsim_node.launch;# pane / terminal 2$sourcePATH_TO/AirSim/ros/devel/setup.bash $ roslaunch airsim_tutorial_pkgs front_stereo_and_center_mono.launch

这样就会打开airsim中的控制节点,并且建立与UE(AIRSIM)的连接,可在新的终端中输入rosservice call /airsim_node/drone_1/takeoff "waitOnLastTask: true"rosservice call /airsim_node/drone_1/land "waitOnLastTask: true"实现飞行器起飞和降落。

http://www.jsqmd.com/news/610782/

相关文章:

  • 网络入侵检测实战:基于LeNet-5的全流程实现(第四篇:工程化应用案例(真实落地场景))
  • Apache DolphinScheduler 工作流传参实战:从本地变量到上下游联动,一篇讲透
  • ExplorerPatcher:Windows 11终极定制工具完整指南
  • 保姆级教程:用IGH EtherCAT库控制雷赛伺服电机(PV模式,附完整C代码)
  • 基于单片机的远程智能晾衣架
  • 揭秘.NET 9低代码编译管道:如何将Blazor + Source Generators响应式编译速度提升5.8倍?
  • Cesium地图边界线绘制实战:从阿里DataV获取完美边界数据的3种方法
  • 数据团队该醒醒了:AI智能体不是你的下一个仪表盘概
  • OpenClaw网关高级配置:Qwen3-32B镜像的负载均衡与超时优化
  • 专门设计用于对RAG(检索增强生成)系统进行自动化、对抗性数据提取攻击的安全测试工具
  • Qwen3-TTS-Tokenizer-12Hz应用落地:车载语音系统低延迟token流式传输方案
  • OpenClaw故障排查大全:Qwen3-4B模型连接失败解决方案
  • 【PHP内核级异步优化白皮书】:基于Zend VM 4.9重构的I/O等待消除策略
  • 智能体构建:智能体落地80/20法则:20%模型调用,80%系统工程与策略博弈.139
  • OpenClaw开源生态:Qwen3-14B支持的10个高星技能实测
  • PADS Layout老手才知道的BOM导出技巧:用这个中文插件,3分钟搞定物料清单
  • ⚖️Lychee-Rerank快速部署:开箱即用的Streamlit Web界面本地启动教程
  • Anaconda环境管理实战:如何把GitHub上的thop包手动‘塞’进你的虚拟环境?
  • RockyLinux 8.6安装与Linux核心命令掌握(2/2)
  • BMK52M134电容触摸模块嵌入式驱动与I²C集成实战
  • OpenClaw隐私保护方案:Qwen3-14b_int4_awq本地处理敏感数据
  • 避坑指南:解决OpenHarmony 4.0浏览器应用部署中的三大常见问题(签名、预装、SDK)
  • OpenClaw备份恢复:Qwen3-32B私有镜像的配置迁移与灾难恢复
  • 血氧饱和度监测仪设计(有完整资料)
  • 51、Move方式创建线程---------多线程
  • 植物人工培育环境控制系统
  • Java AI - LangChain4j完整指南:核心组件解析+Ollama/百炼集成+实战案例 【含代码解析及代码仓库】
  • OpenClaw安全沙盒:基于SecGPT-14B的恶意代码分析自动化
  • 毕业之家使用教程:5步搞定毕业论文(附详细操作截图)
  • Linux系统目录结构与常用命令详解