博客地址:https://www.cnblogs.com/zylyehuo/
参考视频: 保姆级教程~手把手教你实现 ROS2 + PX4 + AirSim 联动
博主使用的版本配置如下:
- ROS: 20.04 noetic 【echo $ROS_DISTRO】
- PX4: v1.13.2 【git describe --tags】
- AirSim: 1.7.0 【找到\Unreal\Plugins\AirSim这个目录,进入后,打开AirSim.uplugin文件查看版本】
PX4 开发环境搭建
- MAVROS + QGC + PX4
参考链接: PX4 仿真环境开发整理
参考链接: Linux系统 ubuntu20.04 无人机 PX4 开发环境搭建
遇到报错参考链接: make px4_sitl_default gazebo出错
遇到报错参考链接: Gazebo终端显示[Err] [InsertModelWidget.cc:403] Missing model.config for model
遇到报错参考链接: px4 运行mavros仿真
AirSim 仿真平台搭建
- UE4 + AirSim
参考链接: 在Ubuntu系统中搭建Unreal4和AirSim环境
安装 Micro-XRCE-DDS-Agent
参考链接: Installing the Agent standalone
- 安装指令
$ git clone https://github.com/eProsima/Micro-XRCE-DDS-Client.git$ cd Micro-XRCE-DDS-Client$ mkdir build && cd build$ cmake ..$ make -j8$ sudo make install$ sudo ldconfig /usr/local/lib/$ MicroXRCEAgent --help
安装 ROS
参考链接: 小鱼的一键安装系列
wget http://fishros.com/install -O fishros && . fishros
参考链接: ubuntu20.04下载和使用Airsim的ros包
遇到报错参考链接: 解决Ubuntu系统下ROS包找不到问题:环境配置与路径检查详解
AirSim 配置文件修改
settings.json
{"SettingsVersion": 1.2,"SimMode": "Multirotor","ClockType": "SteppableClock","Vehicles": {"PX4": {"VehicleType": "PX4Multirotor","UseSerial": false,"LockStep": true,"UseTcp": true,"TcpPort": 4560,"ControlPortLocal": 14030,"ControlPortRemote": 14280,"ControlIp": "remote","LocalHostIp": "192.168.1.5","Cameras": {"CameraDepth": {"CaptureSettings": [{"ImageType": 2,"Width": 800,"Height": 600,"FOV_Degrees": 120,"AutoExposureSpeed": 100,"AutoExposureBias": 0,"AutoExposureMaxBrightness": 0.64,"AutoExposureMinBrightness": 0.03,"MotionBlurAmount": 0,"TargetGamma": 1.0,"ProjectionMode": "","OrthoWidth": 5.12}],"NoiseSettings": [{"Enabled": false,"ImageType": 0,"RandContrib": 0.2,"RandSpeed": 100000.0,"RandSize": 500.0,"RandDensity": 2,"HorzWaveContrib":0.03,"HorzWaveStrength": 0.08,"HorzWaveVertSize": 1.0,"HorzWaveScreenSize": 1.0,"HorzNoiseLinesContrib": 1.0,"HorzNoiseLinesDensityY": 0.01,"HorzNoiseLinesDensityXY": 0.5,"HorzDistortionContrib": 1.0,"HorzDistortionStrength": 0.002}],"Gimbal": {"Stabilization": 0,"Pitch": 0, "Roll": 0, "Yaw": 0},"X": 0, "Y": 0, "Z": -1,"Pitch": 0, "Roll": 0, "Yaw": 0,"UnrealEngine": {"PixelFormatOverride": [{"ImageType": 0,"PixelFormat": 0}]}},"CameraImage": {"CaptureSettings": [{"ImageType": 0,"Width": 800,"Height": 600,"FOV_Degrees": 120,"AutoExposureSpeed": 100,"AutoExposureBias": 0,"AutoExposureMaxBrightness": 0.64,"AutoExposureMinBrightness": 0.03,"MotionBlurAmount": 0,"TargetGamma": 1.0,"ProjectionMode": "","OrthoWidth": 5.12}],"X": 0, "Y": 0, "Z": -1,"Pitch": 0, "Roll": 0, "Yaw": 0}},"Sensors":{"Magnetometer": {"SensorType": 4,"Enabled": true},"Barometer":{"SensorType": 1,"Enabled": true,"PressureFactorSigma": 0.0001825},"Imu": {"SensorType": 2,"Enabled" : true,"AngularRandomWalk": 0.3,"GyroBiasStabilityTau": 500,"GyroBiasStability": 4.6,"VelocityRandomWalk": 0.24,"AccelBiasStabilityTau": 800,"AccelBiasStability": 36},"Gps": {"SensorType": 3,"Enabled" : true,"EphTimeConstant": 0.9,"EpvTimeConstant": 0.9,"EphInitial": 25,"EpvInitial": 25,"EphFinal": 0.1,"EpvFinal": 0.1,"EphMin3d": 3,"EphMin2d": 4,"UpdateLatency": 0.2,"UpdateFrequency": 50,"StartupDelay": 1},"Lidar": {"SensorType": 6,"Enabled": true,"NumberOfChannels": 16,"RotationsPerSecond": 10,"PointsPerSecond": 100000,"X": 0, "Y": 0, "Z": -1,"Roll": 0, "Pitch": 0, "Yaw": 0,"VerticalFOVUpper": 10,"VerticalFOVLower": -10,"HorizontalFOVStart": -20,"HorizontalFOVEnd": 20,"DrawDebugPoints": true,"DataFrame": "SensorLocalFrame"},"DistanceDown": {"SensorType": 5,"Enabled" : true,"MinDistance": 0.1,"MaxDistance": 40,"X": 0, "Y": 0, "Z": -0.5,"Yaw": 0, "Pitch": -90, "Roll": 0,"DrawDebugPoints": true,"ExternalController": true}},"Parameters": {"NAV_RCL_ACT": 0,"NAV_DLL_ACT": 0,"COM_OBS_AVOID": 0}}}
}