- 博客(341)
- 资源 (22)
- 收藏
- 关注
原创 ROS仿真与URDF/Xacro教程
使用定义可重用的代码块,通过params指定参数。</</</</</</</</通过本教程,你学习了URDF和Xacro的基本概念,掌握了使用Xacro编写URDF文件的方法,理解了仿真中TF树的作用以及如何解决常见问题。这些知识将帮助你在ROS中更高效地进行机器人仿真和开发。
2025-03-13 15:26:11
912
原创 【自动驾驶】ROS中的TF坐标变换(一):静态坐标变换
机器人系统上,有多个传感器,如激光雷达、摄像头等,有的传感器是可以感知机器人周边的物体方位(或者称之为:坐标,横向、纵向、高度的距离信息)的,以协助机器人定位障碍物,可以直接将物体相对该传感器的方位信息,等价于物体相对于机器人系统或机器人其它组件的方位信息吗?现有一机器人模型,核心构成包含主体与雷达,各对应一坐标系,坐标系的原点分别位于主体与雷达的物理中心,已知雷达原点相对于主体原点位移关系如下: x 0.2 y0.0 z0.5。对于在三维空间里的一个参考系,任何坐标系的取向,都可以用三个欧拉角来表现。
2024-08-15 23:15:00
1217
原创 【自动驾驶】ROS中的重名问题:工作空间、节点、参数
需要将话题名称修改为一致,才能使用,如何实现?ROS 会解析 .bashrc 文件,并生成 ROS_PACKAGE_PATH ROS包路径,该变量中按照 .bashrc 中配置设置工作空间优先级,在设置时需要遵循一定的原则:ROS_PACKAGE_PATH 中的值,和 .bashrc 的配置顺序相反—>后配置的优先级更高,如果更改自定义空间A与自定义空间B的source顺序,那么调用时,将进入工作空间A。又或者,两个节点是可以通信的,两个节点之间使用了相同的消息类型,但是由于,话题名称不同,导致通信失败。
2024-08-13 23:45:00
1076
原创 【自动驾驶】ROS中参数服务器通信(c++)
Talker 通过 RPC 向参数服务器发送参数(包括参数名与参数值),ROS Master 将参数保存到参数列表中。ROS Master 根据步骤2请求提供的参数名查找参数值,并将查询结果通过 RPC 发送给 Listener。Listener 通过 RPC 向参数服务器发送参数查找请求,请求中包含要查找的参数名。3.ROS Master 向 Listener 发送参数值。2.Listener 获取参数。1.Talker 设置参数。
2024-08-13 23:30:00
406
原创 【自动驾驶】ROS远程节点的分布式通信
ROS是一个分布式计算环境。一个运行中的ROS系统可以包含分布在多台计算机上多个节点。根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信。
2024-08-13 23:30:00
606
原创 【自动驾驶】ROS运行管理:元功能包、launch文件、param 、rosparam、args
rosparam总是在launch文件中最先执行,故要想让其最后执行,要把其单独放在另一个launch文件内,这样人为控制该launch文件最后执行。该节点是否必须,如果为 true,那么如果该节点退出,将杀死整个 roslaunch启动的节点。在指定命名空间 xxx 中启动节点,为节点名称设置前缀如/hello/jiedian。如果定义在node节点下,对应参数为/节点名/参数名,即变量加入了私有的命名空间。重新映射话题,使得两个节点使用的话题名称相同,让两个节点能通讯。
2024-08-13 22:45:00
1269
原创 【自动驾驶】自定义消息格式的话题通信(C++版本)
编译时先编译带有自定义消息mymsg.msg的功能包,再编译整体的功能,其顺序不能出错,不然可能生成不了头文件。发布者包含该消息,生成头文件,由发布者publisher包含该消息头文件即可。在功能包目录下,新建msg文件夹,下面新建mymsg.msg文件,其内容为。新增了message_generation。这样工程才能找到生成的消息文件。配置 msg 源文件。
2024-08-08 20:45:00
489
原创 【自动驾驶】话题通信
然后退回到工作空间所在的下层目录,进行catkin_make编译。在功能包目录下新建launch目录,下面放launch文件。节点名称(在 ROS 网络拓扑中节点的名称)节点类型(与之相同名称的可执行文件)
2024-08-08 14:09:21
691
原创 【自动驾驶】ubuntu20.04安装完整ROS的Noetic版本
虽然 apt-get 处理所有软件包安装、升级、系统升级、清除软件包、解决依赖关系等,但 Aptitude 比 apt 处理更多的东西,包括 apt-mark 的功能 和 apt-cache 即在已安装软件包列表中搜索软件包、将软件包标记为自动或手动安装、保留软件包使其无法升级等。每当从命令行调用并指定要安装的包的名称时,它都会在 ‘/etc/apt/sources.list’ 中指定的源配置列表中找到该包以及依赖项列表查找该包并对它们进行排序,并自动将它们与当前包一起安装,从而让用户不必担心安装依赖项。
2024-08-07 23:00:00
673
原创 【FPGA】优化设计指南(二):性能指标
需要注意的是,Block RAM、UltraRAM和DSP48三者资源利用率都不能超过80%,若超过了80%,则要保证三者平均利用率低于80%。与传统的Block RAM相比,UltraRAM具有更高的存储密度和更低的时延,这使得它在某些应用中能够提供更好的性能和效率。它是Xilinx FPGA架构中的一部分,与传统的Block RAM(BRAM)不同,UltraRAM提供了更高容量的存储和更灵活的配置选项。输入到输出的延迟通常用时钟周期个数来表示,称为Latency,该指标也反映了设计的流水级数。
2024-04-22 01:42:47
1848
原创 【FPGA】优化设计指南(一):设计原则
面积和速度是对立统一的。因此,在时钟网络中,MMCM 经常用于生成不同时钟域内的时钟信号,确保这些信号之间具有明确的相位关系,以保证电路的正确功能和稳定性。毛刺通常是短暂的、不稳定的信号脉冲,可能会对电路的正常功能造成影响,特别是在时序要求严格的系统中,如数字电路中的时钟信号处理。在同步设计中,时钟信号的控制可以帮助过滤掉这些毛刺,因为触发器只在时钟的有效沿触发,而不会受到毛刺的影响。在FPGA中,"乒乓操作"通常指的是在时序逻辑中的一种特定操作,用于在两个时钟周期之间交替执行某个操作或改变某个状态。
2024-04-22 01:20:10
1369
1
原创 【DeepStream】基于英伟达DeepStream框架进行算法开发(三):Gst-nvinfer模块介绍
该插件接受来自上游的批处理的 NV12/RGBA 缓冲区。NvDsBatchMeta 结构必须已附加到 Gst 缓冲区。底层库(libnvds_infer)可处理任何 INT8 RGB、BGR 或 GRAY 数据,其尺寸为网络高度和网络宽度。Gst-nvinfer 插件根据网络要求对输入帧执行变换(格式转换和缩放),并将转换后的数据传递给低级库。底层库对转换后的帧进行预处理(执行归一化和均值减法),生成最终的 float RGB/BGR/GRAY 平面数据,然后传递给 TensorRT 引擎进行推理。
2024-02-28 18:52:16
1391
原创 【DeepStream】基于英伟达DeepStream框架进行算法开发(二):推理基础流程
当需要将一个元素连接到另一个元素时,可以使用 get_request_pad() 方法从目标元素中请求一个 pad,然后将这个 pad 与其他元素的 pad 进行连接,实现元素之间的数据传输。这行代码将 caps 元素的输出 pad 和之前获取的 streammux 元素的请求 pad 进行连接,即将属性设置元素的输出与合流器元素的输入连接起来,使视频流能够正确传递到合流器中的指定输入通道。这行代码从 caps 元素的 “src” pad 中获取一个静态 pad,并将其存储在 srcpad 变量中。
2024-02-27 14:20:10
1419
原创 【vscode】vscode在离线环境下配置远程服务器客户端
当需要在离线环境下配置远程服务器客户端时,Visual Studio Code (VS Code) 是一个优秀的工具选择。通过配置远程开发插件,可以在本地使用 VS Code 编辑远程服务器上的文件,提高开发效率和灵活性。在本博客中,我们将深入介绍如何在离线环境下配置 VS Code 远程开发环境,帮助开发者更好地利用这一功能进行远程开发工作。
2024-02-27 13:45:22
1403
原创 【DeepStream】基于英伟达DeepStream框架进行算法开发(一):GStreamer基础
在当今快速发展的人工智能和计算机视觉领域,英伟达的DeepStream框架提供了强大的工具和功能,帮助开发者快速部署和优化实时视频分析应用。本博客将重点介绍基于英伟达DeepStream框架进行算法开发的方法和技巧,包括如何利用DeepStream框架构建高效的算法模型、实现实时视频流处理和应用优化等内容。通过本博客的学习,读者将能够掌握在DeepStream框架下进行算法开发的关键技能,为自己的视频分析项目提供更加稳定和高效的解决方案。
2024-02-27 09:50:25
829
原创 【redis】redis系统实现发布订阅的标准模板
Redis发布订阅功能是Redis的一种消息传递模式,允许多个客户端之间通过消息通道进行实时的消息传递。在发布订阅模式下,消息的发送者被称为发布者(publisher),而接收消息的客户端被称为订阅者(subscriber)。在Redis中,发布者可以将消息发布到一个或多个频道(channel),而订阅者可以选择订阅感兴趣的频道以接收相关的消息。同时,一个订阅者也可以订阅多个频道。当有消息发布到已被订阅的频道时,所有订阅该频道的客户端都能够接收并处理这些消息。
2023-12-19 20:30:00
564
原创 【向量数据库】相似向量检索Faiss数据库的安装及余弦相似度计算(python)
在使用 Faiss 库进行人脸余弦相似度计算的应用中,通常会遵循以下步骤:特征提取:首先,需要使用人脸识别模型对人脸图像进行特征提取。这些特征通常是高维度的向量,代表了每张人脸图像的抽象特征。构建 Faiss 索引:将提取出的人脸特征向量构建成 Faiss 可以处理的索引结构。通常会选择使用内积(dot product)作为相似度度量方式,因为 Faiss 默认使用内积进行近似的余弦相似度计算。
2023-12-18 21:45:00
2592
原创 【DQN】基于pytorch的强化学习算法Demo
DQN(Deep Q-Network)是一种基于深度神经网络的强化学习算法,于2013年由DeepMind提出。它的目标是解决具有离散动作空间的强化学习问题,并在多个任务中取得了令人瞩目的表现。DQN的核心思想是使用深度神经网络来逼近状态-动作值函数(Q函数),将当前状态作为输入,输出每个可能动作的Q值估计。通过不断迭代和更新网络参数,DQN能够逐步学习到最优的Q函数,并根据Q值选择具有最大潜在回报的动作。DQN的训练过程中采用了两个关键技术:经验回放和目标网络。
2023-11-24 08:59:33
746
1
原创 【C++】linux下的gdb程序调试
在 Linux 环境下,我们可以使用 GDB (GNU Debugger) 工具来帮助我们进行程序调试。以上是在 Linux 环境下使用 GDB 调试 C++ 程序的基本步骤和常用命令。通过设置断点,我们可以在程序执行到特定位置时停下来,以便查看程序状态。命令即可启动 GDB 调试器,并加载你的程序。此外,还有其他许多 GDB 命令可用以帮助进行调试和查看程序的状态,可以使用。在进行调试之前,我们需要先用调试符号编译你的 C++ 程序。执行后,程序将开始运行,直到遇到第一个断点或程序结束。
2023-11-21 18:26:00
482
原创 【SOPHON】算能盒子SE-16中c++版本pipeline的环境配置
arm SoC平台,内部已经集成了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包,位于下。通常在x86主机上交叉编译程序,使之能够在arm SoC平台运行。您需要在x86主机上使用SOPHON SDK搭建交叉编译环境,将程序所依赖的头文件和库文件打包至soc-sdk目录中。
2023-11-02 17:54:42
331
原创 【SOPHON】算能盒子SE-16的C++模型转换
本文以 arcface 为例, 介绍如何编译迁移一个onnx模型至TPU平台运行。有疑问具体可参考。
2023-10-27 17:57:36
435
原创 【optuna】将实验结果保存为excel
Optuna 是一个用于自动超参数优化的开源 Python 库。它提供了一个简单且灵活的接口,帮助你在机器学习和深度学习任务中优化算法的超参数。Optuna 的设计目标是使超参数优化过程更加高效和易用。它采用了一种基于序列化和并行化的策略,允许用户定义自己的目标函数,并在超参数搜索空间中动态地探索参数组合,以找到最佳的超参数配置。Optuna 的核心概念是 “Study” 和 “Trial”:Study(研究)是一个优化过程的最高级别实体。
2023-10-26 19:30:00
635
原创 【SOPHON】算能盒子SE-16的配套x86交叉编译环境搭建
tpu-mlir 为TPU编译器工程提供一套完整的工具链,可以将不同框架下预训练的神经网络,转化为可以在算能TPU上高效运行的二进制文件BModel。目前直接支持的框架包括tflite、onnx和Caffe。libsophon 提供BMCV、BMRuntime、BMLib等库,用来驱动VPP、TPU等硬件,完成图像处理、张量运算、模型推理等操作,供用户进行深度学习应用开发。
2023-10-19 13:49:23
1030
原创 【python】ThreadPoolExecutor线程池
在构造函数__init__中,我们传入了两个参数max_workers和max_pending_tasks,分别代表线程池的最大工作线程数和最大挂起任务数。我们还初始化了executor成员变量为一个ThreadPoolExecutor对象,并设置了max_workers为传入的max_workers值,pending_tasks初始化为0。否则,它会使用executor.submit方法来提交任务,并调用_task_wrapper方法包装任务,最后增加挂起任务数并返回任务的Future对象。
2023-10-14 17:56:27
384
原创 【向量数据库】相似向量检索Faiss数据库的安装及余弦相似度计算(C++)
Faiss 是一个强大的向量相似度搜索库,具有以下优点:高效的搜索性能:Faiss 在处理大规模向量数据时表现出色。它利用了高度优化的索引结构和近似搜索算法,可以快速地执行最近邻搜索和相似度匹配,具有很低的查询延迟。高度可扩展:Faiss 提供了多种索引结构和算法的选择,包括 k-d树、IVF(Inverted File System)和 PQ(Product Quantization)等。这些索引结构能够轻松应对大规模的向量数据集,并支持高效的并行计算和分布式处理。
2023-09-07 23:45:00
1835
1
原创 【高性能计算】opencl语法及相关概念(五):图像的仿射变换缩放
要使用仿射变换完成图像等宽高比缩放,可以按照以下步骤进行操作:定义仿射变换矩阵:首先,定义一个仿射变换矩阵,用于描述缩放操作。该矩阵是一个2x3的矩阵,包含平移、缩放和旋转的参数。对于缩放而言,我们只需要调整矩阵中的缩放参数。其中,scale_x和scale_y分别表示在 x 和 y 方向上的缩放因子。构建仿射变换矩阵:使用上述定义的缩放因子,将其填充到仿射变换矩阵的相应位置。应用仿射变换:对于每个图像像素,根据仿射变换矩阵的逆矩阵将其映射到原始图像中的位置。
2023-09-04 23:45:00
325
原创 【高性能计算】opencl语法及相关概念(四):结合opencv进行图像高斯模糊处理
高斯模糊是一种常用的图像处理技术,用于减少图像中的噪点和细节,并实现图像的平滑效果。它是基于高斯函数的卷积操作,通过对每个像素周围的邻域像素进行加权平均来实现模糊效果。具体而言,高斯模糊通过在图像上滑动一个卷积核,将卷积核与输入图像的对应像素进行一一相乘,并将结果相加,从而产生输出图像的每个像素值。这个卷积核是一个二维高斯函数,它的形状决定了模糊的程度。在高斯函数中,离中心像素越远的像素会被赋予更小的权重,从而降低了离中心像素的贡献,实现模糊的效果。通过调整高斯核的大小和标准差参数,可以控制模糊的程度。
2023-08-31 23:30:00
991
原创 【高性能计算】opencl语法及相关概念(二):索引,队列,核函数
设备(device):宿主机使用的 OpenCL设备集合。内核 (kernel):在 OpenCL 设备上运行的 OpenCL 函数。程序对象 (program object):实现内核的程序源代码和可执行文件。内存对象(memory object):内存中对OpenCL设备可见的组对象,包含可以由内核实例处理的值。
2023-08-30 23:30:00
1130
原创 【高性能计算】opencl语法及相关概念(三)事件,内存
当谈到OpenCL中的事件时,它们代表了执行的各个阶段或操作的状态信息。通过使用事件,您可以跟踪和管理内核执行以及内存操作的进度和顺序。以下是与OpenCL事件相关的关键概念:创建事件:您可以使用或函数手动创建事件,或者使用OpenCL API执行其他操作时自动创建事件。内核执行事件:当您将内核提交到命令队列进行执行时,会返回一个事件对象,您可以利用该事件对象来跟踪内核执行的状态。等待事件:可以使用或函数来阻塞程序直到指定的事件完成。这对于确保内核执行顺序以及依赖关系非常重要。
2023-08-30 23:30:00
648
原创 【高性能计算】opencl语法及相关概念(一):工作流程,实例
在上述代码中,get_global_id(0) 是在内核函数 vectorAdd 中使用的,表示获取当前工作项在全局范围的第一个维度(维度编号为0)上的索引。例如,如果在执行内核函数时将全局执行范围设置为 128,那么在第一个维度上,工作项的索引值将从 0 到 127,总共有 128 个唯一的索引值。例如,如果在执行内核函数时使用了 128 个工作项并且当前工作项的全局索引是 10,那么 get_global_id(0) 会返回 10,表示当前工作项在全局范围的第一个维度上的索引是 10。
2023-08-28 23:30:00
809
原创 【高性能计算】opencl安装及相关概念
安装特定硬件厂商提供的OpenCL SDK:如果您的系统不提供默认的OpenCL运行时和驱动程序,或者您希望使用特定硬件厂商提供的最新版本运行时和驱动程序,那么可以安装相应厂商提供的OpenCL SDK。虽然特定硬件厂商提供的OpenCL SDK可能包含额外的工具和优化,但OpenCL的核心标准和函数接口是跨平台的,并且可以在没有特定SDK的情况下进行开发和编译。总而言之,异构计算利用不同类型的计算资源的特点和优势,通过合理分配和协同使用这些资源,实现更高的计算性能、能源效率和灵活性。
2023-08-24 23:15:00
2347
原创 【架构】探索计算机处理器的世界:ARM和x86架构解析及指令集
通过本文的介绍,我们了解了ARM和x86这两个重要的处理器架构。它们在不同的领域发挥着重要的作用,驱动着计算机技术的不断进步。在选择合适的处理器架构时,我们需要考虑应用需求、性能要求和生态系统支持等因素。祝愿读者在处理器的世界里,找到最适合自己的架构!
2023-08-24 22:00:00
3230
原创 【OpenMp】openmp库的介绍及安装
OpenMP(Open Multi-Processing)是一种并行编程框架,用于在共享内存系统中实现并行计算。它是GCC编译器的一部分,提供了一组指令和编译器指导,帮助程序员实现程序的并行化。OpenMP的目标是简化并行编程,提高程序的执行效率。
2023-08-23 23:30:00
3528
1
原创 【OpenMp】openmp库的基本语法
动态调度模式是先到先得的方式进行任务分配,不用size参数的时候,先把任务干完的线程先取下一个任务,以此类推,而不是一开始就分配固定的任务数。总之,reduction指令是OpenMP中用于对并行循环中的变量进行归约操作的指令,能够自动将每个线程的局部变量的结果累加到一个全局变量中。在并行循环中,每个线程都会拥有自己的sum的局部副本,并在循环的迭代过程中进行累加操作。当循环结束后,reduction指令将会将每个线程的sum的局部副本的结果相加,并将最终的总和存储到全局的sum变量中。
2023-08-23 17:58:56
1347
原创 【ffmpeg】基于需要使用videocapture的opencv编译配置(C++)
opencv使用videocapture读取视频流时,需要借助底层的ffmpeg库。如果不能正确编译,会报错,现记录正确编译配置方法。
2023-08-22 18:01:51
1356
原创 【判别方法】模糊图像的拉普拉斯判别,C++及python版本
通过判断一组合格的图像,利用下列代码,得到所有图像的模糊值,取其中最小值作为模糊的阈值下限,在实际应用中,一旦超过该值,则认为图像清晰,小于该值,则认定图像模糊。
2023-08-22 17:42:49
688
cuda的host函数的导出库制作的示例工程
2024-08-09
c++类及函数动态库导出的示例工程,基于cmakelist,使用g++编译器
2024-08-09
SOPHON算能盒子SE-16的配套x86交叉编译环境搭建
2023-10-19
cmake工程标准编译框架
2023-05-05
Inno Setup:windows下安装程序制作软件,及打包模板
2023-03-20
win10 opencv python 显示中文
2023-02-06
5点和68点人脸识别模型shape-predictor-68-face-landmarks.dat及使用说明
2023-01-31
lbpcascade-frontalface.xml与 haarcascade-eye-tree-eyeglasses.xml
2023-01-28
多类模型转onnx工具
2023-01-15
intel官方人眼睁闭分类模型onnx,输入图片为单眼区域,返回睁或闭的状态
2023-01-15
centos下opencv的编译后的安装包(编译时带opencv-contrib扩展包)c++
2022-12-20
arcfaceresnet100-8及scrfd_2.5g_kps_S模型(openvino的xml及bin及普通的onnx模型)
2022-12-02
openvino.rar
2022-12-02
protobuf-cpp-3.11.4.rar
2022-10-13
sci-kitlearn中的'mnist_784'数据集
2022-09-04
qt翻页按钮控件及示例.rar
2022-08-08
windows关于qt的数据库操作封装类以及用例,c++代码
2022-08-08
QT windows32位可用的web服务器 C++ 内含部署说明
2022-07-22
【pytorch】将yolov5模型通过openVINO2022部署至生产环境(二):C++版本 异步模式
2022-05-31
【pytorch】将yolov5模型通过openVINO2022部署至生产环境(二):C++版本博文对应源码
2022-05-27
博文:【pytorch】将模型部署至生产环境:借助TensorRT 8完成代码优化及部署(二):C++接口实现 的代码备份。
2022-05-16
windows opencv 在画面中添加中文,解决乱码问题。附带动态链接库Gdi32.Lib,gdi32.dll
2022-05-13
tensorRT的python接口用pycuda的wheel安装包
2022-05-11
训练好的口罩检测模型及口罩数据集(正负例各300张)对应博文:pytorch:基于yolov5的口罩检测记录。
2022-03-30
tensorflow h5py数据
2022-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人