- 博客(77)
- 资源 (2)
- 收藏
- 关注
原创 【cursor】 在 chat 对话框中,实现字体加粗,之护眼计划
cursor 中,shift+ctrl+p, 搜索setting.json打开如下,添加属性并修改参数。- `font-weight: 100-900` - 数值表示(100最细,900最粗)- `font-weight: normal` - 正常粗细。- `font-weight: bold` - 粗体。font-weight 属性可以自定义修改加粗。- 400 相当于 normal。- 700 相当于 bold。
2025-03-28 09:53:49
207
原创 【设计模式】访问者模式(Visitor Pattern): visitor.visit(), accept()
访问者模式是一种行为型设计模式,它允许我们向一个类的对象添加新的操作,而不改变该类的定义。访问者模式将操作的定义与对象结构分离,使得操作可以独立地扩展。通过访问者模式,您可以更灵活地扩展操作逻辑,同时保持对象结构的稳定性。
2025-01-24 17:47:46
989
原创 【嵌入式开发】stm32 st-link 烧录
使用ST-Link烧录STM32的程序可以通过多种工具实现,例如STM32CubeProgrammer、Keil、IAR、以及OpenOCD。如果遇到具体问题或错误提示,可以提供详细信息,我可以帮助进一步排查问题。
2025-01-19 19:50:32
853
原创 C#中委托和函数类的关系
函数类 ≈ 委托,但并不完全相同。委托是用于封装方法的类型,它在编译时会生成一个类。你可以将委托理解为一种专门为函数设计的轻量级类。C# 的内置委托类型(如Func和Action)大大简化了委托的使用,使其更接近于常见的函数式编程中的“函数类”概念。
2025-01-16 17:06:03
615
原创 在 C# 中的Lambda 表达式
在 C# 中,Lambda 表达式是用来定义匿名函数的一种简洁方式,通常用于简化代码,尤其是在 LINQ 查询、事件处理或方法作为参数的场景中。
2025-01-16 17:04:11
480
原创 【WPF】 数据绑定机制之INotifyPropertyChanged
(Microsoft.Toolkit.Mvvm)是 Microsoft 推出的 MVVM 框架,它在。它的主要作用是,当对象的某个属性值发生更改时,通知绑定到该属性的 UI 控件更新其显示内容。操作符替代硬编码的字符串,避免因属性名变更导致的问题。: 如果一个属性的更改会影响其他属性,可以触发多个。层,确保当属性值更改时,UI 会自动更新。是 WPF 中的一个接口,用于实现。创建一个简单的 WPF 界面,绑定到。当某个属性的值发生变化时,通常由。,通知所有属性值发生变化。在 MVVM 模式中,
2025-01-03 17:32:04
1672
原创 【设计模式】依赖注入(Dependency Injection, DI)
依赖注入(Dependency Injection, DI)是,用于实现对象之间的松耦合,同时提升代码的可测试性和可维护性。它主要用于管理和提供对象的依赖关系,而不需要在代码中手动创建依赖实例。
2025-01-02 16:00:04
830
原创 【机器人】机械臂轨迹和转矩控制对比
和是机器人控制中的两个概念,它们在目标、方法和应用上有所不同,但也有一定关联。是基于机器人动力学模型的控制方法,目标是控制机器人关节力矩或力,使其达到期望的状态(如位置、速度、加速度)。的重点是控制机器人沿着给定的轨迹运动。它关注的是末端执行器的位置和姿态是否准确地跟随给定的轨迹。使用逆运动学计算末端期望位置所需的关节角,然后通过位置控制或动力学控制实现轨迹跟踪。
2024-12-22 17:29:57
792
原创 【设计模式】空接口
接口用于定义某个类的特定能力或特性。在工作流或任务管理系统中,接口可以帮助标识哪些任务可以在特定阶段执行。通过实现这些接口,任务类可以被标识为在相应的阶段可以执行,从而在验证和执行逻辑中进行类型检查。定义两个接口,分别用于标识任务。举例如下,在暂停/恢复阶段和完成阶段的可执行性。接口用于标识任务在特定阶段的可执行性。空接口,可以赋予属性标签。通过实现接口,任务类可以被标识为在相应的工作流阶段可以执行。在验证和执行任务时,可以使用接口进行类型检查,以确保任务在适当的阶段被调用。
2024-12-20 10:26:27
531
原创 【机器人】控制之稳定性判定: 李雅普诺夫Lyapunov (7) 判定是否是李函数,思维导图
要判断一个函数 V(x)V(x) 是否可以作为某个动力学方程的 Lyapunov 函数,需要满足特定的数学和物理条件。以下是详细说明:一个函数 V(x)能否作为 Lyapunov 函数,需要满足以下基本条件:时间导数: 计算 Lyapunov 函数的时间导数:条件构造或选择 V(x)V(x) 时,需要结合系统的动力学特性,以下是几种常见方法:如果系统具有物理意义(如机械或电气系统),可以直接选择系统的能量(动能 + 势能)作为 Lyapunov 函数。示例:单摆系统对于误差动态系统,可以选择距离平衡点的某种
2024-12-11 19:22:17
1032
原创 【机器人】控制之稳定性判定: 李雅普诺夫Lyapunov (4) 李函数设计再举例
图中的动力学方程和 Lyapunov 函数构造方式是基于能量的物理意义,以及该系统的特性推导出来的。以下详细解释为什么可以用图中的 Lyapunov 函数 VV 来描述该动力学方程的特性。
2024-12-11 18:37:42
447
原创 【机器人】控制之稳定性判定: 李雅普诺夫Lyapunov (3) 李函数设计举例
构造 Lyapunov 函数需要结合动力学方程的特性进行设计。以下以常见的步骤和示例详细讲解如何从一个动力学方程出发,构造 Lyapunov 函数。动力学方程通常形式为:其中 xx 是系统的状态变量,f(x)f(x) 是状态变化的动态规则。。
2024-12-11 18:26:41
849
原创 【机器人】控制之稳定性判定: 李雅普诺夫Lyapunov (2) 如何设计李(李雅普诺夫)函数
系统模型和构造 Lyapunov 函数之间是,但这种关系并不是唯一的,也就是说,构造 Lyapunov 函数需要参考系统模型的特性,但可以有多种选择。以下从理论和实践两方面解释它们的关系。系统模型描述了状态变量随时间的变化规律,通常形式为:Lyapunov 函数的构造需要反映系统模型的动力学特性,特别是状态变量如何影响系统的能量或“势能”变化。
2024-12-11 18:12:31
834
原创 【机器人】控制之稳定性判定: 李雅普诺夫Lyapunov (1)
介绍基本概念。什么是lyapunov 判定,李函数的标准是什么,基于这个函数的判断稳定性的条件是什么。
2024-12-11 18:07:19
550
原创 【机器人】振动分析和控制工具之Bode图(附代码)
幅值图 (Magnitude Plot):描述系统对不同频率输入信号的增益大小(幅值响应)。相位图 (Phase Plot):描述系统输出信号相对于输入信号的相位差。Bode 图的横轴是频率,以对数刻度显示(单位:rad/s)。纵轴则分别显示幅值(以分贝 dBdB 为单位)和相位(以角度为单位)。相位图的完整解释什么是相位图相位图表示系统输出信号相对于输入信号的相位差,反映了信号的延迟或超前行为。
2024-12-09 09:28:06
1045
原创 【机器人】系统辨识之激励轨迹设计(傅里叶级数)
傅里叶级数是激励轨迹设计中的一种理想选择,特别适合周期性运动的机器人参数辨识。使用傅里叶级数有助于生成平滑、低噪声、动态特性丰富的轨迹,同时允许通过优化调整参数以满足特定需求。傅里叶级数,直接映射了频域的响应。对于许多机器人系统(如关节型机械臂),周期性运动是自然的选择,因为它可以让系统循环激励而无需频繁切换模式。激励轨迹的作用是通过驱动机器人运动,产生尽可能丰富的数据,帮助准确辨识动力学模型参数。,具有良好的数学特性,同时符合物理要求。傅里叶级数的特性使其在机器人动力学辨识的激励轨迹设计中非常常用。
2024-12-08 11:35:01
1651
原创 【ROS 机器人快速入门】
创建工作空间和包。编写和编译代码。运行节点和调试。仿真或真实硬件部署。优化和测试系统。这是一个典型的 ROS 开发流程。通过熟悉这些步骤,你可以有效地完成机器人系统的开发与调试。
2024-12-01 15:09:52
650
原创 【计算机视觉算法与应用】OpenCV 提供的基于相关性(基于图像的)三种模板匹配方法:TM_SQDIFF_NORMED、TM_CCORR_NORMED 和 TM_CCOEFF_NORMED 和 NCC
【代码】【计算机视觉算法与应用】OpenCV 提供的基于相关性(基于图像的)三种模板匹配方法:TM_SQDIFF_NORMED、TM_CCORR_NORMED 和 TM_CCOEFF_NORMED 和 NCC。
2024-11-29 14:18:49
882
原创 【计算视觉算法与应用】金字塔,下采样Gaussian Pyramid. 上采用 Laplacian Pyramid (code: py)
金字塔(Pyramid)在图像处理中主要用于多尺度分析和图像压缩。
2024-11-29 13:50:32
462
原创 【设计模式】1. 构建器模式(Builder Pattern)是一种创建型设计模式
构建器模式(Builder Pattern)是一种创建型设计模式,用于分步骤构建复杂对象,同时允许按照不同的需求生成不同的表示。该模式将对象的构建过程与其表示分离,使得相同的构建过程可以创建不同的对象。
2024-11-27 17:48:27
636
原创 【工作】述职报告
2. 另一方面,也是强迫自己思考的过程。主动思考是一件很累的事情。1. 一方面对外,自己做了什么,让上面+n有把握。为什么要做述职报告。
2024-11-19 23:37:36
108
原创 【c++/C#】 混编的多线程,thread_local,
C++ 通过 thread_local 变量来实现线程局部存储(Thread-Local Storage, TLS),而 C++ 动态库并不需要直接感知线程是从 C++ 还是 C# 端创建的。线程的管理、调度等由操作系统处理,而 thread_local 的工作机制是与具体的编程语言无关的。让我们更深入地解释这个过程。操作系统如何处理线程与 thread_local 线程管理由操作系统负责: 无论是从 C# 端还是从 C++ 端创建的线程,底层都是由操作系统来负责管理的。当 C# 创建一个线程,操
2024-10-18 12:14:06
673
原创 【cpp基础】thread_local 是在多线程环境中处理线程独立变量的有效工具
关键字在C++中用于声明。每个线程都有自己的独立实例,线程之间不会共享这个变量的值,因此不会发生竞态条件。特别是在多线程环境中使用全局变量时,可以确保每个线程都维护自己独立的变量实例,避免多个线程对同一变量的访问冲突。
2024-10-18 09:38:08
173
原创 【相机】标准 GenICam 通用相机标准
的目标是提供一个标准化、统一的编程接口,用于基于不同物理接口(CoaXPress, GigE Vision等)或来自不同供应商的相机和帧捕获器。),以及命名事物的相关约定(标准特征的。绝大多数相机或者视频卡的。GenICam 是一组。(API)是支持基于。
2024-09-25 11:08:02
664
原创 【Arduino】国产arduino驱动
买的国产 arduino,如果 windows识别不到。或者用 Arduino自带的Driver程序仍不能驱动。又不想用驱动精灵,可以直接安装驱动程序。99%大概率是CH340芯片,驱动下载连接如下。安装即可,不用重启电脑。
2024-09-15 21:00:53
556
原创 【CPP 基础】如何把cpp库,分装给 c# 用。
将C++库封装成C风格的接口是为了提高互操作性,简化跨语言调用的复杂性,并确保内存管理和数据传递的正确性。通过使用C风格的接口,可以明确地控制传递的数据类型和数据结构布局,确保在调用时的安全性和正确性。为了避免内存管理方面的冲突和问题,通常将C++的复杂对象封装在C风格的接口中,并在C#中通过指针(IntPtr)进行操作。在C++中封装的方法(如在DLL中),如果输入参数是一个自定义类型,并且你想在C#中调用它,你需要做一些工作来确保数据结构在两种语言之间正确传递和解释。C风格的API使用简单的函数调用。
2024-08-29 20:40:13
1149
原创 【CMake】基本概念和快速入门
简单来说,在CMake或项目构建中,install步骤就是将构建生成的文件复制到指定的安装目录,以便进行部署、发布或在其他项目中使用。这是构建过程中的一个关键步骤,确保项目的产出物正确地组织和分发。
2024-07-07 13:41:47
325
原创 【深度学习配置环境】Real_Esrgan
先安装 pytorch,再安装 pip install basicsr就正常了。2. 清华源,缺少库 tb-nightly。1. basicsr出错解决方案。
2024-05-28 01:01:42
284
原创 【CPP】优化,用std::move 转移操作优化 复制操作
使用std::move来转移所有权是现代 C++ 编程中的一种常见做法,尤其是在处理资源密集型对象时。它通过避免不必要的资源复制,提高了代码的效率和性能,同时保证了资源管理的安全性。
2024-05-22 17:48:09
431
原创 【cpp】并发多线程 Unique
unique_lock lock1 时候,还没有锁住资源。实际是后面,显式的出发: 比如, lock.lock, 或 std::lock(lk1,lk2), 或者条件变量CV.wait(mtx, []{!2. unique_lock 使用,常常是配合,触发锁定条件的,可以是时间timelockable,也可以是条件 lockable。运行结果,如下: 可见资源在 unique_lock 声明时候,还没有被锁定独享。1. unique_lock 何时锁定资源。
2024-05-13 21:44:42
255
原创 【安装】Usb安装Ubuntu
(如果您想将其格式化为FAT32文件系统则输入format fs=fat32)U盘制作Ubuntu启动盘后无法格式化解决办法。输入以下命令并在每一行命令后按一次。(n指的是写保护U盘的驱动器号)并以管理员身份运行命令提示符。
2024-04-30 17:29:18
504
原创 python中版本,操作系统等问题汇总
解决方法之一,在相应的环境目录中,如图中<MetaGPTenv>虚拟环境中,在lib文件夹下手动添加pwd.py文件。这个问题,是因为源码是给linux的。这里在windows中,没有该命令。pwd.py 代码如下。
2024-02-28 22:20:54
614
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人