大前提
首先在ubuntu下配置好Unreal Engine和Airsim的环境
可以参考Airsim+UnrealEngine 搭建自动驾驶虚拟环境
注意一下几点:
- UE4 对显卡驱动有要求,不能太高也不能太低,375左右
- Airsim 的 setup.sh有时会出错,注意就是几个文件的下载和更新,所以可以注释掉一些选项,然后手动安装
- 还有几点UE 和 Airsim还有一些虚幻引擎的环境都比较大,可能需要40G 左右的空间,所以要合理分配
- 文件的布局,建议建一个文件加sim_air 里面包好UE4、Airsim、Environment
启动测试
启动Unreal Engine
./Engine/Binaries/Linux/UE4Editor 执行这个这个路径下的可执行程序,
启动block.uproject
在编译完Airsim之后,默认会有一个block的工程,所以我们用UE Edit打开现有的工程,定位到/AirSim/Unreal/Environments/Blocks 打开即可
如果发现提示,project与UE4版本不匹配,点击copy选项,让它重新编译一个匹配的即可。
Airsim的几种模式测试
airsim的配置文件在ubuntu中在/home/Document/Airsim/settings.json,
不同模式的修改主要在启动之前,配置settings.json
SimpleFlight 模式
{
"SettingsVersion": 1.0,"DefaultVehicleConfig": "SimpleFlight","SimpleFlight": {
"RemoteControlID": 0,"RC": {
"AllowAPIWhenDisconnected": true,"AllowAPIAlways": true
}
}
}
在这个模式下,会有一个虚拟的board通过simple_flight接口通信,
我们可以通过angle rate,angle level,velocity or position来进行控制,
同时,它有虚拟的传感器可以进行位置估计。
使用,启动Project
然后打开AirSim/build_debug/output/bin目录下的DroneShell HelloDrone进行测试。
https://github.com/Microsoft/AirSim/blob/master/docs/simple_flight.md
遥控器在SimpleFlight模式下的使用
SimpleFlight模式下使用的是虚拟飞控,它可以接收API程序的控制命令,也可以通过遥控来控制。
遥控器的使用: Futaba-T14SG + SuperSimX
- SuperSimX设置为G4/G5/G6.5模式
- 遥控器的通道映射,Linux下我遇到了通道映射问题,
ls /dev/input/js0 看得到有一个遥控器接入 joystick
sudo jstest /dev/input/js0 调试jstest也能看得到各通道的数据
但是就是通道与airsim 中对应不上,
(有两种方式:要么调遥控器,要么调整程序【程序中SimJoyStick.cpp模式支持xBox】)
所以索性在遥控上新建了一个airsim模式,根据环境中提示的T R P Y,做了对应
PX4-SIL 模式
{
"SettingsVersion": 1.0,"DefaultVehicleConfig": "PX4","PX4": {
"UseSerial": false
}
}
//很明确 说的很明确,使用px4但是又不用串口连接,
PX4-HIL 模式
{
"SettingsVersion": 1.0,"DefaultVehicleConfig": "PX4","LocalHostIp": "127.0.0.1","SubWindows": [ {"WindowID": 0,"CameraID": 0,"ImageType": 0,"Visible": true},{"WindowID": 1,"CameraID": 1,"ImageType": 1,{"WindowID": 2,"CameraID": 2,"ImageType": 2,"Visible": true} ] ,"PX4": { "SerialBaudRate": 115200,"SerialPort": "*","UdpIp": "127.0.0.1","UdpPort": 14560,"UseSerial": true },"SimpleFlight": { "RemoteControlID": 2 } }
seting.json的配置
图像相关
"SubWindows": [
{"WindowID": 0,"CameraID": 0,"ImageType": 3,"Visible": true},{"WindowID": 1,"CameraID": 1,"ImageType": 5,{"WindowID": 2,"CameraID": 2,"ImageType": 0,"Visible": true}
],
PX4飞控相关
"PX4": {
"FirmwareName": "PX4","OffboardCompID": 1,"OffboardSysID": 134,"QgcHostIp": "127.0.0.1","QgcPort": 14550,"SerialBaudRate": 115200,"SerialPort": "*","SimCompID": 42,"SimSysID": 142,"SitlIp": "127.0.0.1","SitlPort": 14556,"UdpIp": "127.0.0.1","UdpPort": 14560,"UseSerial": true,"VehicleCompID": 1,"VehicleSysID": 135,"ApiServerPort": 41451
}
添加虚幻引擎中的环境
0、在需要虚幻引擎的商城中下载自己需要的环境 【简称 ENV0】
1、新建CPP Project 选项和目录 【简称 ENV1】
2、将 ENV0中的一些文件复制到 ENV1 中 主要有
3、做完这些,先测试一些我们的新环境能不能使用
使用 UE4Editor程序打开ENV1下的 uproject,如果没问题,说明环境配置成功了
4、下面需要在工程中添加Airsim插件了。
定位到编译Airsim的文件夹
执行 rsync -t -r Unreal/Plugins path/to/MyUnrealProject命令
注意可能会提示不匹配问题