news 2026/5/1 10:55:08

水下巡检竞赛代码实践:基于树莓派与 Pixhawk 的探索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
水下巡检竞赛代码实践:基于树莓派与 Pixhawk 的探索

水下巡检竞赛代码,树莓派控制飞控stm32ros无线控制水下机器人控制水下机器人,只是实现巡检的功能,可以让你快速上手了解mvlink协议,前提得是pixhawk和树莓派,飞控树莓派,是针对巡检的代码,阈值纠偏 中心点纠偏,pix2.4.8 树莓派4b

最近参与水下巡检竞赛,研究了基于树莓派 4B 和 Pixhawk(版本 2.4.8)实现水下机器人巡检功能的代码,这里和大家分享下我的经验,希望能帮助你快速上手了解 MAVLink 协议。

整体架构

整个系统以树莓派作为主控单元,负责与外部通信、处理图像数据并向飞控 STM32(集成在 Pixhawk 中)发送指令。Pixhawk 则根据接收到的指令控制水下机器人的动作。

飞控与树莓派通信 - MAVLink 协议

MAVLink 协议是一种轻量级的消息协议,用于在飞行器组件之间进行通信。在树莓派端,我们可以使用 pymavlink 库来实现与 Pixhawk 的通信。

安装 pymavlink

pip install pymavlink

简单的连接代码示例

from pymavlink import mavutil # 创建连接 master = mavutil.mavlink_connection('udpin:0.0.0.0:14550') # 等待心跳包,以确保连接成功 master.wait_heartbeat() print("Heartbeat from system (system %u component %u)" % (master.target_system, master.target_component))

在这段代码中,我们通过mavutil.mavlinkconnection建立了与 Pixhawk 的 UDP 连接。waitheartbeat方法会阻塞程序,直到接收到来自 Pixhawk 的心跳包,表明连接成功。

巡检功能实现 - 阈值纠偏与中心点纠偏

在巡检过程中,我们需要根据摄像头获取的图像信息来调整水下机器人的位置,这就涉及到阈值纠偏和中心点纠偏。

阈值纠偏

假设我们通过图像识别获取到目标物体的颜色信息,以红色为例,我们可以设定一个颜色阈值范围来判断是否检测到目标。

import cv2 import numpy as np # 读取图像 image = cv2.imread('underwater_image.jpg') hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 定义红色的 HSV 阈值范围 lower_red = np.array([0, 100, 100]) upper_red = np.array([10, 255, 255]) # 根据阈值构建掩膜 mask = cv2.inRange(hsv, lower_red, upper_red) # 对原图像和掩膜进行位运算 res = cv2.bitwise_and(image, image, mask=mask) cv2.imshow('Original', image) cv2.imshow('Mask', mask) cv2.imshow('Result', res) cv2.waitKey(0) cv2.destroyAllWindows()

在这段代码里,我们将图像从 BGR 颜色空间转换到 HSV 颜色空间,然后通过cv2.inRange函数根据设定的阈值范围创建掩膜。这样就能筛选出图像中符合红色阈值范围的部分,以便后续判断是否需要纠偏。

中心点纠偏

当检测到目标后,我们要计算目标在图像中的中心点,并与图像中心进行比较,从而确定如何调整水下机器人的方向。

# 计算掩膜的矩 M = cv2.moments(mask) if M["m00"]!= 0: cX = int(M["m10"] / M["m00"]) cY = int(M["m01"] / M["m00"]) else: cX, cY = 0, 0 # 获取图像尺寸 height, width, _ = image.shape image_center_x = width // 2 image_center_y = height // 2 # 计算偏差 delta_x = cX - image_center_x delta_y = cY - image_center_y print(f"X 方向偏差: {delta_x}, Y 方向偏差: {delta_y}")

这里通过cv2.moments函数计算掩膜的矩,进而得到目标的中心点坐标cXcY。然后获取图像的中心坐标,计算出与目标中心点的偏差deltaxdeltay。根据这些偏差值,我们就可以通过 MAVLink 协议向 Pixhawk 发送指令,调整水下机器人的位置。

通过以上代码和方法,我们就能基于树莓派和 Pixhawk 实现水下机器人的巡检功能,同时深入理解 MAVLink 协议在实际项目中的应用啦。希望大家在相关项目中能有所收获!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:59:13

Git cherry-pick挑选特定PyTorch提交

Git cherry-pick 挑选特定 PyTorch 提交 在深度学习项目开发中,我们常常面临这样一个现实:官方发布的稳定版本虽然可靠,但可能缺少某个关键修复或性能优化;而直接升级到开发版又风险太大,容易引入未知问题。比如你正在…

作者头像 李华
网站建设 2026/4/30 8:19:52

2026年能源、电力与可持续发展国际学术会议(EESD 2026)

2026年能源、电力与可持续发展国际学术会议(EESD 2026)将于2026年3月6-8日在中国昆明举行。会议主要围绕能源、电力与可持续发展等研究领域展开,旨在为从事能源电力等相关研究的专家学者提供一个交流科研成果和前沿技术的平台,了解…

作者头像 李华
网站建设 2026/5/1 7:22:21

新能源汽车租赁公司车辆经营方案

新能源汽车租赁公司的车辆经营方案核心在于通过合理的车型选择、灵活的租赁模式与完善的运维体系,实现环保效益与商业可持续性的双赢。 随着城市化进程加快和环保政策推动,新能源汽车租赁成为优化出行结构的重要方式。多地政府已出台政策支持新能源汽车…

作者头像 李华
网站建设 2026/5/1 8:43:18

大货车可通过加装手机智能控制系统使用APP实现手机远程启动

大货车司机常面临极端天气下冷车启动困难、驾驶舱温度不适等问题。手机远程启动升级能让司机在出发前提前启动车辆预热发动机、开启空调,提升舒适性与出车效率 。该功能不仅适用于新车原厂配置,也可通过对已有车辆进行无损改装实现 。包括卡车、货车在内…

作者头像 李华
网站建设 2026/5/1 7:13:06

必看!2025年单北斗GNSS变形监测最具性价比的8款高口碑产品推荐

在2025年,随着单北斗GNSS变形监测系统的技术不断成熟,市场上出现了一系列高性价比的产品。这些产品不仅适用于桥梁监测,还广泛应用于地质灾害预警等重要领域。各大厂家致力于提高设备性能,优化用户使用体验。通过快速简便的安装流…

作者头像 李华
网站建设 2026/5/1 7:18:02

从PyTorch官方文档高效获取信息的技巧分享

从 PyTorch 官方文档高效获取信息的技巧 在深度学习项目中,最让人头疼的往往不是模型设计本身,而是环境配置——明明代码没问题,却因为 CUDA 版本不匹配、PyTorch 编译错误或驱动缺失导致任务卡住。这种“环境地狱”不仅浪费时间&#xff0c…

作者头像 李华