OpenMower配置大全:mower_config环境变量逐项详解(含NTRIP/RTK关键参数)
OpenMower配置大全:mower_config环境变量逐项详解(含NTRIP/RTK关键参数)
【免费下载链接】open_mower_ros项目地址: https://gitcode.com/gh_mirrors/op/open_mower_ros
OpenMower 是一个开源的 DIY 智能割草机器人项目,它把普通的 YardForce 割草机改造为具备 RTK GPS 厘米级定位、自主割草与自动回充能力的机器人。而这一切的"灵魂"都藏在 mower_config 环境变量配置文件里。本文将逐项详解config/mower_config.sh.example中的全部关键参数,并重点拆解 NTRIP/RTK 差分定位的配置方法,让你从零开始也能完成 OpenMower 配置。
一、mower_config 配置文件在哪里?📂
OpenMower 的核心配置位于项目根目录的config/mower_config.sh.example,这是一份带详尽注释的 shell 环境变量模板。使用时将它复制为mower_config.sh并修改即可:
cp config/mower_config.sh.example mower_config.sh📌 两点提醒:
- 项目还提供了一份 JSON 版的参数说明
config/mower_config.schema.json,如果你想新增自定义变量,需要同步维护两份文件。 - 官方正在规划用可视化 UI 取代这个配置文件,未来配置方式会更友好,但现阶段读懂环境变量仍是 OpenMower 配置的必修课。
二、必改的核心硬件环境变量(新手先看这里)🔧
打开配置文件,文件头部就是"Important Settings",绝大多数情况下你只需要动这几个变量。它们决定了固件兼容性、机型物理参数和手柄映射。
| 环境变量 | 可选值 | 说明 |
|---|---|---|
OM_HARDWARE_VERSION | 0_13_X、0_12_X_LSM6DSO、0_11_X_WT901等 | 主板的固件/IMU 芯片版本,务必与你的硬件一致 |
OM_MOWER | YardForce500、YardForceSA650、Sabo、CUSTOM | 割草机机型,自动套用天线位置、轮距等物理参数 |
OM_MOWER_ESC_TYPE | xesc_mini、xesc_2040等 | 电机驱动板类型,STM32 版选 xesc_mini,RP2040 版为实验特性 |
OM_MOWER_GAMEPAD | ps3、shield、xbox360等 | 手柄型号,用于手动遥控 |
其中OM_MOWER对应的硬件参数存放在src/open_mower/params/hardware_specific/YardForce500/default_environment.sh这类机型脚本里,例如天线偏移量OM_ANTENNA_OFFSET_X、轮距OM_WHEEL_DISTANCE_M、每米脉冲数OM_WHEEL_TICKS_PER_M等。选择CUSTOM机型时,你需要把自己的参数放到~/mower_params/目录中。
三、NTRIP/RTK 关键参数详解(厘米级精度核心)📍
OpenMower 之所以能实现精准割草,靠的是 RTK 差分定位:通过 NTRIP 客户端从基站服务器获取 RTCM 差分数据,让机载 GPS 达到厘米级精度。这一整组参数直接决定定位质量,值得重点掌握。
3.1 开启/关闭 NTRIP 差分
export OM_USE_NTRIP=TrueTrue:通过 WiFi 从 NTRIP 服务器拉取差分数据(推荐);False:使用插入 Ardusimple 板卡的外部电台接收差分信号。
NTRIP 客户端节点由src/open_mower/launch/include/_ntrip_client.launch启动,把 NMEA 上发给服务器、把 RTCM 下发给 GPS 模块。
3.2 NTRIP 服务器连接参数(账号配置)
| 环境变量 | 示例 | 含义 |
|---|---|---|
OM_NTRIP_HOSTNAME | 192.168.178.55 | NTRIP 服务器地址或 IP |
OM_NTRIP_PORT | 2101 | NTRIP 服务端口(Caster 常用 2101) |
OM_NTRIP_USER | gps | 账号用户名 |
OM_NTRIP_PASSWORD | gps | 账号密码 |
OM_NTRIP_ENDPOINT | BASE1 | 挂载点(Mount Point),一般由服务器服务商提供 |
这五项是连接 NTRIP 服务器的"钥匙",填错任何一个都会导致拿不到差分数据,GPS 一直停留在米级精度。
3.3 RTCM 超时与断线重连参数(稳定性保障)
| 环境变量 | 默认值 | 含义 |
|---|---|---|
OM_NTRIP_RTCM_TIMEOUT_SEC | 4.0 | 等待 RTCM 数据超时时间(秒),超时即触发重连 |
OM_NTRIP_ADAPTIVE_RECONNECT | True | 开启自适应重连节奏控制 |
OM_NTRIP_ADAPTIVE_BURST_MAX_ATTEMPTS | 12 | 突发窗口内的最大重连次数 |
OM_NTRIP_ADAPTIVE_BURST_WINDOW_SEC | 60.0 | 突发限流窗口时长(秒) |
OM_NTRIP_ADAPTIVE_SLOW_AFTER_SEC | 300.0 | 持续失败多久后进入慢速重连模式 |
OM_NTRIP_ADAPTIVE_SLOW_INTERVAL_SEC | 300.0 | 慢速模式下的重连间隔(秒) |
OM_NTRIP_RECONNECT_INITIAL_DELAY_SEC | 10.0 | 指数退避的初始延迟(秒) |
OM_NTRIP_RECONNECT_MAX_DELAY_SEC | 300.0 | 重连最大延迟(秒) |
OM_NTRIP_RECONNECT_BACKOFF_MULTIPLIER | 2.0 | 退避倍数(每次失败延迟翻倍) |
OM_NTRIP_MAX_ATTEMPTS | 0 | 最大重连次数,0 表示无限重试 |
💡调优建议:如果家里 WiFi 不稳定、经常掉差分,可适当调大OM_NTRIP_RTCM_TIMEOUT_SEC;若 NTRIP 服务器对频繁连接有限制,建议保持自适应重连开启,避免被服务器封禁。
四、GPS 定位参数:地图原点与相对定位 🗺️
定位参数决定坐标系怎么建立,直接影响地图录制和后续导航。
| 环境变量 | 默认值 | 含义 |
|---|---|---|
OM_USE_RELATIVE_POSITION | False | False用 DATUM 点作地图原点;True以基站为原点(推荐保持 False,移动基站不用重录地图) |
OM_DATUM_LAT/OM_DATUM_LONG | 需自行填写 | 充电站附近的经纬度坐标,作为地图原点 |
OM_GPS_PROTOCOL | UBX | u-blox 芯片用 UBX,其他芯片用 NMEA |
OM_GPS_BAUDRATE | 921600 | GPS 串口波特率 |
OM_GPS_PORT | 自动检测 | GPS 串口设备路径,USB 版可填/dev/serial/by-id/... |
OM_USE_F9R_SENSOR_FUSION | False | F9R 芯片的传感器融合,不稳定且无法测试,不知道就别开 |
如果你的 GPS 模块通过 TCP 转发数据(如外接网络串口服务器),还可以用OM_GPS_DEVICE_TYPE="tcp"配合OM_GPS_TCP_HOSTNAME、OM_GPS_TCP_PORT来读取。这些参数最终由src/open_mower/launch/include/_params.launch注入 ROS 参数服务器。
五、割草行为与自动模式参数 🌱
想让割草机真正"自动",核心是这几个变量:
| 环境变量 | 默认值 | 含义 |
|---|---|---|
OM_ENABLE_MOWER | true | 是否启用割草电机,调试阶段建议关掉 |
OM_AUTOMATIC_MODE | 0 | 2=AUTO 全自动、1=SEMIAUTO 割完一遍等手动、0=MANUAL 手动启动 |
OM_OUTLINE_COUNT | 4 | 沿边界跑几圈,不建议低于 4 |
OM_TOOL_WIDTH | 0.13 | 割草行宽(米),设小一点可增加重叠防止漏割 |
OM_OUTLINE_OFFSET | 0.05 | 边界向内偏移的安全余量 |
OM_MOWING_ANGLE_OFFSET | 0 | 割草角度偏移,-90 表示正北方向 |
OM_MOWING_ANGLE_INCREMENT | 0 | 每割完整张地图自动旋转的角度,可减少草坪压痕 |
六、出库与入库(停靠)参数 🔌
自动回充依赖两组参数配合:
出库(Undock):OM_UNDOCK_DISTANCE(出库第一段距离,需足够 GPS 定位)、OM_UNDOCK_ANGLED_DISTANCE(第二段斜向距离)、OM_UNDOCK_ANGLE(斜向角度,负值向左)、OM_UNDOCK_FIXED_ANGLE(固定角度还是每次交替方向以减少草坪磨损)、OM_UNDOCK_USE_CURVE(第二段走曲线还是直线)。
入库(Dock):OM_DOCKING_APPROACH_DISTANCE(开始入库的距离,必须大于充电站到割草区域的距离)、OM_DOCKING_DISTANCE(触到第二停靠点后继续前进的距离)、OM_DOCKING_EXTRA_TIME(检测到电压后继续顶入的时间,增强触点接触)、OM_DOCKING_RETRY_COUNT(重试次数)、OM_DOCKING_REDOCK(入库后电压消失是否重新对接)。
部分 Mowgli 机型还可通过OM_PERIMETER_SIGNAL使用边界线信号辅助入库。
七、电池与温度保护参数 🔋
| 环境变量 | 默认值 | 含义 |
|---|---|---|
OM_BATTERY_FULL_VOLTAGE | 28.5 | 判定满电的电压 |
OM_BATTERY_EMPTY_VOLTAGE | 24.0 | 低于此电压持续 20 秒后回充 |
OM_BATTERY_CRITICAL_VOLTAGE | 23.0 | 立即回充的临界电压 |
OM_MOWING_MOTOR_TEMP_HIGH | 80.0 | 割草电机过热停机温度 |
OM_MOWING_MOTOR_TEMP_LOW | 40.0 | 冷却到该温度后恢复割草 |
进阶玩家还可以设置充电过压/过流保护:OM_BATTERY_CRITICAL_HIGH_VOLTAGE、OM_CHARGE_CRITICAL_HIGH_VOLTAGE、OM_CHARGE_CRITICAL_HIGH_CURRENT。
八、雨天策略参数 🌧️
OM_RAIN_MODE提供 4 档策略:0=忽略降雨、1=下雨立即回充、2=回充等草干再出来(时长由OM_RAIN_DELAY_MINUTES控制,最小 30 分钟)、3=暂停自动模式。OM_CU_RAIN_THRESHOLD是雨量传感器阈值,值越大判定越"干燥"。
九、调试、录制与快照参数 🛠️
OM_ENABLE_RECORDING_ALL=True:录制整段会话用于排查问题(存放在 $HOME,注意别长期开启以免塞满 SD 卡);OM_SNAPSHOT_MEMORY_PER_TOPIC与OM_SNAPSHOT_DURATION:在内存中缓存最近的 ROS 消息,出问题时用utils/scripts/save_snapshot.sh一键导出快照包,方便事后回放分析。
十、MQTT 联动与声音参数 🔊
把割草机接入智能家居?配置OM_MQTT_ENABLE、OM_MQTT_HOSTNAME、OM_MQTT_PORT、OM_MQTT_USER、OM_MQTT_PASSWORD和OM_MQTT_TOPIC_PREFIX,即可向外部 MQTT Broker 发布状态数据。
声音相关:OM_DFP_IS_5V(⚠️ 只有焊接改过 5V 跳线才能开,否则可能烧毁树莓派 Pico)、OM_LANGUAGE(en/de)、OM_VOLUME(0-100,-1 表示交给 CoverUI 管理)、OM_BACKGROUND_SOUNDS(下雨时哼歌等趣味背景音,默认关闭以免吓到邻居)。
十一、配置完成后如何验证?✅
- 在 Docker 环境中重启 OpenMower 容器,让环境变量重新注入;
- 打开 RViz 观察定位:RTK 固定解(Fixed)状态下点位应稳定不漂移;
- 用遥控手柄(
OM_MOWER_GAMEPAD对应机型)手动测试出库、入库; - 检查 NTRIP 客户端日志,确认 RTCM 数据持续流入。
小结
OpenMower 配置并不复杂,核心思路就是:硬件参数对齐 → NTRIP/RTK 连通 → 地图原点正确 → 行为参数微调。先把第三节的 NTRIP/RTK 关键参数配通,你就能收获一台真正"厘米级"自主割草的机器人了。如果遇到问题,对照config/mower_config.schema.json检查变量名拼写,往往是最大的坑。
【免费下载链接】open_mower_ros项目地址: https://gitcode.com/gh_mirrors/op/open_mower_ros
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考