APM无人船测绘实战:从RTK、测深仪到遥控器与摄像头的系统集成
1. 硬件选型与连接打造你的无人船“神经系统”搞APM无人船测绘第一步也是最关键的一步就是把一堆看起来毫不相干的硬件“攒”到一起让它们能互相听懂对方的话。这就像给船装上一个“神经系统”RTK是大脑负责精准定位测深仪是耳朵负责听水深遥控器是手脚负责控制摄像头是眼睛负责看路。我刚开始玩的时候也是一头雾水各种线、各种接口生怕接错了烧设备。踩过几次坑之后我总结了一套比较稳妥的硬件选型和连接方案你可以直接抄作业。首先说飞控这是整个系统的“心脏”。我用的也是Pixhawk 6C Mini它体积小、接口全非常适合无人船这种空间有限的平台。选它的一个重要原因是它的串口Telem Port足够多能同时接RTK、数传遥控器和测深仪不用再额外加扩展板省心不少。记住飞控的供电一定要稳我建议直接从船体的电源分配板取电用5V/3A的BEC模块单独给飞控供电避免和其他大功率设备比如推进电机共用一个电源导致电压波动飞控一抽风船可就乱跑了。接下来是RTK我用的是元生惯导的YIN680。这东西精度高能到厘米级对于测绘来说至关重要。但新手最容易在这里栽跟头。这个模块默认输出的是私有二进制数据APM的固件根本不认识。你得先用一个USB转TTL模块把RTK的MAIN口接到电脑的串口助手上。注意串口助手要设置成十六进制模式然后发送一串“魔法指令”59 53 4e 22 00 03 00 00 00 73 fa。发送成功后模块才会乖乖地输出标准的NMEA语句主要是GPGGA和GPRMC。这时候你再把RTK的MAIN口接到飞控的GPS口通常是GPS1在QGC地面站的参数列表里找到GPS_TYPE参数把它设置为“自动”Auto或者对应的NMEA协议飞控就能正确识别RTK信号了。实测下来这个步骤是必须的否则你在地面站上永远看不到“3D Fix”的提示。测深仪我选的是元厚的HXF260单频的对于内陆湖泊、河流的测绘足够用了性价比高。它的连接稍微复杂点因为它用的是标准的RS-232接口DB9头而我们的飞控和RTK都是TTL电平。这就需要一个小道具RS-232转TTL模块。接线的时候要记住“交叉互联”原则测深仪的TX接转换模块的RX测深仪的RX接转换模块的TXGND对GND。然后转换模块的TTL端TX、RX、GND再接到飞控的另一个空闲串口上比如Serial 4/5。别忘了给这个232转换模块单独供上5V电它自己可不会发电。在QGC里你需要把这个串口的协议SERIALx_PROTOCOL设置为“Depth Sensor”水深传感器波特率设置成和测深仪输出一致通常是115200。遥控器我用的是云卓H12 Pro它自带一个接收机这个接收机有两个关键输出一个是SBUS信号用于遥控指令一个是串口数传信号用于和地面站通讯。接线很简单接收机的SBUS口三根线信号、正极、负极接到飞控的RCIN口接收机的串口通常是标着Telem的那个接到飞控的Telem1口。这里有个坑我踩过H12 Pro接收机需要稳定的5V供电如果直接从飞控的舵机口取电可能因为电流不够导致接收机红灯常亮无法对频。最好也是从船体电源单独拉一根5V的线给它。最后是摄像头我用了两种一种是云卓配套的网口三体摄像头专为H12 Pro设计接线简单另一种是更通用的海康威视MINI PTZ摄像机功能强但设置麻烦。对于新手我强烈建议先从配套摄像头玩起成功率高能快速建立信心。配套摄像头一般通过网线直连遥控器接收机的网口在遥控器的助手APP里就能直接看到画面并把RTSP流地址推送到QGC地面站。而海康摄像头需要单独设置网络参数我们放到后面详细说。2. 飞控参数配置让“大脑”理解所有传感器硬件连好了只是物理上通了电。想让飞控这个“大脑”真正理解RTK、测深仪在说什么还得进行细致的参数配置。这个过程就像给大脑安装各种语言的翻译器。打开QGC地面站连接上飞控我们主要折腾以下几个地方。首先是GPS/RTK的设置。在“飞行视图”的侧边栏找到“传感器”设置点击“GPS”。如果前面RTK配置正确这里应该能看到卫星数量和“RTK Float”或“RTK Fixed”的状态。关键参数在“参数设置”界面里搜索GPS_TYPE: 设置为“1”Auto让飞控自动检测NMEA协议。GPS_AUTO_SWITCH: 建议设置为“1”启用这样飞控会自动选择信号最好的GPS源如果你以后想装两个RTK做冗余这个功能就很有用。EK3_SRC1_POSXY和EK3_SRC1_POSZ: 对于Pixhawk 6C这些扩展卡尔曼滤波器的参数默认已经将位置源设为了GPS。你只需要确认一下即可。重点是如果你想使用RTK提供的航向信息Yaw原始固件可能不支持解析NMEA语句中的RMC航向。这就需要你按照我前面提到的去修改ArduPilot固件源码中的AP_GPS_NMEA.cpp文件添加解析代码然后重新编译固件。这对于要求高精度航向的测绘任务比如生成正射影像图很重要。如果觉得编译固件太硬核也可以依赖飞控自带的磁罗盘或船载IMU的航向但精度会差一些。其次是测深仪的配置。去到参数列表搜索你连接测深仪的那个串口比如我接在Serial 4上SERIAL4_PROTOCOL: 设置为“11”Depth Sensor。SERIAL4_BAUD: 设置为“115200”与测深仪输出波特率匹配。 然后搜索水深相关参数RNGFND_TYPE: 设置为“10”Serial。RNGFND_BAUD: 同样设置为“115200”。RNGFND_ADDR: 这个参数对于某些通过串口发送特定格式数据的测深仪可能需要设置地址对于输出标准NMEA DBT语句的元厚HXF260通常不用管或设为0。 配置好后在QGC的“飞行视图”仪表盘上你应该能看到一个“水深”或“高度低于水面”的读数。你可以把船放到一个已知深度的水域比如码头边看看读数是否准确进行校准。然后是遥控器的校准。这个必须在所有硬件连接好之后做。在QGC的“安全”设置里进入“遥控器校准”。按照提示将遥控器的所有摇杆、拨动开关移动到它们的最大、最小范围。确保在“高级设置”里通道映射是正确的通常是模式通道、返航通道等。校准完成后动一动摇杆在地面站上观察对应的通道条是否平滑移动。这里有个小技巧把遥控器的失控保护FailSafe设置好比如当信号丢失时自动触发“返航”或“停船”模式这是水上安全的重要保障。最后是数传遥控器通讯的设置。确保飞控上连接遥控器数传的串口如Telem1参数正确SERIAL1_PROTOCOL: 设置为“1”MAVLink 1。SERIAL1_BAUD: 设置为“57600”与H12 Pro接收机默认数传波特率一致如果改了遥控器端这里也要同步。 这样你的QGC地面站才能通过遥控器的数传链路实时收到飞控的遥测数据位置、姿态、传感器状态等实现超视距控制。3. 摄像头集成与视频流推送为无人船装上“眼睛”让无人船能实时传回画面对于测绘中的现场监控、目标识别和航线微调太有用了。这里我分两种情况讲用配套摄像头省心和用第三方网络摄像头功能强。对于云卓H12 Pro配套的网口三体摄像头这基本上是最简单的“开箱即用”方案。按照说明书用网线将摄像头连接到接收机的网口。然后打开遥控器上的“H12 Pro助手”APP进入“视频查看”。通常点击底部的设置按钮在视频流类型里选择“网口三体”或类似的选项画面就应该出来了。APP里会显示一个RTSP流地址形如rtsp://192.168.144.xxx:554/...。你只需要在QGC地面站的“视频”设置里选择“视频源”为“RTSP”然后将这个地址完整地粘贴进去。QGC就会自动拉取视频流并显示在界面上。这种方案的优点是稳定、延迟低几乎不用配置。对于海康威视这类第三方网络摄像头自由度更高比如可以云台控制但配置步骤繁琐是新手劝退高发区。我以海康MINI PTZ为例详细走一遍流程初始网络设置首先不要直接连到遥控器。用一根网线将摄像头和你的电脑直连同时用12V电源给摄像头供电。你的电脑需要暂时把无线网络关掉避免干扰。修改电脑IP进入电脑的网络设置将有线网卡的IPv4地址设置为手动模式。IP地址设为192.168.144.50只要不是.1和.10就行子网掩码255.255.255.0网关可以不设或设192.168.144.1。搜索并修改摄像头IP从海康官网下载“设备网络搜索”工具SADP。打开后软件会发现摄像头其初始IP可能是192.168.1.64。选中它在右侧输入管理员密码新摄像头需要先激活设置密码将摄像头的IP改为192.168.144.123子网掩码255.255.255.0网关设为192.168.144.11这个网关地址是云卓接收机LAN口的内网网关很关键。点击保存。验证视频流保持电脑IP在192.168.144.x网段。打开VLC播放器选择“媒体” - “打开网络串流”输入地址rtsp://admin:你的密码192.168.144.123:554/Streaming/Channels/102。这里的102代表“子码流”码率低、延迟小更适合无线传输。如果能看到画面说明摄像头本身设置成功了。优化码流设置重要在电脑浏览器输入http://192.168.144.123用管理员账号登录摄像头Web后台。进入“配置” - “视音频”页面。这里你需要配置两个码流主码流Channel 1和子码流Channel 2。主码流分辨率可以设高些如1080P但码率类型一定要选“固定码率”码率上限设为2048 Kbps2Mbps。帧率15-20即可。编码格式H.264。子码流分辨率设为720P码率类型同样选“固定码率”码率上限设为1024 Kbps1Mbps。这是推送到QGC的关键流码率固定且较低能保证在数传带宽有限的情况下稳定传输。 这一步是避免视频卡顿、花屏的核心很多问题都是因为码率设为“变码率”在复杂水面场景下码率飙升导致链路堵塞。连接遥控器接收机现在将摄像头的网线从电脑拔下接到云卓H16接收机的LAN口H12 Pro接收机可能没有标准网口需要定制线序参考官方定义图将水晶头的对应线序接到接收机的串口引脚上。同时确保接收机通过SBUS和数传口已正确连接飞控和遥控器。遥控器端设置在遥控器“H16助手”或对应APP的“视频查看”里选择“视频流地址”为“自定义”。将你在VLC里测试成功的子码流RTSP地址rtsp://admin:密码192.168.144.123:554/Streaming/Channels/102填入。保存后返回应该就能在遥控器上看到摄像头画面了。推送到QGC最后和在配套摄像头里做的一样在QGC的“视频”设置中输入这个RTSP地址。这样你就能在地面站的大屏幕上同时看到地图航迹和实时视频了操控体验直接拉满。4. 系统联调与实战避坑指南所有硬件接好参数设好就到了最激动人心也最容易崩溃的环节——系统联调。别急着下水在实验室或家里把该测的都测了能避免很多水上尴尬。第一步上电自检与传感器状态确认。给整个系统上电打开QGC。重点关注以下几点GPS/RTK状态查看“飞行视图”顶部的状态栏等待GPS图标从白色无信号变成橙色单点定位再变成绿色RTK固定解。在室内可能只有单点解把天线放到窗边或户外。确保卫星数大于10HDOP水平精度因子小于1.5RTK固定时通常小于0.1。遥控器连接检查QGC顶部的遥控器信号图标是否为绿色动一动摇杆看虚拟舵面是否响应。检查各个飞行模式切换开关是否映射正确。测深仪数据在“飞行视图”的仪表盘或“分析视图”的“MAVLink Inspector”中搜索“WATER_DEPTH”或“RANGEFINDER”相关的字段看看是否有稳定的深度数据输出。你可以用手在测深仪探头下方晃动看数值是否有变化来简单测试。数传链路观察QGC左下角的状态信息确保没有持续的“丢包”警告。信号强度RSSI应该保持在较高水平。第二步任务规划与模拟运行。在QGC的“计划视图”里规划一条简单的测绘航线比如一个矩形。设置好航点动作、巡航速度、测线间距等。千万不要直接上传到船并执行使用QGC的“模拟”功能在“应用设置”-“通用”中勾选“虚拟操纵杆”和“模拟”选项在地面站上模拟整个飞行过程。观察船只在模拟地图上的轨迹是否按预定航线行走虚拟的深度数据是否正常记录。这是检验所有参数尤其是PID参数、航向控制是否合理的安全方法。第三步实地静水测试。找一个平静、开阔、水浅且安全的水域比如平静的池塘。将船放入水中但用绳子系住。上电等待RTK固定。然后尝试切换不同的模式手动Manual模式用遥控器直接控制方向油门感受响应定高Hold模式看船是否能抵抗微风和水流保持位置自动Auto模式上传一个很小的矩形航线让船自己走你拿着遥控器随时准备切换回手动模式接管。这个阶段主要测试推进系统电机转向是否正确推力是否线性航向控制在自动模式下船转弯是否平滑会不会严重过冲或振荡避障如果装了虚拟避障墙是否生效常见坑点与调试技巧问题RTK始终无法固定Float。排查检查天线放置位置确保周围无高大遮挡远离金属船体和大功率设备。在QGC的“MAVLink Inspector”中查看GPS原始数据确认收到的是GPGGA和GPRMC语句且质量因子fix quality为4或5RTK固定。解决有时需要等待较长时间数分钟才能收敛固定。确保RTK基站信号良好如果使用网络RTK服务检查账号状态如果使用自架基站检查基站数据链路。问题测深仪数据时有时无或跳变严重。排查首先检查串口连接和供电是否稳定。在QGC的“终端”里直接读取对应串口如serial4的原始数据看看是否有连续的、格式正确的NMEA语句输出如$SDDBT开头。解决可能是水面气泡、波浪或水底杂物干扰。尝试在参数中设置滤波RNGFND_FILTER设为1启用和RNGFND_GNDCLEAR设置一个合理的船体到水面的最小高度避免将船体反射误认为水面。确保探头安装位置远离螺旋桨湍流区。问题视频流卡顿、延迟高。排查几乎99%是码率问题。严格按照前面所述将摄像头的主、子码流都设置为固定码率CBR并将子码流码率限制在1-2Mbps。解决检查遥控器和地面站之间的数传链路质量。如果使用4G/5G数传确保网络信号良好。尝试降低子码流的分辨率如降到480P或帧率15fps。问题自动航行时航线跑偏。排查检查磁罗盘校准。船体上的电机、电池、金属结构都会干扰磁罗盘。必须在安装好所有设备后进行严格的“船上校准”。在QGC的“传感器”设置里按照提示缓慢地旋转船只完成所有轴的校准。解决调整PID参数。对于船只横向转向的PID需要特别关注。参数STEER2SRV_P比例增益影响转向响应速度STEER2SRV_I积分增益消除静态误差STEER2SRV_D微分增益抑制振荡。可以从默认值开始在静水测试中慢慢微调。如果船总是绕圈可能是SRV_Rudder舵机输出的方向反了在参数里将RCx_REVERSED对应通道设为1反转即可。系统集成是个精细活耐心和细致的记录是关键。每改一个参数最好做个小笔记。每次下水测试都用QGC完整记录日志DataFlash Log。出了问题这些日志就是最好的医生能帮你精准定位是传感器数据异常还是控制算法发散。当你看到无人船按照预设的“井”字形航线稳稳地划过水面RTK轨迹平滑如尺测深数据稳定回传实时画面清晰流畅那种一切尽在掌握的成就感就是折腾这么久最好的回报。记住安全第一永远要有手动接管的能力祝你好运水上见