无人机嵌入式智能硬件【免费下载链接】inavINAV: Navigation-enabled flight control software项目地址https://gitcode.com/gh_mirrors/in/inav点击查看免费下载本文是 INAV 软件在环仿真SITL接入 RealFlight 飞行仿真器的专项指南。文章以 docs/SITL/RealFlight.md 为骨架结合 RealFlight 仿真接口源码 与 SITL 命令行解析实现完整覆盖支持版本、场景参考坐标、RealFlight 侧设置、摇杆配置、模型净化、高度修正与 channelmap 映射等关键环节。读完本文你将掌握让 INAV SITL 与 RealFlight 正常建立链路、并驱动自主任务与自动降落等 GPS 功能仿真调试的完整操作流程。一、概述支持版本与适用场景INAV 的 SITL 目标支持通过仿真器数据驱动完整的飞控软件详见 SITL 总览其中与 RealFlight 的对接支持以下两个版本RealFlight 9.5SRealFlight Evolution不支持 RealFlight-X请勿混用RealFlight 的优势在于其对模型飞行特有层面的仿真能力Autolaunch自动发射/弹射起飞与混控器mixer均可正常使用因此特别适合用于验证固定翼模型的起飞、混控联动以及完整的自主飞行链路。需要注意RealFlight 与 X-Plane 的定位不同X-Plane 基于真实世界数据适合 GPS 航点任务而 RealFlight 的 3D 场景基于西班牙南部 Sierra Nevada 的真实地形数据构建INAV 将其中的RealFlight Ranch 场景作为参考该场景位于坐标纬度37.118949°经度-2.772960°要使用任务规划mission planner及其他 GPS 相关功能请务必选用该场景。二、底层连接机制固定端口的 SOAP 接口从源码结构看INAV 与 RealFlight 通过 RealFlight 提供的 SOAPXML-over-HTTP接口进行双向数据交换核心实现位于 realFlight.c连接端口为固定端口18083源码#define RF_PORT 18083因此在 SITL 命令行中无需指定端口连接目标为http://simip:18083/超时 1000ms初始化流程分两步先调用RestoreOriginalControllerDevice恢复被占用的控制器设备避免连接中断后接口卡死在半初始化状态再调用InjectUAVControllerInterface注入 UAV 控制器接口建立连接后通过ExchangeData动作SOAP action周期性地双向交换数据。SITL 端启动时会等待直至连接建立并收到首个有效数据包simRealFlightInit内通过条件变量等待以避免启动标定阶段出现问题。退出时simRealFlightClose会恢复 RealFlight 的原始控制器设备并清除SIMULATOR_MODE_SITL解臂标志。正是由于端口固定RealFlight 侧的连接无需像 X-Plane 那样查询端口只需要在 RealFlight 中开启数据链路即可。三、RealFlight 侧环境设置3.1 常规设置General settings在 RealFlight 的菜单中依次进入Settings → Physics → Quality开启RealFlight Link enabled作为 SITL 命令行选项端口不需要指定固定为 18083为了获得更接近真实的结果将难度级别设置为Realistic。3.2 关于高度的特别警告[!CAUTION] 场景中机场airfield的周边区域已经被人工平整处理过。如果打算在机场附近测试 Autoland自动降落不要使用 Sea level ref海平面参考以及 Configurator 自动确定的高度值。 要么改用相对高度relative elevations要么手动修正高度。 该机场的海拔高度恰好为 1300 米。这一点在测试高度保持、自动降落等依赖气压高度/绝对高度的功能时尤其关键错误的基准高度会导致控制逻辑完全偏离预期。四、摇杆Joystick配置在 RealFlight 的设置中校准摇杆calibrate the joystick完成设置并按与 INAV 一致的顺序分配各轴通道通道顺序保持一一对应RealFlight 的通道 1副翼/Aileron即 INAV 的通道 1副翼其余通道依此类推。这与 X-Plane 的映射方式X-Plane 需把油门映射到 Cowl Flap 等特殊通道见 X-Plane 文档不同RealFlight 的通道顺序与 INAV 天然对齐配置更为直观。在 INAV 侧接收机类型应选择SIM (SITL)摇杆接口最多支持8 个通道若需要更多通道可改用 MSP_RX 方式MSP_RX 是默认方式支持最多 18 个通道。许多遥控器radio通过 USB 接入电脑后可被识别为摇杆这是最简便的连接方式。五、准备模型Prepare the models为了让 INAV 的飞控逻辑完全接管模型控制RealFlight 模型编辑器中所有会影响混控和舵机的设置都必须停用在模型编辑器Model Editor的Electronics标签页中删除所有混控器mixers将各舵机servos直接连接到虚拟接收机输出virtual receiver output。在Radio标签页中停用Expo和低速率low rates将Activate when: Never设为生效条件确保任何速率/曲线修正都不会被注入。然后像配置真实模型一样根据 RealFlight 中所选机型在 INAV 中完成模型配置包括 Mixer、Expo 等参数。这样做的目的很明确所有混控与舵面联动完全交由 INAV 的混控器与伺服逻辑计算RealFlight 只负责提供物理模型与气动反馈避免双重混控导致通道输出错乱。六、通道映射Channelmap完成模型准备后需要在 Configurator 中或通过命令行调整 channelmap将 INAV 的电机/舵机输出映射到 RealFlight 的虚拟接收机通道。6.1 语法格式channelmap 的完整语法如下见 SITL.md 与 target.c 参数解析(M(otor)|S(ervo)INAV-OUT-RECEIVER-OUT),...M表示电机输出S表示舵机输出INAV-OUT为 INAV 侧的输出编号RECEIVER-OUT为 RealFlight 虚拟接收机通道编号所有数字都必须使用两位即补零到两位数如01多个映射项之间用逗号分隔。在 target.c 的parseMapping函数中可以看到严格的校验逻辑每个条目长度必须恰好为 6 个字符必须以M或S开头且电机/舵机输出与接收机通道编号须在合法范围内解析失败会直接报错并退出。6.2 完整示例例如要把 INAV 的电机 1 映射到虚拟接收机通道 1、舵机 1 映射到通道 2、舵机 2 映射到通道 3--chanmapM01-01,S01-02,S02-036.3 输出数量限制RealFlight 接口最多支持12 个 PWM 输出通道源码中RF_MAX_PWM_OUTS与RF_MAX_CHANNEL_COUNT均为 12。从 target.c 的启动逻辑可以看到若映射的输出数量超过 12 个SITL 会报错 Mapping error. RealFlight supports a maximum of 12 PWM outputs 并回退到无仿真器模式。因此请确保模型使用的电机舵机总数不超过 12 路。七、启动与连接7.1 推荐启动顺序按 SITL.md 的建议按以下顺序启动工具先启动仿真器——飞机应处于可起飞ready for take-off状态再启动 SITL最后启动 OSD如需。7.2 构建 SITLSITL 目标需要通过 cmake 显式开启详见 Building SITLmkdir build_SITL cd build_SITL cmake -DSITLON .. make也可使用 ninja 并行构建cmake -GNinja -DSITLON .. ninja编译要求现代 GCC必须是真正的 GCCgcc13 或更高版本推荐、Unix sockets 网络与 pthreadsWindows 上需在 Cygwin 下编译。7.3 关键命令行选项RealFlight 相关的核心选项如下SITL 由 Configurator 启动时可不用命令行参数手动启动 SITL 可执行文件时才需要选项说明示例--simrf选择 RealFlight 仿真器--simrf--simip[ip]仿真器主机 IP/主机名省略时默认127.0.0.1--simip192.168.1.10--chanmap[map]输出通道映射格式见上文--chanmapM01-01,S01-02,S02-03--useimu使用仿真器 IMU 传感器数据而非直接姿态数据仅建议调试时使用--useimu--path[path]指定配置/EEPROM 文件路径缺省用当前目录eeprom.bin--path/home/user/sitl-eeproms/test-eeprom.bin--serialport[port]使用宿主机串口连接串行接收机/代理飞控--serialport/dev/ttyACM3--serialuart[uart]将串行接收机映射到指定 SITL UART--serialuart3--baudrate串行接收机波特率默认 115200--baudrate115200--help显示全部命令行选项--help需要特别说明RealFlight 端口固定为 18083因此--simport对 RealFlight 不是必需的该选项主要为 X-Plane 等协议使用见 SITL.md不带任何参数启动 SITL 时仅可使用 MSP/CLI 串行连接例如 Configurator对于带参数的选项--flagvalue与--flag value两种写法均支持。八、数据流与传感器仿真原理理解 RealFlight 接口的数据流有助于排查连接与调参问题。从 realFlight.c 的exchangeData函数可以看到每个仿真周期内 SITL 会发送控制输出将电机motor[]与舵机servo[]的 PWM 值归一化到 0~1 浮点写入 SOAP 请求中的 12 通道数组发送给 RealFlight接收物理量从响应中解析空速airspeed、海拔altitudeASL/AGL、地速、俯仰/横滚/偏航角速度、航向角、俯仰角、横滚角、飞机位置、三轴速度与机体加速度、电池电压/电流、飞机状态如CAS-WAITINGTOLAUNCH以及 12 通道遥控值喂给飞控的各类 FAKE 传感器即用户必须在 INAV 中将传感器类型设为FAKE详见 SITL.md 传感器章节GPSgpsFakeSet以 3D 定位GPS_FIX_3D、16 颗星模拟由仿真器位置换算经纬度以场景地图原点36.910610°, -2.876605°为基准做平面直角坐标换算IMU 姿态默认直接使用 RealFlight 的姿态数据imuSetAttitudeRPY仅在加--useimu时才改用 IMU 原始数据陀螺仪fakeGyroSet将角速度按16.0系数换算为 INAV 单位加速度计fakeAccSet当飞机处于等待发射CAS-WAITINGTOLAUNCH状态时源码中注释指出 RealFlight 的加速度数据在未起飞时不可靠因此伪造 1G 水平姿态静止值气压计fakeBaroSet由海拔换算气压并固定 21°C空速管PitotfakePitotSetAirspeed喂入空速测距仪Rangefinder当 AGL 高度落在虚拟测距仪量程内时喂入该值否则置 -1磁力计由姿态角反算北方向量喂入电池fakeBattSensorSetVbat/fakeBattSensorSetAmperage喂入电压与电流。因此在 INAV 配置中IMU、GPS、Pitot、磁力计、测距仪、气压计、电池这些传感器类型都要选择FAKE它们的数据才会来自 RealFlight 仿真器。这也解释了为什么 RealFlight 非常适合验证依赖气压高度与空速的固定翼控制逻辑包括 Autolaunch、混控器联动因为空速、升降率、地速等数据全部来自仿真物理模型。九、接收机遥控接入方式RealFlight 链路下的遥控信号接入有以下几种方式详见 SITL.mdMSP_RX默认通过 TCP/IP 连接最多支持 18 个通道摇杆/无线电经 USB 接入经仿真器仅支持 8 通道INAV 接收机类型选 SIM (SITL)经 USB 转串口接入串行接收机例如 SBUS、CRSF 接收机通过--serialport转发宿主机串口到 SITL UART代理飞控proxy FC使用任意 INAV/Betaflight 飞控作为接收机代理接收机类型统一选 SIM。十、常见注意事项小结版本选择仅支持 RealFlight 9.5S 与 RealFlight EvolutionRealFlight-X 不可用场景选择使用 GPS 功能任务规划、RTH、自动降落等务必选择 RealFlight Ranch 场景Lat 37.118949°, Lon -2.772960高度参考测试 Autoland 时禁用 Sea level ref 与 Configurator 自动高度改用相对高度或手动修正机场海拔 1300 米端口固定RealFlight 使用固定端口 18083命令行无需指定端口输出上限RealFlight 接口最多 12 路 PWM 输出超出会启动失败模型净化必须删除 RealFlight 模型编辑器中全部混控器、将舵机直连虚拟接收机输出、停用 Expo 与低速率混控逻辑完全交由 INAV 计算通道顺序RealFlight 与 INAV 的通道一一对应通道 1 副翼对副翼依此类推无需像 X-Plane 那样做特殊轴映射。以上步骤全部完成后即可在 INAV 中开启任务规划、高度保持、自动降落等 GPS 相关功能进行全软件在环仿真调试实现模型飞行层面由 RealFlight 提供、控制与自主飞行逻辑由 INAV 决策的完整仿真闭环。赞分享无人机嵌入式智能硬件【免费下载链接】inavINAV: Navigation-enabled flight control software项目地址https://gitcode.com/gh_mirrors/in/inav点击查看免费下载相关推荐INAV SITL 与 X-Plane 联调实战指南航点 GPS 任务仿真、数据链路与通道映射全解析INAV SITL 与 X Plane 联调实战指南航点 GPS 任务仿真、数据链路与通道映射全解析 INAV 的 SITLSoftware In The无人机嵌入式智能硬件CCX 网关接入 Claude CodeMessages 渠道配置、环境变量与模型映射实战指南CCX 网关接入 Claude CodeMessages 渠道配置、环境变量与模型映射实战指南 导读 本文基于 CCX 官方指南 docs/guide/clAPI网关LLM 网关后端Gazebo仿真环境配置与模型应用指南在机器人技术研发和自动化系统测试中 Gazebo仿真环境 已成为不可或缺的工具。面对复杂的 机器人建模 和 环境配置 需求许多开发者常遇到模型加载失败、物理机器人上一篇CodeIgniter String Helper 完全指南8 个内置字符串函数与源码级解析下一篇create-nuxt-app进阶技巧如何扩展模板系统支持自定义框架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考