水下机器人
文章平均质量分 80
cabinx
这个作者很懒,什么都没留下…
展开
-
前视声呐目标识别定位(九)-声呐驱动
识别定位是需要声呐原始数据流,当时手头上的声呐为Oculus M750D,但我拿到时只有一个Oculus官网的Windows下的客户端,肯定是无法满足需求的,Oculus官网也没有相应的API或协议什么的。从采购员那拿到某个国内的代理供应商的联系方式,联系后只得到一句没有这种东西,商品售出后就不属于他们管的回复,然后无论说啥都不回复了。其中oculus_sonar_node.py是前文提及的软件框架中使用的,添加了与center_server的通信。代码很久远了,现在我已经无法测试了,仅供参考吧。原创 2024-04-04 00:39:49 · 446 阅读 · 3 评论 -
前视声呐目标识别定位(八)-代码解析之各模块通信
2、作为识别模块yolov5_humble_fls的服务器,通过端口8080与其通信。三、yolov5_humble_fls模块(yolov5_sonar.py)4、作为声呐驱动模块sonar_node的服务器,通过端口8082与其通信。3、作为control_center的服务器,通过端口8081与其通信。1、作为center_cerver的服务器,通过端口8088与其通信。2、作为client_test的服务器,通过端口8089与其通信。1、与center_server通信。原创 2024-04-04 00:31:11 · 481 阅读 · 0 评论 -
前视声呐目标识别定位(七)-代码解析之录制数据包
录制声呐数据包和启动结束各个模块大同小异,不多赘述了,核心代码位于control_center.py。数据包储存于/yolov5_humble_fls_tcp/record_data目录下,以开始录制的时间戳为文件名。原创 2024-04-04 00:17:49 · 261 阅读 · 0 评论 -
前视声呐目标识别定位(六)-代码解析之目标截图并传输
逐个将目标截图并压缩编码,每个目标截图长度和宽度均不小于300像素,通过image_min_length设置,通过image_quality(0-100)可以设置压缩图像的质量,质量越小,压缩后的图片大小越小,然后传输。根据'\ee\ff\ee\ff'判断为不带参数的指令,转control_center.py。此外关于目标识别模块,还有一个功能是实时将目标的信息传输给auv辅助导航,目标信息的协议参见协议文件。根据'\ff\bb\ff\bb'判断为启动识别程序。识别目标后,截取目标框大小的图片,压缩传输。原创 2024-04-04 00:13:11 · 1166 阅读 · 0 评论 -
前视声呐目标识别定位(五)-代码解析之修改声呐参数
根据‘\ee\aa\ee\ff‘判断为带参数的指令,转sonar_node。修改声呐参数,以将声呐量程修改为10m为例,其余参数修改可参照协议文件。4、sonar_node(此处以ros1版本中的驱动代码举例)数据包通过网口传输至声呐,声呐解码后进行参数调整。故模块将该数据包发送至auv_server。直接将指令转发至center_server。原创 2024-04-03 23:54:17 · 498 阅读 · 0 评论 -
前视声呐目标识别定位(四)-代码解析之启动识别模块
反馈信息至auv_server.py,self.cmd_callback_header + self.start_yolo_msg。根据\ee\ff\ee\ff判断为反馈信息,根据\ee\aa\ee\aa判断为识别程序成功启动信息。根据‘\ee\ff\ee\ff‘判断为不带参数的指令,转control_center.py。即/ee/ff/ee/ff/ee/aa/ee/aa/ee/aa/ee/ff。根据”\ee\aa\ee\aa”判断为启动识别程序。故模块将该数据包发送至auv_server。原创 2024-04-03 23:25:14 · 466 阅读 · 0 评论 -
前视声呐目标识别定位(二)-目标识别定位模块
根据前文介绍的前视声呐图像像素点位置解算的知识,需要声呐水平开角及量程信息。在此我为了开发方便,就将水平开角及量程信息以字符串的形式封装进sensor_msgs/Image中Header下的frame_id里。以水平开角120度,量程10m为例,在msg中的格式为:frame_id: '[120 10]'。再强调一次仅依靠二维声呐图像是无法实现三维位置的解算的,只能获得位置的距离及水平开角,缺少竖直开角的信息。中的rov目标图像合成的数据包。展示的目标框的注释为:目标种类-置信率:(水平开角,距离)原创 2024-04-03 23:10:02 · 882 阅读 · 8 评论 -
前视声呐目标识别定位(三)-部署至机器人
再者声呐的驱动及目标识别模块都是在ubuntu下使用ROS/ROS2进行开发,而AUV的导航模块是性能普通的工控机,还是特制的系统,使用水声通信模块必须借助工控机做中继,只能考虑其它通信方式;最近整理资料时在角落里发现了这些东西,虽然我也觉得整个框架粗糙且暴力,不尽如人意,但想着水下圈子这么小,资料这么少,把这个demo开源也许能为一些水下爱好者的研究开发提供一条不同的思路吧,同时也算是把这些工作做一个归档,日后可以查阅。最后关于目标图片,只截取目标部分的图片,然后压缩编码传输,以满足水声通信的限制。原创 2024-04-03 23:14:15 · 1201 阅读 · 1 评论 -
前视声呐目标识别定位(一)-基础知识
我们将球体经原点水平切开,得到一个圆的水平截面,再取一个角度alpha,就得到一个水平扇形平面,声呐检测到的所有空间点都会投影到这个平面,这个角度就是声呐的水平开角。同时,当r越大时,竖直扇形的弧度越长,由于目标点可能在弧线上的任何一点,此时目标点的不确定性也越大。首先要特别说明的一点是这里说的定位是不完全的定位,只能得到目标距声呐的距离和水平开角,缺少竖直开角这一个维度的信息。提供的就是声呐的原始数据,不仅包含了普通图像形式的声呐图,还包含了声呐相应的水平开角和量程等信息,方便研究者做各种研究。原创 2024-04-03 22:29:39 · 1381 阅读 · 6 评论 -
基于ROS多波束前视声呐仿真模块的一些应用
鼓捣前视声呐仿真模块也有一段时间了,在没有实际数据的条件下,选择仿真做一些算法的前期验证工作不失为一种选择,更多的是无奈的选择吧。长时间没有写点东西了,姑且记录一下前段时间的工作。关于仿真的平台与声呐仿真模块之前的博客都已经有详细介绍,不再赘述。本文的相关视频可以移步我的知乎博客:内容审核中 - 知乎一·、图像迁移技术改善目标识别的小样本问题水下研究工作面临的比较大的一个困难就是研究数据的稀缺。目前已有开源的水下声学目标识别的小型数据集,但用于深度学习训练识别模型还是面临小样本的问题。相对于原创 2022-05-07 17:14:58 · 3076 阅读 · 16 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(补3)--ROS2.0
ROS从诞生到现在已经发展了很多年了,虽然功能强大,但底层架构的局限性使得缺陷也不少,修修补补越来越难满足时代发展的需求。针对这些缺陷,在下一代的机器人操作系统ROS2.0引入新概念新技术,重新进行架构设计,使得更符合时代发展的需要。官方已经声明neotic将是ROS的最后一个版本,而ROS2.0的发展也日益成熟,未来开发趋势应该是逐步迁移至ROS2.0。鉴于种种,因为原软件框架是基于ROS的,我选择只实现一些基本功能不再进行更多模块的开发。迁移至ROS2.0后,再进行开发。这个我在第一篇博客里也有...原创 2021-11-17 16:10:43 · 2559 阅读 · 3 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(补2)--水下slam仿真构想
这部分内容其实和水下目标跟踪的软件框架没啥联系,但既然上一篇文章提到了水下环境的仿真,结合近期的一点小尝试,也谈谈对水下slam仿真可行性的一些构想。 在水下光学传感器基本上效果非常差。声学设备一方面专业性比较强(换句话说就是很小众),另一方面传感器价格非常高,更雪上加霜的是进行一次数据采集所需耗费的时间人力物力成本很大,然而不能保证能得到理想的数据。最后各个机构或个人花费如此大代价得到的数据也很少有开源出来的,也可以理解。因此在水下方向的研究都面临一个数据稀缺的问题。 ...原创 2021-03-19 16:05:52 · 4282 阅读 · 27 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(补1)--gazebo仿真
项目地址:https://github.com/cabinx/cabin_auv_simulation 鉴于水下机器人调试的复杂性,在仿真环境中对水下机器人进行先期调试能降低调试难度,节约大量的时间成本,提高开发效率。 对于前文构建的软件框架,如果能在仿真环境中先行验证可行性,大致确定各项参数,然后再进行实际下水测试对参数进行微调,无疑将省事很多。同理,若有新的想法,开发出新的算法模块先在仿真环境中验证,就不需要大费周章地准备实际测试环境,同时也更方便进行debug调...原创 2021-03-18 17:12:27 · 4081 阅读 · 22 评论 -
ubuntu下离线侧扫声呐xtf格式数据提取软件
最近花了比较多时间处理xtf格式的侧扫声呐数据,ubuntu下写了一个数据处理的软件。输入为xtf文件路径或xtf文件夹路径。对每个xtf文件有四个输出文件,包括基本信息文件(.json),航迹数据文件(.mat),左舷强度数据文件(.mat),右舷强度数据文件(.mat)。输出文件的信息均为xtf文件记录侧扫输出的原始数据信息。后续可行根据需求利用这些文件做进一步的处理,如斜距校正,灰度校正,几何校正等。另外写了几个python小脚本,主要功能是根据输出的文件绘制简易灰度图和航迹图。...原创 2021-01-22 17:53:51 · 1647 阅读 · 0 评论 -
gazebo11下uuv_simulator的编译
最近想试试ros2,将系统升级成了ubuntu20.04,引发了一大堆新版本的第三方库与旧项目的冲突,果然升级还是要慎重。ros版本也升级为noetic,gozebo也相应地由9.0升级为了11.0,包括gazebo相关的第三方库也随之升级。重新使用uuv_simulator进行仿真时无法工作。重新到github下载源码重新编译。在此简要记录一下遇到的问题。一、gazebo11与sdformat-9.2问题 sdformat版本升级后,编译器的版本支持也需要做出相应改...原创 2020-12-11 17:10:04 · 2380 阅读 · 10 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(十四完结)--目标跟踪模块
模块十分简单,可以介绍的内容很少。包括两个部分:计算目标物中心距图片中心的偏差,对应cabin_vision/object_deviation;PID跟踪控制,对应cabin_behaviors/pid_tracking。一、偏差计算 输入输出: 监听topic:/darknet_ros/bounding_boxes,格式darknet_ros_msgs::BoundingBoxes,目标框图顶点在图片中像素点的位置; 发布topic:/cabi...原创 2020-10-30 17:13:39 · 1066 阅读 · 0 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(十三)--基于darknet_ros目标识别模型的训练和部署
在目标跟踪时,摄像头提供实时的图片信息,我们需要识别出图片目标,且输出目标在图片中的位置,为后续的控制提供条件。在demo中,我是借助darknet_ros实现这一目标。当然这一模块可以替换成性能更优秀的识别算法。 darknet_ros为yolov3在ros下的一个工具包(https://github.com/leggedrobotics/darknet_ros)。需要对yolov3的使用有所了解(https://pjreddie.com/darknet/yolo/)。例程我就不...原创 2020-10-23 16:21:30 · 2500 阅读 · 2 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(十二)--数据集制作
在目标跟踪时,摄像头提供实时的图片信息,我们需要识别出图片目标,且输出目标在图片中的位置,为后续的控制提供条件。在demo中,我是借助darknet_ros实现这一目标。当然,这一模块可以替换成性能更优秀的识别算法。 darknet_ros为yolov3在ros下的一个工具包(https://github.com/leggedrobotics/darknet_ros)。需要对yolov3的使用有所了解(https://pjreddie.com/darknet/yolo/)。...原创 2020-10-22 12:00:19 · 1443 阅读 · 6 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(十一)--USB摄像头使用
在目标跟踪时,摄像头提供实时的图片信息,我们需要识别出图片目标,且输出目标在图片中的位置,为后续的控制提供条件。在demo中,我是借助darknet_ros实现这一目标。当然,这一模块可以替换成性能更优秀的识别算法。 darknet_ros为yolov3在ros下的一个工具包(https://github.com/leggedrobotics/darknet_ros)。需要对yolov3的使用有所了解(https://pjreddie.com/darknet/yolo/)。...原创 2020-10-22 11:39:08 · 1117 阅读 · 2 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(十)--程序解析之手动控制
本文介绍手柄控制模块的代码。模块对应cabin_teleop。结合前几篇关于基础运动模块代码的解析,显然我们只需要操控手柄发布力和力矩的信息[Fx,Fy,Fz,Mx,My,Mz]即可实现对机器人的控制。如发布[10,0,0,0,0,0]即表示对机器人施加x轴方向10N的力,机器人x轴方向前进;发布[0,0,0,0,0,10]即表示对机器人施加z轴方向10N*m的力矩,机器人偏航方向逆时针转动。一、joystick工具包 ros下使用手柄非常方便,教程也非常多。我也粗略的...原创 2020-10-21 11:20:49 · 1240 阅读 · 1 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(九)--程序解析之PWM波下发
模块对应cabin_controllers/serial_to_mcu。模块实现的功能为监听网络中PWM矩阵信息,将其转换成十六进制数据通过串口下发至MCU,实现对推进器电机的控制。模块数据的串口通信借助了ros的serial工具包,ros-melodic-serial,网上比较多使用方法,在此就不做介绍了。 在demo中,实际上水下灯的控制信息亦通过串口下发至MCU,实现对灯亮度的控制。为了方便阅读程序,在此还是贴出实验中自定义的电机协议。 水下灯的...原创 2020-10-19 10:51:49 · 599 阅读 · 0 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(八)--程序解析之PWM波计算
这部分内容相当简单,基本上读懂推进器电机模型文件就很容易能读懂程序。可以查阅之前撰写的关于电机模型文件的文章(链接)。程序对应cabin_controllers/pwm_controller。实际上就是编程实现模型文件中推进器推力与pwm波间的关系的函数。一、输入输出...原创 2020-10-19 09:38:21 · 787 阅读 · 0 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(七)--程序解析之推力分配
现在开始介绍demo的基础控制模块程序。基础控制模块包含推力分配模块、PWM波计算模块,数据串口下发模块。每个模块的主要功能可以回头看软件框架简介的那一篇文章,在此不做介绍,后续主要介绍的是程序中的一些关键点。 本文主要介绍的推力分配模块的几个关键函数。对应程序中的cabin_controllers/thruster_controller。这块可能写得杂且乱。一、输入输出 推力分配模块输入输出如下: 监听topic:/command/netLoa...原创 2020-10-18 10:11:53 · 1929 阅读 · 0 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(六)--电机模型文件
推进器电机模型文件的内容只有一个:推进器推力与PWM波的映射关系。当我们推算得到某时刻该推进器需要提供的推力时,我们需要根据映射关系计算出出对应的PWM波下发给下层以实现控制。不同类型的推进器推力与PWM波的映射关系是不同的,这个有的产品可能会给出,没有的话可能需要自行测定。 在demo中,模型文件的路径为cabin_controllers/cfg/thruster_force_vs_pwm.yaml。该文件反映的是bluerovotics的T200推进器推力与PWM波的映射关系。...原创 2020-10-16 11:31:23 · 921 阅读 · 0 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(五)--机械模型文件
水下平台,如ROV,AUV等的机械结构通常会随着配件的变化而变化。比如,改变推进器的布局,添加重量比较大的传感器等。机械结构的变化反过来会影响运动控制。因此,在设计软件架构时,将机械参数在程序中写死是非常不合理的。根据机械模型设计配置文件,供程序加载是比较理想方案。 机械模型反应推进器布局等,是根据机器人运动需求进行推力分配的关键。在具体解析的基础控制框架的程序之前,我们应需要理解程序框架需要加载的机械模型文件。我们在solidworks等设计软件中设计水下平台,各种机械参数可以通...原创 2020-10-15 17:54:01 · 1364 阅读 · 0 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(四)--网络配置
Demo测试时需要岸上PC与树莓派在同一局域网下运行,二者能进行通信。下水测试时总的设备连接大致如下图。 Fathom-X Interface实际上就是Fathom-X通信板通过网线与一个USB转换器相连,其通过与PC连接后即解决了供电问题,也解决了网络通信问题。Bluerov本体里Fathom-X通信板通过网线与树莓派连接。零浮力缆将两块Fathom-X通信板连接,通过电力载波实现岸上与水下通信。 当然我们在程序开发调试时不必搞得那么花里胡哨的,直接用一根网线...原创 2020-10-15 15:16:15 · 1267 阅读 · 0 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(三)--软件框架简述
本文主要介绍ROV水下目标跟踪的简易demo软件实现的思路。一、视觉模块 视觉模块的任务为:通过单目相机识别目标,并计算目标中心位置与图像中心位置的偏差,通过PID控制器得到控制量。demo中得到的控制量可以理解为竖直方向的推力Fz,以及偏航(yaw)方向的转矩。分别实现在图像坐标下y方向和x方向的目标跟踪。1、单目相机驱动 单目相机接在树莓派的USB接口上,可以选择的ROS工具包很多,只要确保图像以标准的ros图片格式发布即可...原创 2020-10-12 16:38:14 · 3439 阅读 · 3 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(二)--硬件框架简述
虽然本系列文章是介绍一个简易的ROV水下目标跟踪demo的软件实现,但软件框架的运行也是需要硬件基础的。鉴于我在这方面不擅长,实际工作也非我完成,由我撰写此部分可能会出现谬误。和完成demo硬件部分的同事沟通后,其同意后续会抽时间撰写介绍本demo的硬件实现,也会将相关嵌入式代码上传至github。届时我会在本文更新链接。...原创 2020-10-12 16:25:28 · 1464 阅读 · 2 评论 -
基于ROS搭建简易软件框架实现ROV水下目标跟踪(一)--简述
当前,水下领域比较小众,开源的资料比较少。Bluerov作为成熟的产品,结合其开源的优势,经历了多年的技术迭代,在市场上受到极大欢迎。刚接触水下领域时,希望能找到一个比较方便的实验平台,开源的Bluerov基本上算是唯一的选择。 Bluerov本身的软件架构,Pixhawk(ardusub)—— Raspberry Pi 3B(不能升级)——QGroundControl,非常臃肿冗余。由于我并不熟悉嵌入式开发,所以对Bluerov进行开发感到非常棘手。当然也尝试了在ardusub的...原创 2020-10-10 17:34:20 · 4939 阅读 · 9 评论