- 博客(48)
- 收藏
- 关注
原创 【ROS2】各种相关概念汇总解释
系统越复杂,构建越困难,ament_cmake就是用于辅助解决这一部分的工具,功能包括但不限于:自动处理依赖传递、导出依赖关系、配置安装路径等。在cmakelists.txt中使用到的ament_target_dependencies,就是ament_cmake 构建系统提供的一个宏,在此基础上建立的标准化ROS2构建流程,相较于单纯用cmake管理项目,要简单的多。似乎没有一个确定的名称,就是通俗的叫做“ROS2自带的消息接口”是 ROS 2 中基于 CMake 的构建系统。
2025-06-03 21:56:37
171
原创 【ROS2】报错记录及对应解决方案
好记性不如烂笔头开发过程中,逆天环境和个人的逆天操作,在初期都时有发生,为了减少以后撞墙碰壁,特此记录持续更新中
2025-05-14 22:06:56
287
原创 【ROS2】【分步讲解】节点的使用以及引入消息接口的方法
本文主要介绍了在ROS2中如何创建和运行一个完整的功能节点,以发布者(Publisher)和订阅者(Subscriber)为例。首先,创建节点的步骤包括:创建节点、定义节点身份、分配具体任务以及运行节点。通过类比“送快递”的任务,详细解释了每个步骤的含义。接着,展示了发布者节点的完整代码,并逐步拆解了节点的创建、功能定义和任务分配过程。最后,补充了如何引入消息接口(如std_msgs)以及一些C++语法的解释。整个过程清晰易懂,适合初学者理解ROS2节点的基本构建与运行。
2025-05-14 18:27:09
1051
原创 【Debian】关于LubanCat-RK3588s开发板安装Debian的一些事
补充,我又换回ubuntu了,debian配置比ubuntu麻烦多了,虽然自由度更高,但是依赖缺的厉害,如果被环境折腾的受不了,还是用ubuntu吧。琐碎的事问题不少,甚至一度让我以为核心坏了。
2025-05-10 21:10:07
562
原创 高斯过程回归(GPR)原理的通俗解释
高斯过程回归(GPR)是一种基于概率的回归方法,通过概率分布描述所有可能的函数形式,并给出预测结果的不确定性。与传统的回归模型不同,GPR不直接拟合固定函数,而是通过核函数和先验分布来推断未知数据的概率分布。其核心思想是将函数视为无限维的正态分布,利用核函数衡量数据点之间的相似性,结合贝叶斯定理更新后验分布,最终给出预测值和不确定性范围。
2025-05-10 19:45:04
1225
原创 常见标签语言的对比
XML、JSON 和 YAML 是三种常见的数据序列化格式,均支持结构化数据表示和跨平台兼容性,广泛应用于不同领域。XML 使用标签闭合,语法冗余但结构严谨,适合复杂文档和企业级数据交换。JSON 基于键值对,语法简洁且解析速度快,是 Web 开发中的标准格式,适合轻量级数据传输。YAML 依赖缩进和冒号,可读性高,支持复杂数据类型和注释,常用于配置文件和 DevOps 场景。选择时需权衡可读性、解析性能和功能需求:YAML 可读性最佳,JSON 性能最优,XML 功能最丰富。
2025-05-09 19:34:54
458
原创 【Gen6D位姿估计】在Linux环境下的复现日志(包含COLMAP安装)
算法和代码框架均来自港大的课题组gen6d介绍页面我只是拿来做一个毕设,答辩结束后会遵循GPL协议开放所有代码这篇博客仅作为开发日志,记录一下部署过程中的各种问题和解决方法,仅供学习讨论此外,不得不说,这项工作的识别估计的效果不错,但是效率有点太低了,在GTX1650上处理一帧数据需要1.07秒。
2025-04-23 16:59:25
1045
4
原创 【Ubuntu】关于系统分区、挂载点、安装位置的一些基本信息
在ubuntu22及以前的版本中,最好是手动配置分区及其挂载点,通常我们会配置成3/4个分区:引导区,交换区,根挂载点,home挂载点(有时根挂载点和home合二为一)
2025-04-23 16:55:03
368
原创 【人工智能】控制专业的职业发展方向
先说结论,AI是一种辅助工具,无论是开发、生活还是学习,它都可以起到辅助作用。但是不难发现,入门AI,或者说会用AI是非常快的一件事(指利用各种块搭建简单的深度网络)那么人工智能这个专业是在做什么呢?这就涉及到网络设计了,比如为了实现某一个目标,搭建了一个初代的模型,然后得出60%的准确率,然后呢?接下来是换模型还是改进网络结构?如果想要改进网络结构,是改变块的数量,还是改变并行结构的数量,还是将结构从1+3+6+3+1改成1+2+5+3+1?如何大致保证改进效果是调优而不是劣化?
2025-04-19 17:27:59
329
原创 【CUDA】ubuntu环境下安装cuda
软硬件匹配问题下面的三个问题是一体的,直接看具体实现就行,是完整安装cuda的流程,在新安装的ubuntu系统中已跑通笔者环境:ubuntu 22.04,显卡GTX 1650,cuda 12.2,显卡驱动 535。
2025-04-14 21:07:59
1434
原创 【vscode】Windows环境下,一键编译c/c++工程
Windows下默认使用的是基于vs的nmake,而不是cmake,需要在launch和task两个json文件之外,在创建一个CMakePresets.json,在其中选定mingw作为编译器,并通过cmake …/ --preset=mingw正确生成编译文件。在linux下使用make编译工程,但是Windows下需要使用ninja 或 MSBuild,为了避免这一问题,需要使用cmake --build .命令编译,解决平台问题。
2025-03-18 20:56:08
324
原创 【深度学习】Adam(Adaptive Moment Estimation)优化算法
Adam算法结合了动量法(Momentum)和RMSProp的思想,能够自适应调整每个参数的学习率。通过动态调整每个参数的学习率,在非平稳目标(如深度神经网络的损失函数)中表现优异。
2025-03-06 21:53:10
1015
原创 【vscode】Linux环境下一键编译运行c/c++程序
虽然我这里使用CMake,但是它只是一个用于编译生成可执行文件的工具,完全不影响将工具换成g++,gcc等,这套配置是完全通用的右上角一键编译运行的内部流程task.json格式概述launch.json格式概述CMake格式概述攒起来,组合成通用开发环境举例},},task.json中,在方括号中的,每一组用{ }括起来“东西”,都是一个task,也是这个文件真正要去执行的事。
2025-03-06 21:35:50
1079
原创 【Python】将不规则凸多边形映射到单位正方形
在机器学习领域常需要将数据归一化后才能进行训练等操作,一维数据很容易处理,但对于二维的不规则数据,则需要一些手段,本文就是用来解决这个问题此外,有时候希望可以用循环遍历一个不规则的二维平面,显然难以直接实现,此时将该平面映射到一个规则的矩形范围内,就能轻松实现这个目标。
2025-02-07 16:30:26
841
原创 【深度学习】基于MXNet的多层感知机的实现
大致由三层组成:输入层-隐藏层-输出层,其中隐藏层大于等于一层其中,隐藏层和输出层都是全连接隐藏层的层数和神经元个数也是超参数多层隐藏层,在本质上仍等价于单层神经网络(可从输出方程简单推得),但是增加网络的深度可以更加有效地提高网络对深层抽象概念的理解,降低训练难度。
2025-02-06 22:11:56
771
原创 Python调用C++程序实现
由于C++的执行速度快、控制粒度细,Python上层开发方便、迭代速度快,故经常可以遇到C++写好接口供Python调用的情况,但是其中bug还不少(尤其是动态链接库一个链接另一个,就会产生比较复杂的关系)link_directories用于告知CMake,依赖的库需要去哪里调用,我这里图方便,直接在target_link_libraries里就写了绝对地址。target_link_libraries用于告知CMake,生成动态链接库时,需要依赖什么库。add_library用于生成动态链接库。
2025-02-05 23:21:40
350
原创 vscode+CMake+Debug实现 及权限不足等诸多问题汇总
我喜欢一站式开发,更喜欢通用环境,vscode+cmake是一个不错的选择,但是我还想debug,此时就会产生环境问题,这篇文章就是用于解决这个问题的
2025-02-05 23:08:17
884
1
原创 【Python】树莓派5的GPIO控制
【基于python】方法不唯一尝试了单独使用RPi.GPIO和lgpio库的方法,但都存在环境问题个人对于设备树了解不深,内核与驱动亦了解不多,写出该方法只是因为它直接可用,不构成指导意见。
2025-01-12 15:08:53
402
原创 【c++双线程】通过读取键盘输入,控制主程序的运行
主程序持续打印“Value of shared_var after modification: 0”,直到输入1(回车)在终端,”Value of shared_var after modification: 42”,然后程序终止。主程序有刚需执行的任务,且不方便暂停,又希望可以有一些交互方式,可以控制主程序的运行。然后看到打印信息“用户输入 ‘1’!
2025-01-09 16:57:05
434
原创 Shell脚本的学习
常用系统变量$HOME, $PWD, $SHELL, $USER等((表达式))用来扩展Shell中的算术运算,以及赋值运算,扩展for,while,if条件测试运算.支持C语言表达变量加不加$都行四则运算、逻辑运算符合C语言习惯(Shell原来的运算十分奇特,所见即所得)没有了空格的要求。
2025-01-09 13:11:54
745
原创 基于VSCode&CMake的开发环境
各种语法前提:指令(函数)大小写不敏感,变量和参数大小写敏感变量的创建与赋值使用set函数:set(HELLO hello.cpp)即创建变量HELLO,并赋值为hello.cpp变量的调用用和花括号表明调用变量,注意,变量大小写敏感:{HELLO}if语句调用变量时,直接用变量名即可,禁止使用${}的形式需要调用大量源文件时,通常会用set()创建一个变量,对所有需要的源文件进行打包,然后调用这个变量,调用时记得添加${}目录(地址)的表示。
2025-01-06 21:00:32
968
原创 git学习日记
记录一下从单片机开发转向Linux开发,第一步是学习git,学习管理自己的项目我纯粹是把这里当网盘了,学一点写一点,预防自己忘记,
2024-11-30 22:23:30
430
1
原创 【嵌入式开发】从标准库到HAL库的学习(二)——HAL_Delay()详解——滴答定时器的使用
上述提到的变量uwTickFreq(值来自宏HAL_TICK_FREQ_1KHZ==1),即让SysTick每1ms溢出一次。各种算法需要的采样时间、外设模块需要的延时时间、测试所需的延时时间等,都可以使用SysTick。我们也可以直接调用SysTick->LOAD和SysTick->VAL,来。使滴答定时器正好1s把SystemCoreClock计完,然后溢出。HAL_Delay()函数会调用滴答定时器的溢出情况(中断)来计时。(第16位为定时器溢出标志,读一次清空)(定时器重装载值)、
2024-07-14 01:16:12
915
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人