技术分享 | Airsim和PX4远程配置连接教程

2022-03-09  本文已影响0人  阿木实验室
file
前言:
远程配置是指一台计算机上安装windows版airsim,作为服务器,另一台计算机上安装ubuntu的px4,作为客户端。没有采用ubuntu的airsim是因为windows版的airsim更为稳定。当然,可以在windows上用Cygwin Toolchain安装px4。注意,WSL2安装px4本质上也是服务器-客户端的远程模式。

与此相关的Airsim官网教程主要有两个:

特别注意:估计是“年久失修”,两篇教程有许多前后矛盾或不一致的地方,导致看起来非常容易困惑。略看还不行,必须得仔细阅读,有很多细节不能省!而且要仔细阅读前后融贯才能读懂!

主要关键点是:

  1. 在远程ubuntu下安装好px4;
  2. 在windows下配置好airsim的settings.json文件。

1. 远程端Ubuntu安装和配置px4
参考https://microsoft.github.io/AirSim/px4_sitl/ 安装PX4, 注意px4的版本必须是v1.12.0以上,才能支持在ubuntu的~/.bashrc中设置export PX4_SIM_HOST_ADDR=172.21.16.1,这里的ip是指windows上运行airsim的服务器端的ip,告诉Ubuntu上的PX4 airsim所在的位置。

下载好px4后,需要更新submodule,这里如果网不好,可以考虑将github的连接导入gitee,虽然麻烦,但是能行;另一种方法就是挂代理,export https_proxy={ip}:{port} 进行终端代理。
之后,在~/.bashrc中配置环境变量export PX4_SIM_HOST_ADDR=172.21.16.1,这里的ip是Airsim所在windows的ip地址。到此,ubuntu端px4的设置就可以了。

2. Windows端的配置
(1)最关键的地方就是settings.json文件,Airsim默认读取C:\Users{USER}\Documents\AirSim\settings.json文件,为Airsim提供默认的配置,如是否开启激光雷达,深度相机等,详细见https://microsoft.github.io/AirSim/settings/;完整的settings.json文件。

{ "SettingsVersion": 1.2,
"SimMode": "Multirotor",
"ClockType": "SteppableClock",
"Vehicles": {
"PX4": {
"VehicleType": "PX4Multirotor",
"UseSerial": false,
"LockStep": true,
"UseTcp": true,
"TcpPort": 4560,
"ControlIp": "remote",
"ControlPortLocal": 14540,
"ControlPortRemote": 14580,
"LocalHostIp": "172.21.16.1",
"Sensors":{
"Barometer":{
"SensorType": 1,
"Enabled": true,
"PressureFactorSigma": 0.0001825
}
},
"Parameters": {
"NAV_RCL_ACT": 0,
"NAV_DLL_ACT": 0,
"COM_OBL_ACT": 1,
"LPE_LAT": 47.641468,
"LPE_LON": -122.140165
}
}
}
}

其中,ControlIp,ControlPortLocal,ControlPortRemote,跟Control相关的几个变量是用于连接qgc的,这里在主要考虑远程连接px4的时候,可以不用管。
LocalHostIp是必须要指明的,因为px4的sitl软件在环仿真主要通过TCP连接,所以这样才能通过TCP连接。
LockStep是用于远程连接后时间同步的,设为true。
TcpPort一般是px4预设的,这里官网提示需要在windows端打开port授权。
另外,在官网上,还有一个parameter域参数,这个不写到settings.json文件中不会影响远程px4的连接。但建议最好还是清楚每个变量的含义。
其他很好理解,就不赘述了。

(2) 另外需要注意的是,px4的正常连接,需要gps,imu,barometer,magnetometer这些传感器都配置上,否则会提示无法正常启动。如果Airsim界面提示无IMU等数据导致无法无人机无法解锁,请参考https://microsoft.github.io/AirSim/sensors/ 进行添加相应传感器数据。

(3) 配置好windows端的settings.json文件后,启动airsim,然后在ubuntu端启动px4,进入PX4根目录输入make px4_sitl_default none_iris 启动PX4,如果连接成功仿真界面会打印以下信息


file

PX4会打印链接信息


file
如果你始终无法正常连接,并且再三确认ip地址配置正确,请检查windows的防火墙,并尝试关闭防火墙后重试。

(4) 之后在ubuntu端再打开一个shell,运行mavros,本地连接,roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557",就可以开始其他ros相关的开发了。如果mavros与px4不在同一个ubuntu系统中,则后面那个127.0.0.1的ip需要改成px4所在ubuntu系统的ip。
如果成功连接会打印如下信息:


file

(5) 还可以再打开一个shell,通过rosservice call /mavros/cmd/arming True命令来解锁飞机,验证mavros是否通过px4远程控制airsim中的无人机运行。

本文转载自一名不愿透露姓名的大佬

阿木实验室致力于为机器人研发提供开源软硬件工具和课程服务,让研发更高效!

上一篇 下一篇

猜你喜欢

热点阅读