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

Posted 阿木实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 | Airsim和PX4远程配置连接教程相关的知识,希望对你有一定的参考价值。

前言: 远程配置是指一台计算机上安装windows版airsim,作为服务器,另一台计算机上安装ubuntu的px4,作为客户端。没有采用ubuntu的airsim是因为windows版的airsim更为稳定。当然,可以在windows上用Cygwin Toolchain安装px4。注意,WSL2安装px4本质上也是服务器-客户端的远程模式。

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

  • Setting up PX4 Software-in-Loop
  • PX4 Software-in-Loop with WSL 2。

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

主要关键点是:

  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:\\UsersUSER\\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,如果连接成功仿真界面会打印以下信息 PX4会打印链接信息 如果你始终无法正常连接,并且再三确认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。 如果成功连接会打印如下信息:

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

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

  • End - 技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。

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

以上是关于技术分享 | Airsim和PX4远程配置连接教程的主要内容,如果未能解决你的问题,请参考以下文章

Airsim动态 | 不会硬件在环仿真的小伙伴,看过来~

零基础同学的福利,带你走进Airsim 的大门

Airsim动态 | 带你了解Airsim结构框架

技术分享 | Airsim初探-用游戏引擎做仿真

Airsim动态 | ROS教程(AirSim ROS Tutorial)

Win10配置Airsim环境并设置Python通信