自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 前视声呐目标识别定位(九)-声呐驱动

识别定位是需要声呐原始数据流,当时手头上的声呐为Oculus M750D,但我拿到时只有一个Oculus官网的Windows下的客户端,肯定是无法满足需求的,Oculus官网也没有相应的API或协议什么的。从采购员那拿到某个国内的代理供应商的联系方式,联系后只得到一句没有这种东西,商品售出后就不属于他们管的回复,然后无论说啥都不回复了。其中oculus_sonar_node.py是前文提及的软件框架中使用的,添加了与center_server的通信。代码很久远了,现在我已经无法测试了,仅供参考吧。

2024-04-04 00:39:49 307

原创 前视声呐目标识别定位(八)-代码解析之各模块通信

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 430

原创 前视声呐目标识别定位(七)-代码解析之录制数据包

录制声呐数据包和启动结束各个模块大同小异,不多赘述了,核心代码位于control_center.py。数据包储存于/yolov5_humble_fls_tcp/record_data目录下,以开始录制的时间戳为文件名。

2024-04-04 00:17:49 220

原创 前视声呐目标识别定位(六)-代码解析之目标截图并传输

逐个将目标截图并压缩编码,每个目标截图长度和宽度均不小于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 1111

原创 前视声呐目标识别定位(五)-代码解析之修改声呐参数

根据‘\ee\aa\ee\ff‘判断为带参数的指令,转sonar_node。修改声呐参数,以将声呐量程修改为10m为例,其余参数修改可参照协议文件。4、sonar_node(此处以ros1版本中的驱动代码举例)数据包通过网口传输至声呐,声呐解码后进行参数调整。故模块将该数据包发送至auv_server。直接将指令转发至center_server。

2024-04-03 23:54:17 424

原创 前视声呐目标识别定位(四)-代码解析之启动识别模块

反馈信息至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 413

原创 前视声呐目标识别定位(三)-部署至机器人

再者声呐的驱动及目标识别模块都是在ubuntu下使用ROS/ROS2进行开发,而AUV的导航模块是性能普通的工控机,还是特制的系统,使用水声通信模块必须借助工控机做中继,只能考虑其它通信方式;最近整理资料时在角落里发现了这些东西,虽然我也觉得整个框架粗糙且暴力,不尽如人意,但想着水下圈子这么小,资料这么少,把这个demo开源也许能为一些水下爱好者的研究开发提供一条不同的思路吧,同时也算是把这些工作做一个归档,日后可以查阅。最后关于目标图片,只截取目标部分的图片,然后压缩编码传输,以满足水声通信的限制。

2024-04-03 23:14:15 1066 1

原创 前视声呐目标识别定位(二)-目标识别定位模块

根据前文介绍的前视声呐图像像素点位置解算的知识,需要声呐水平开角及量程信息。在此我为了开发方便,就将水平开角及量程信息以字符串的形式封装进sensor_msgs/Image中Header下的frame_id里。以水平开角120度,量程10m为例,在msg中的格式为:frame_id: '[120 10]'。再强调一次仅依靠二维声呐图像是无法实现三维位置的解算的,只能获得位置的距离及水平开角,缺少竖直开角的信息。中的rov目标图像合成的数据包。展示的目标框的注释为:目标种类-置信率:(水平开角,距离)

2024-04-03 23:10:02 644 4

原创 前视声呐目标识别定位(一)-基础知识

我们将球体经原点水平切开,得到一个圆的水平截面,再取一个角度alpha,就得到一个水平扇形平面,声呐检测到的所有空间点都会投影到这个平面,这个角度就是声呐的水平开角。同时,当r越大时,竖直扇形的弧度越长,由于目标点可能在弧线上的任何一点,此时目标点的不确定性也越大。首先要特别说明的一点是这里说的定位是不完全的定位,只能得到目标距声呐的距离和水平开角,缺少竖直开角这一个维度的信息。提供的就是声呐的原始数据,不仅包含了普通图像形式的声呐图,还包含了声呐相应的水平开角和量程等信息,方便研究者做各种研究。

2024-04-03 22:29:39 896

原创 Ros2 bag数据包提取图片

但是其是在ros2 rolling版本上的,而我的环境是ubuntu20.04,只能装ros2 foxy。故在开源版本基础上稍作修改。具体用法详见github项目介绍。

2023-12-01 17:10:24 739

原创 开源多波束前视声呐目标识别数据集

开源水下多波束声呐目标识别数据集

2022-12-05 17:32:59 4013 45

原创 基于ROS多波束前视声呐仿真模块的一些应用

鼓捣前视声呐仿真模块也有一段时间了,在没有实际数据的条件下,选择仿真做一些算法的前期验证工作不失为一种选择,更多的是无奈的选择吧。长时间没有写点东西了,姑且记录一下前段时间的工作。关于仿真的平台与声呐仿真模块之前的博客都已经有详细介绍,不再赘述。本文的相关视频可以移步我的知乎博客:内容审核中 - 知乎一·、图像迁移技术改善目标识别的小样本问题水下研究工作面临的比较大的一个困难就是研究数据的稀缺。目前已有开源的水下声学目标识别的小型数据集,但用于深度学习训练识别模型还是面临小样本的问题。相对于

2022-05-07 17:14:58 2723 11

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(补3)--ROS2.0

ROS从诞生到现在已经发展了很多年了,虽然功能强大,但底层架构的局限性使得缺陷也不少,修修补补越来越难满足时代发展的需求。针对这些缺陷,在下一代的机器人操作系统ROS2.0引入新概念新技术,重新进行架构设计,使得更符合时代发展的需要。官方已经声明neotic将是ROS的最后一个版本,而ROS2.0的发展也日益成熟,未来开发趋势应该是逐步迁移至ROS2.0。鉴于种种,因为原软件框架是基于ROS的,我选择只实现一些基本功能不再进行更多模块的开发。迁移至ROS2.0后,再进行开发。这个我在第一篇博客里也有...

2021-11-17 16:10:43 2507 3

原创 Nvidia Jetson Xavier NX 升级ubuntu20.04

重要:如果不是特别急需要使用ubuntu20.04,请等待一段时间后Nvidia官方发布的SDK,这是最稳妥的方式。 想了解一下ROS2.0,但主机其他工程项目太多,担心配置ROS2.0环境会干扰旧的工程项目,故一直没有条件机会。恰好手头有一块闲置的XAVIER NX的开发版,正好可以拿来鼓捣鼓捣。 由于Nvidia官网上XAVIER的JetPack SDK的版本为4.6,其默认的ubuntu版本为18.04。但ROS2.0最新的Galactic版本需要ubuntu...

2021-09-17 16:25:28 3989 5

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(补2)--水下slam仿真构想

这部分内容其实和水下目标跟踪的软件框架没啥联系,但既然上一篇文章提到了水下环境的仿真,结合近期的一点小尝试,也谈谈对水下slam仿真可行性的一些构想。 在水下光学传感器基本上效果非常差。声学设备一方面专业性比较强(换句话说就是很小众),另一方面传感器价格非常高,更雪上加霜的是进行一次数据采集所需耗费的时间人力物力成本很大,然而不能保证能得到理想的数据。最后各个机构或个人花费如此大代价得到的数据也很少有开源出来的,也可以理解。因此在水下方向的研究都面临一个数据稀缺的问题。 ...

2021-03-19 16:05:52 4056 27

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(补1)--gazebo仿真

项目地址:https://github.com/cabinx/cabin_auv_simulation 鉴于水下机器人调试的复杂性,在仿真环境中对水下机器人进行先期调试能降低调试难度,节约大量的时间成本,提高开发效率。 对于前文构建的软件框架,如果能在仿真环境中先行验证可行性,大致确定各项参数,然后再进行实际下水测试对参数进行微调,无疑将省事很多。同理,若有新的想法,开发出新的算法模块先在仿真环境中验证,就不需要大费周章地准备实际测试环境,同时也更方便进行debug调...

2021-03-18 17:12:27 3870 22

原创 ubuntu下离线侧扫声呐xtf格式数据提取软件

最近花了比较多时间处理xtf格式的侧扫声呐数据,ubuntu下写了一个数据处理的软件。输入为xtf文件路径或xtf文件夹路径。对每个xtf文件有四个输出文件,包括基本信息文件(.json),航迹数据文件(.mat),左舷强度数据文件(.mat),右舷强度数据文件(.mat)。输出文件的信息均为xtf文件记录侧扫输出的原始数据信息。后续可行根据需求利用这些文件做进一步的处理,如斜距校正,灰度校正,几何校正等。另外写了几个python小脚本,主要功能是根据输出的文件绘制简易灰度图和航迹图。...

2021-01-22 17:53:51 1486

原创 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 2262 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 1002

原创 基于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 2415 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 1401 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 1072 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 1187 1

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(九)--程序解析之PWM波下发

模块对应cabin_controllers/serial_to_mcu。模块实现的功能为监听网络中PWM矩阵信息,将其转换成十六进制数据通过串口下发至MCU,实现对推进器电机的控制。模块数据的串口通信借助了ros的serial工具包,ros-melodic-serial,网上比较多使用方法,在此就不做介绍了。 在demo中,实际上水下灯的控制信息亦通过串口下发至MCU,实现对灯亮度的控制。为了方便阅读程序,在此还是贴出实验中自定义的电机协议。 水下灯的...

2020-10-19 10:51:49 576

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(八)--程序解析之PWM波计算

这部分内容相当简单,基本上读懂推进器电机模型文件就很容易能读懂程序。可以查阅之前撰写的关于电机模型文件的文章(链接)。程序对应cabin_controllers/pwm_controller。实际上就是编程实现模型文件中推进器推力与pwm波间的关系的函数。一、输入输出...

2020-10-19 09:38:21 772

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(七)--程序解析之推力分配

现在开始介绍demo的基础控制模块程序。基础控制模块包含推力分配模块、PWM波计算模块,数据串口下发模块。每个模块的主要功能可以回头看软件框架简介的那一篇文章,在此不做介绍,后续主要介绍的是程序中的一些关键点。 本文主要介绍的推力分配模块的几个关键函数。对应程序中的cabin_controllers/thruster_controller。这块可能写得杂且乱。一、输入输出 推力分配模块输入输出如下: 监听topic:/command/netLoa...

2020-10-18 10:11:53 1837

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(六)--电机模型文件

推进器电机模型文件的内容只有一个:推进器推力与PWM波的映射关系。当我们推算得到某时刻该推进器需要提供的推力时,我们需要根据映射关系计算出出对应的PWM波下发给下层以实现控制。不同类型的推进器推力与PWM波的映射关系是不同的,这个有的产品可能会给出,没有的话可能需要自行测定。 在demo中,模型文件的路径为cabin_controllers/cfg/thruster_force_vs_pwm.yaml。该文件反映的是bluerovotics的T200推进器推力与PWM波的映射关系。...

2020-10-16 11:31:23 885

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(五)--机械模型文件

水下平台,如ROV,AUV等的机械结构通常会随着配件的变化而变化。比如,改变推进器的布局,添加重量比较大的传感器等。机械结构的变化反过来会影响运动控制。因此,在设计软件架构时,将机械参数在程序中写死是非常不合理的。根据机械模型设计配置文件,供程序加载是比较理想方案。 机械模型反应推进器布局等,是根据机器人运动需求进行推力分配的关键。在具体解析的基础控制框架的程序之前,我们应需要理解程序框架需要加载的机械模型文件。我们在solidworks等设计软件中设计水下平台,各种机械参数可以通...

2020-10-15 17:54:01 1298

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(四)--网络配置

Demo测试时需要岸上PC与树莓派在同一局域网下运行,二者能进行通信。下水测试时总的设备连接大致如下图。 Fathom-X Interface实际上就是Fathom-X通信板通过网线与一个USB转换器相连,其通过与PC连接后即解决了供电问题,也解决了网络通信问题。Bluerov本体里Fathom-X通信板通过网线与树莓派连接。零浮力缆将两块Fathom-X通信板连接,通过电力载波实现岸上与水下通信。 当然我们在程序开发调试时不必搞得那么花里胡哨的,直接用一根网线...

2020-10-15 15:16:15 1209

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(三)--软件框架简述

本文主要介绍ROV水下目标跟踪的简易demo软件实现的思路。一、视觉模块 视觉模块的任务为:通过单目相机识别目标,并计算目标中心位置与图像中心位置的偏差,通过PID控制器得到控制量。demo中得到的控制量可以理解为竖直方向的推力Fz,以及偏航(yaw)方向的转矩。分别实现在图像坐标下y方向和x方向的目标跟踪。1、单目相机驱动 单目相机接在树莓派的USB接口上,可以选择的ROS工具包很多,只要确保图像以标准的ros图片格式发布即可...

2020-10-12 16:38:14 3274 3

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(二)--硬件框架简述

虽然本系列文章是介绍一个简易的ROV水下目标跟踪demo的软件实现,但软件框架的运行也是需要硬件基础的。鉴于我在这方面不擅长,实际工作也非我完成,由我撰写此部分可能会出现谬误。和完成demo硬件部分的同事沟通后,其同意后续会抽时间撰写介绍本demo的硬件实现,也会将相关嵌入式代码上传至github。届时我会在本文更新链接。...

2020-10-12 16:25:28 1388 2

原创 基于ROS搭建简易软件框架实现ROV水下目标跟踪(一)--简述

当前,水下领域比较小众,开源的资料比较少。Bluerov作为成熟的产品,结合其开源的优势,经历了多年的技术迭代,在市场上受到极大欢迎。刚接触水下领域时,希望能找到一个比较方便的实验平台,开源的Bluerov基本上算是唯一的选择。 Bluerov本身的软件架构,Pixhawk(ardusub)—— Raspberry Pi 3B(不能升级)——QGroundControl,非常臃肿冗余。由于我并不熟悉嵌入式开发,所以对Bluerov进行开发感到非常棘手。当然也尝试了在ardusub的...

2020-10-10 17:34:20 4736 9

原创 C++多线程小记

多线程实现队列数据存取的过程中,遇到一些多线程编程的基础问题,记录一下。 简要类比举例,新建了类作为对象:class aClass{ sturct structA{ .... }; bool processData(int a,char *b);}; 在主函数文件中有子函数需要对对象中的结构体数据进行处理:int processClassStruct(aClass &a, aClass::st...

2020-06-16 16:58:47 348

原创 如何在MB-System中新建I/O模块

本文档根据官方文档《Developer's Guide to Coding an MBSystem I/O Module》编写。主要内容为基于文档中新建一个MB-System的I/O模块的范例,理解MB-System如何处理侧扫声纳xtf格式文件。官方文档中的范例,即如何新建一个I/O模块处理WASSP多波束声纳数据已经说明非常详细,十分推荐仔细阅读。鉴于文档内容为我个人的理解,可能有错误...

2020-05-06 10:27:51 716

原创 ubuntu18.04离线安装pytorch

在线安装一直无法建立连接,故采用离线的方法。 首先确定本机的环境,包括默认的python版本,cuda版本。然后到:https://download.pytorch.org/whl/torch_stable.html下载所需的版本。如我的python版本为3.6,cuda版本为10.1,所以我下载了:cu101/torch-1.4.0-cp36-cp36m-linux_x...

2020-03-16 10:56:58 2228

原创 ROS下树莓派USB串口通信

做工程时需要在树莓派进行串口通信。具体为接收到某个ROS的topic数据后,向串口下发数据。代码编写有两种方法。 方法一:借助serial库 1、运行环境为ubuntu,首先安装serial库:sudo apt-get install serial 2、配置编写的package中的CMakeLists.txt ...

2019-07-26 17:06:25 1916

原创 最小化备份树莓派系统镜像

做工程时希望将树莓派sd卡的系统备份成镜像文件,需要使用时直接烧录至sd卡即可。一些传统方法制作出来的镜像通常为sd卡容量大小,即一张32G的sd卡实际使用空间为4G,但制作出来的镜像为32G。希望制作出来的备份镜像与sd卡实际使用的空间大小一样,都为4G。只通过命令行实现。 参考文章:https://blog.csdn.net/zhufu86/article/details/7...

2019-07-25 11:08:51 3557 1

原创 ubuntu设置静态IP

做工程的测试阶段,遇到需要设置双IP的情形。树莓派的IP与主机在同一网络内,已知树莓派已设置了一个固定的静态IP,如192.168.2.2。同时主机的IP为192.168.118.xxx,希望能在主机另设置一个静态IP与树莓派实现通信,即实现双IP,使得主机上网不受影响。 首先获取主机的网卡名。输入:ifconfig,如下: 则主机的网络接口名为enp0s31f6...

2019-07-25 10:41:38 173

原创 Timed-Elastic-Band局部路径规划算法

    早前做工程时尝试了teb局部规划算法,觉得效果非常好。由于时间关系,并未深入了解,仅依靠做对比实验调节作者给出的接口参数满足工程需求。抽空看了一下作者关于teb算法的论文,记录一些笔记。    teb局部路径规划算法github地址:https://github.com/rst-tu-dortmund/teb_local_planner。    作者列出的几篇文章均推荐阅读了解。本...

2018-10-30 11:30:43 40462 36

原创 python:输出subprocess中子进程的运行信息

    做工程时使用subprocess模块时,遇到子进程的运行信息无法输出的情况。    如test.py:import timefor i in range(5): print i time.sleep(1)    使用subprocess模块如下:import subprocesscmd = 'python /home/cabin/Desktop/t...

2018-09-19 16:24:52 3486

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除