- 博客(44)
- 收藏
- 关注
原创 Dynamic Tracking
给出两份脚本,分别作为ROS计算图中的 publisher 和 subscriber,加载本地预训练模型 SSD-MobileNet,利用进行Python3接口更改的模块 my_sort,实现简单的动态图像跟踪效果。
2025-04-14 11:24:44
225
原创 a sort.py demo
此处使用 SSD-MobileNetv2 进行物体检测,将结果传入以 np 数组的形式传入sort 模块,经过处理,以 np.empty((0, 5))的格式传出,在绘画模块,提取信息,标识矩形框和物体ID。这份代码展示了如何使用 sort.py。注意,此处,我将文件名改为 my_sort.py。你并不能直接 copy 使用,因为环境,包,还有模型。
2025-04-12 22:20:46
282
原创 适配python3.9的 SORT算法
它需要目标检测模型的置信度、检测框结果作为输入。下一篇文章会展示一份 demo,使用该模块,进行跟踪和绘制。简单地更改了 sort.py 函数的接口,核心思想、处理操作并不改变。
2025-04-12 22:10:25
222
原创 MTCNN 人脸识别
此处介绍强大的 MTCNN 模块,给出demo,展示MTCNN 的 OOP, 以及ROS利用 C++ 节点,命令行调用脚本执行实际工作的思路。
2025-04-12 21:49:47
314
原创 TurtleBot3 Package turtlebot3_drive source code read
此处阅读简单的 turtlebot3_drive 代码。从ROS的角度,作为一个demo,它足够小、简单,可以从中看见ROS的 NodeHandle如何使用。此外,我们也能简单地看到 “自动避障功能的实现”。从C++的角度,它实际上并不复杂,我们能够回顾C++编码的规范,对于初学者有帮助。
2025-04-09 22:05:07
425
原创 MNIST 数据集 与 TFOD API
此处给出我在进行毕业设计过程中写的三份脚本,作为demo 展示模型的预处理,输出信息提取和TFOD API的应用。
2025-04-07 17:12:30
186
原创 webcam video demo
这是ROS情景下的一个节点,展示了ROS节点的常见格式。代码很简单,单展示了持续视频流的发布,还展示了基本接口的使用。一个 demo,使用 OpenCV,手动操作 webcam,保持相机打开,防止频繁的 开关损坏摄像头硬件。
2025-03-31 21:22:19
252
原创 ROS Image and Compressed
记录一个尝试,给出一份demo,关于 rostopic 和 Image type。在多机通信中,有时为了性能,我们在 pub 端对数据进行压缩,在 sub端解压,这样节省带宽,提高传输速率。而具体的性能数据可以通过 command-line tool rostopic 协助查看。例如:此处我假设已经有 pub 端发布 topic,我在本地进行了尝试,分别订阅两个 topic,查看效果。发现 raw 图更迅速。此处给出scripts,其中展示了 图像类型转换、模型推理,压缩与未压缩的接口。
2025-03-31 21:16:31
365
原创 ROS的包缺少问题
有些 package是第三方或者客制化的内容,本身就不可能在官网下载。需要你在自己的 workspace 中 catkin_make 之后生成。对于 resources not found,我总是想当然地认为是 源 的问题,类似。tree 指令的用法,tree -L 3, 我很喜欢的用法。缺少包,看说明文档确认一下。下面这条什么意思没弄明白。
2025-03-30 10:54:09
124
原创 ROS topic && rqt notedown
这里记录 ROS 学习笔记 和 项目遇到的问题,提供参考,以便温故知新。ROS topic通信是实际应用场景中场景的通信方式。pub 和 sub两端需要保证 message的类型相同,方可在同一 topic 进行通信。场景的 无法通信问题,除了 网络设置问题, topic name不同,往往就是 message type不同。当然,message type问题有时很隐蔽。考虑指令rostopic type能够显示 某一个 topic 的类型,这对于 pub 和 sub 的 顺利通信很重要。
2025-03-24 16:54:55
343
原创 ROS melodic 安装 python3 cv_bridge
有时候,我们需要处理这些兼容性问题。此处列举我的过程,以供参考catkin_make_isolated allows per-package customization,和常见的 catkin_make 在这里区别不大。很多教程都推荐加上 --install,我这里没有,因为失败了,原因在下面。其中,三个 命令行标识需要更改为你自己的环境路径,你可以通过来找到后两个。至于第一个,因为我在 miniconda下,可以通过指令查看。显示当前python环境。在编译成功后,刷新当前环境,执行指令注意路径。
2025-03-22 23:45:24
448
原创 OpenCV 包测试与缺失GUI解决
最初,我没有安装 opencv-contrib-python,无法显示 GUI 界面,既 cv2.imread() 语句会出错。)被移除,因为它们依赖于 GTK 或 Qt(窗口管理库)。headless 专为无 GUI 环境设计,如服务器。假设你是 ubuntu环境,在 bash 中,输入。且 不同 opencv版本,可能存在不同的结果。版本通常包含完整的 GUI 支持。及相关 GUI 函数(如。
2025-03-22 17:00:44
319
原创 cv2.waitkey() code snippet explanation
此处 & 的目的是为了提取出 后8位。cv2.waitKey() 返回一个 32-bit 的整数,通过按位与操作,提取出后八位,并将结果 与 ‘q’ 的 Unicode码进行比较。(Unicode 码 是 ASCII 码的超集)通常,我们看到上述句子,用于在指定的时间内等待击键,通常用于图像和视频处理应用程序中,以暂停执行并允许用户与显示的窗口交互。至于 ord(),它用于返回字符的 unicode编码。所以,上述代码会一直等待,直到你 输入'q'。
2025-03-21 17:27:21
862
原创 ROS catkin_make编译报错问题
将 YOUR_PACKAGE_NAME替换为你的包名就好了。检查 generate_messages() 是否被注释。另外,若想单独编译 ROS package,可以执行指令。中正确配置消息生成。
2025-03-15 15:57:53
159
原创 查看 tensorflow hub 模型文件信息
还存在第三种方法,如果你模型的作者公布了文档,可以阅读文档,里面会有对模型的介绍说明。比如 tf hub 网站中的 BlazeFace 模型。方法1,在 你配置好的 tf 环境中,运行下述指令,会输出模型相关信息。有时候,工程需要,我们可以使用他人训练好的模型进行推理。或者使用 python脚本输出信息。
2025-03-12 16:22:08
282
原创 安装、使用 tensorflow 遇到的问题
是 Keras 的每日构建版本(开发版),通常包含未正式发布的实验性代码。TensorFlow 2.5.0 在开发阶段可能依赖此版本,但正式发布后不再需要。当前 PyPI 镜像源(如清华源)可能已移除陈旧的。安装时总是出现错误。问题出在 keras-nightly.绕过版本2.5.0,下载清华源中的较新版本。很笨的问题,没有进入python环境。Q1: 没发现满足需求的版本。开发版,导致安装失败。
2025-02-23 16:11:54
325
原创 Ubuntu终端的常用快捷键
自动补全命令或文件名。: 将光标移动到命令行的开始位置。: 将光标移动到命令行的末尾。: 删除从光标位置到命令行末尾的内容。: 删除从光标位置到命令行开始的内容。: 如果命令行没有任何字符,它将关闭终端;如果有字符,它将删除光标位置的字符。: 删除光标前的字符。: 删除光标前的单词。: 粘贴最近使用Ctrl + UCtrl + D或Ctrl + W删除的内容。: 清屏,相当于输入clear命令。: 搜索历史命令。: 终止当前运行的命令或进程。: 复制选中的文本。: 粘贴文本。: 输入。
2025-02-16 22:36:47
812
1
原创 ROS turtlesim 无法通过 键盘控制 turtle 移动
当我们在上进行试验时,如果出现了上述问题,除了指令输入错误、本地没该功能包,未选中 turtle_teleop_key终端进行操作等简单原因外,还有可能是未正确设置环境变量 ROS_MASTER_URI, ROS_HOSTNAME。
2025-02-16 21:39:16
225
原创 C++ Primer Plus chapter 18
考察 std::initializer_list <>这份template函数参照简单的例子书写。这种方式会简单很多。注意到我后面两次调用函数 average_list, 它的 std::initializer_list <>并不相同。
2024-11-09 21:20:14
414
原创 Ubuntu无video设备可能的解决方法
[ERROR] [1718721466.899091890]: Cannot identify '/dev/video0': 2, No such file or directory
2024-06-18 23:11:00
634
原创 C++ Primer Plus v6 Chapter13 exercise 4
简单的两个类,一个基类一个派生类,提供一些member functions, 需要完成member functions定义的书写。基类中有 char* 变量用 new allocate memory,也有char数组,以及一个int 类型的变量。意图很明显,将两种字符存储方式放置在一起,在处理copy constructor, assignment operator时可以进行比对,加深理解。派生类中同样是 char* 变量,用new 申请内存,存放字符串。
2024-06-11 16:25:51
580
原创 C++ C_style string overview and basic Input funcitons
std::cin.get();std::cin.get(char*,int);std::cin.get();
2024-06-09 16:30:10
1279
原创 C++ Compound types overview
overview of union, enumeration and other C++ Compound types.
2024-06-08 18:15:43
1288
原创 ROS实验课(二)
此篇博客记录ROS实验课二的内容,基于教材《ROS机器人开发技术基础》。16.04的Ubuntu版本,7.16.1的gazebo版本,ROS版本为kinetic。老师的本意是我们逐个学习urdf建模与gazebo控制,熟悉整个流程,在提供的教学包的基础上做出自己的改进。记得在工作空间目录 ~/catkin_ws/ 目录下运行指令,安装依赖。此条指令可能无法一次性解决依赖的问题。笔者后面很笨地一个一个装,如果有更好的方法,欢迎留言。本文假设各位都已成功安装教学包。
2024-06-05 13:17:24
755
原创 C++ class notes(二)
这两个函数是最基本的成员函数。它们与对象的生成与销毁相关。constructor用于创造对象,destructor用于销毁对象。这两个成员函数没啥好说的,只是简单易懂的概念与语法。
2024-06-02 22:36:01
1197
原创 C++ Primer Plus v6 Chapter12 exercise 4
重写stack类,加上operator= function 与copy constructor,private中有指针,采用动态分配内存的方式。因此,实际上温习的是指针所指向内存的dynamic allocation,需要注意的是这两个函数。在类的private 中,Max表示对象在创建时最大能拥有的栈的元素值。top指向栈中元素的上一个位置。size 是每个单独类中元素的数量大小,自然不能超过Max。注意对单个栈是否满的判断采用的是 top== size。
2024-06-01 17:28:25
338
1
原创 C++ Primer Plus v6 Chapter 12 exercise 3
很久没写博客了,此次练习作为一对于C++基础类的简单复习。它就是在基础的类的定义上使用动态分配的内存存储字符串,并且重载了operator<<。method file文件中输出的格式设置可以参考,也可以使用C语言的占位符。至少目前为止,我并没发现特别需要这个输出格式的地方,但多学总是好的。除此之外,需要注意的是main函数末尾的取地址符。
2024-05-31 15:27:54
390
原创 ROS实验课(一)
这部分包括工作空间的创建,代码的编写,CMakeList文件内容的添加,还有最后的刷新环境变量(很容易忘记)。至此,简单的两个节点间的通信就完成了。后续的可以学习CMakeList.txt,也可以研究ROS中的通信机制。但现在,已经完成了一小项任务。
2024-05-29 16:26:24
870
2
原创 C++ Primer Plus v6 Chapter 12 exercise 2
此题目考察了 copy constructor, assignment constructor, friend function, conversion constructor,都是基础的内容,实际上并不困难。其中,String& String::operator+(const String& rh) 函数的实现是此题中的新颖点,有参考价值。
2024-05-27 22:42:09
559
1
原创 C++ Primer Plus v6 Chapter 12 exercise 1
需要实现一个类,提供函数的定义,并写一个函数测试。因为private中存在一个char* 指针,需动态分配内存,在虚函数中释放,以免造成内存泄漏。因为private中存在指针,需要深拷贝,copy constructor 和 operator= 需要释放之前指向的内存空间,重新申请,重新赋值。注意 operator= 需做自赋值的检查。在main函数中,我使用了一个类的数组,一个指针数组——相对于其他部分,这两个数组花了我不少时间。
2024-05-27 19:51:03
356
1
原创 C++ Primer Plus Chapter 13 exercise 1&&2
simple example code fragment about derived class && base class, especially the copy constructor, operator= method and so on.
2024-05-27 13:33:37
242
3
原创 C++ Primer Plus v6 Chapeter 11 exercise 5&&6
因为五六题用的是同一个类,且彼此之间并不冲突。所以我在书上提供代码的基础上,同时进行五六题。要点在head file和method file, main file文件中主要是使用自己定义好的类和方法,使用循环(for/while)进行方法的验证。在main file文件中,我定义了两个数组,实际上可以使用new 动态分配内存空间,更节省内存,更高效,此处仅仅作为测试类的正确程度,所以使用比较笨拙的方法。
2024-05-16 15:42:33
722
1
空空如也
faster——rcnn环境配置
2023-11-01
yolov5训练聚类获得先验框
2023-10-14
D盘已删除卷,但C盘扩容有问题
2022-12-16
WinARA分卷问题
2022-11-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人