赞
踩
AirSim是基于Unreal Engine引擎或者Unity引擎,打造的一个无人机/无人车的仿真平台,凭借着Unreal Engine的性能,能够出色的进行基于计算机视觉算法的autonomous vehicles的仿真,AirSim在使用时作为一个UE4的插件,可以嵌到任意Unreal environment中,所以我们可以根据需求实现不同任务,不同场景的仿真。
Our goal is to develop AirSim as a platform for AI research to experiment with deep learning, computer vision and reinforcement learning algorithms for autonomous vehicles. For this purpose, AirSim also exposes APIs to retrieve data and control vehicles in a platform independent way.
——Microsoft
微软想把它打造成人工智能研究的仿真平台,以无人驾驶为主(比如自主无人机、自动驾驶汽车),在Airsim中跑深度学习,计算机视觉和强化学习算法。
The Unreal Engine is a game engine developed by Epic Games.With its code written in C++, the Unreal Engine features a high degree of portability and is a tool used by many game developers today.The current release is Unreal Engine 4, designed for Microsoft Windows, macOS, Linux, SteamOS, HTML5, iOS, Android, Nintendo Switch, PlayStation 4, Xbox One and virtual reality (SteamVR/HTC Vive, Oculus Rift, PlayStation VR, Google Daydream, OSVR and Samsung Gear VR).
UnrealEngine在github上私有的项目,https://github.com/EpicGames/UnrealEngine.git 不信你点点看。
但是只要你申请加入Unreal engine项目的组织,还是可以Clone下来的,具体步骤。
1、首先登陆UnrealEngine的缔造者Epic的官网,注册一个账号
2、然后在Epic的个人页面下–账号关联,关联到自己的GitHub账号 (这个关联表明你申请加入EpicGames的开发,他会向你发出一个加入邀请)
3、登陆GitHub,在https://github.com/EpicGames 确认邀请就可以了
接下来就按照Build It on Linux的步骤,下载、编译安装 就可以啦
git clone -b 4.18 https://github.com/EpicGames/UnrealEngine.git
cd UnrealEngine
//few times Epic folks broke the build so we will get commit that works
// git checkout af96417313a908b20621a443175ba91683c238c8
./Setup.sh
./GenerateProjectFiles.sh
make
//注意 UnrealEngine这个东西很占地方,不仅下载大,编译更大,所以你的HOME下至少要有20G的Free Space,不然等你编译的时候,空间占满了,就失败了,我开始就这样,后来把我的双系统Windows下的一个分区挂到home下的一个文件夹下,才解决。
# go to folder where you clone GitHub projects
git clone https://github.com/Microsoft/AirSim.git
cd AirSim
./setup.sh // 配置依赖
./build.sh //编译airsim库
cd ros
catkin_make // 编译airsim_ros接口
./Engine/Binaries/Linux/UE4Editor 执行这个这个路径下的可执行程序,启动Unreal Engine试试。有两点说明。
These are experimental Linux binaries for Ubuntu 16.04
https://github.com/microsoft/AirSim/releases/tag/v1.2.0Linux
- Africa (safari-like environment with moving animals and poachers)
- Blocks
- City (large environment with moving vehicles and pedestrians)
- Forest
- LandscapeMountains
- Neighborhood (small urban neighbourhood block)
- SimpleMaze
- SubT
- TrapCam (hunting trap camera simulator with large and small game)
- Warehouse
- ZhangJiaJie
Source code (zip)
Source code (tar.gz)
OK 至此,Airsim+UnrealEngine 在Linux下的环境就搭建好了,可以自己先体验一下。
后面再分享Airsim+UnrealEngine的使用
要启动基于Airsim+UnrealEngine4 搭建无人车/无人机自动驾驶仿真环境,需要两个方面:
airsim 采用RPC网络通信,所以可以通过创建rpc client与仿真器的rpc server进行交互。airsim提供了C++ /Python的接口用于基于api的程序开发。可以参考相应的C++ APIs Guide设计
[参考文档]
实现UE4+airsim 实现无人机在simple_flight mode下带有双目+深度的模式
- 场景, 使用linux下预先编译好的 Block.zip
执行命令: ./Blocks.sh
- settign文件
- api
-
{
"SettingsVersion": 1.2,
"SimMode": "Multirotor" // Car or ComputerVision
}
- flight controller runs in actual hardware such as Naze32 or Pixhawk chip.
- connect this hardware to PC using USB port
- Simulator talks to the device to retrieve actuator signals and send it simulated sensor data
{
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"Vehicles": {
"PX4": {
"VehicleType": "PX4Multirotor"
}
}
}
{
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"Vehicles": {
"PX4": {
"VehicleType": "PX4Multirotor",
"UseSerial": false
}
}
}
- firmware runs in your computer as opposed to separate board
参考文档 px4_sitl.md
Airsim SIL简单说明
- 特性:可以通过输入 angle rate, angle level, velocity or position的方式控制
{
"SettingsVersion": 1.2,
"SimMode": "ComputerVision"
}
- In this mode, physics engine is disabled and there is no vehicle, just cameras
- You can move around using keyboard (use F1 to see help on keys). Or you can call APIs to move cameras around and take images.
- You can press Record button to continuously generate images.
airsim 目前支持六种类型传感器
Camera
Barometer = 1
Imu = 2
Gps = 3
Magnetometer = 4
Distance Sensor = 5
Lidar = 6
// ImageType 0~7
Scene = 0,
DepthPlanner = 1, //(更类似于双目深度估计结果SGM) all points that are in plan parallel to camera have same depth
DepthPerspective = 2,//(类似于depth_image_proc 来参生点云)using a projection ray that hits that pixel.
DepthVis = 3, //用于深度可视化的 从近到远被量化成 从黑到白
DisparityNormalized = 4,// 视差图,视差被归一化0-1 use (Xl - Xr)/Xmax
Segmentation = 5, //场景的语义分割图
SurfaceNormals = 6,
Infrared = 7 //根据 object ID 映射成 grey scale 0-255
{ "SettingsVersion": 1.2, "CameraDefaults": { "CaptureSettings": [ { "ImageType": 0, "Width": 256, "Height": 144, "FOV_Degrees": 90, "AutoExposureSpeed": 100, "MotionBlurAmount": 0 } ] }, "SimMode": "ComputerVision" }
{ "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings_json.md", "SettingsVersion": 1.2, "SimMode": "Multirotor", "Vehicles": { "Drone1": { "VehicleType": "simpleflight", "AutoCreate": true, "Sensors": { "LidarSensor1": { "SensorType": 6, "Enabled" : true, "NumberOfChannels": 16, "RotationsPerSecond": 10, "PointsPerSecond": 100000, "X": 0, "Y": 0, "Z": -1, "Roll": 0, "Pitch": 0, "Yaw" : 0, "VerticalFOVUpper": -15, "VerticalFOVLower": -25, "HorizontalFOVStart": -20, "HorizontalFOVEnd": 20, "DrawDebugPoints": true, "DataFrame": "SensorLocalFrame" }, "LidarSensor2": { "SensorType": 6, "Enabled" : true, "NumberOfChannels": 4, "RotationsPerSecond": 10, "PointsPerSecond": 10000, "X": 0, "Y": 0, "Z": -1, "Roll": 0, "Pitch": 0, "Yaw" : 0, "VerticalFOVUpper": -15, "VerticalFOVLower": -25, "DrawDebugPoints": true, "DataFrame": "SensorLocalFrame" } } } } }
Aerial Informatics and Robotics Platform 官方Airsim说明文档
【1/编译安装】
Unreal Engine + AirSim/docs/build_linux.md
[Unreal Engine + AirSim/docs/build_windows.md]
【2/启动与使用】
camera_views.md
通过F1开关camera settings.json设置image mode 机器性能影响帧率
flight_controller.md
简要说明 Flight Controller HIL SIL simple_flight PX4
hello_drone.md 介绍hello drone如何工作的
Airsim启动时,会启动RPC server, Hello Drone uses the RPC client to connect it.
multi_vehicle.md :Setting Up Multiple Vehicles
px4_build.md
make posix_sitl_default
./build_posix_sitl_default/src/firmware/posix/px4 ./posix-configs/SITL/init/ekf2/iris
px4_setup.md PX4 Setup for AirSim
Setting up PX4 Hardware-in-Loop
Setting up PX4 Software-in-Loop
px4_sitl.md 详细讲Setting up PX4 Software-in-Loop
log_viewer.md Log Viewer是一个数据调试工具
【3/深究Airsim】
design.md & paper
code_structure.md Airsim代码组织结构
AirLib包含(Physics engine、Sensor models、Vehicle models、Control library)
Unreal/Plugins/AirSim Unreal Engine中用于自动驾驶的一个插件
MavLinkCom
Sample Programs 一些例程examples hellocar helloDrone Droneshell
custom_drone.md AirLib on a Real Drone
apis.md —— c++ API hello drone/ hello car
python.md——Python API接口使用
image_apis.md
reinforcement_learning.md Reinforcement Learning in AirSim
Hardware-In-Loop Simulation)(HIL)
YouTube有关HIL using Airsim的视频教程
UE+AirSim& PX4+遥控器 在Windows环境下搭建
强化学习demo
DeepQNeuralNetwork in AirSim using CNTK
https://github.com/Microsoft/AirSim/blob/master/PythonClient/DQNdrone.py
Autonomous vehicle navigation based on Deep Reinforcement Learnin using AirSim
参考文档:
Building On Linux
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。