
开源项目
文章平均质量分 84
芯动大师
InfoQ签约作者,阿里云专家博主,51CTO专家博主,华为云云享专家,嵌入式开发工程师,AE工程师。
座右铭:向着太阳,追逐梦想!
展开
-
深入解析PID控制算法:从理论到实践的完整指南
大家好,今天我们介绍一下经典控制理论中的PID控制算法,并着重讲解该算法的编码实现,为实现后续的倒立摆样例内容做准备。众所周知,掌握了 PID ,就相当于进入了控制工程的大门,也能为更高阶的控制理论学习打下基础。在很多的自动化控制领域。都会遇到PID控制算法,这种算法具有很好的控制模式,可以让系统具有很好的鲁棒性。(1)闭环控制系统:讲解 PID 之前,我们先解释什么是闭环控制系统。简单说就是一个有输入有输出的系统,输入能影响输出。一般情况下,人们也称输出为反馈,因此也叫闭环反馈控制系统。原创 2025-03-09 21:33:21 · 734 阅读 · 0 评论 -
开源云原生数据仓库ByConity ELT 的测试体验
ByConity的ELT能力能够简化数据处理的复杂性,提高系统的响应速度和可靠性。通过将大部分转换操作留在分析阶段,ByConity能够更好地适应复杂的数据处理需求,特别是在实时数仓和离线数仓的场景中表现出色。从 ByConity 开源之初,我们一直将产品定位为开源云原生数据仓库。区别于传统 OLAP 产品,ByConity 采用存算分离的云原生架构,通过这种架构获得了弹性和降低资源浪费的优势,但与此同时也在一定程度上提高了产品的复杂度。原创 2025-03-06 22:48:27 · 952 阅读 · 0 评论 -
机器人SLAM建图与自主导航:从基础到实践
这篇文章我开始和大家一起探讨机器人SLAM建图与自主导航 ,在前面的内容中,我们介绍了差速轮式机器人的概念及应用,谈到了使用Gazebo平台搭建仿真环境的教程,主要是利用gmapping slam算法,生成一张二维的仿真环境地图。我们也会在这篇文章中继续介绍并使用这片二维的仿真环境地图,用于我们的演示。原创 2025-02-12 22:04:05 · 876 阅读 · 0 评论 -
Transformer图解以及相关的概念
RNN还有一个特定就是能考虑词的顺序(位置)关系,一个句子即使词完全是相同的但是语义可能完全不同,比如”北京到上海的机票”与”上海到北京的机票”,它们的语义就有很大的差别。我们上面的介绍的Self-Attention是不考虑词的顺序的,如果模型参数固定了,上面两个句子的北京都会被编码成相同的向量。为了解决这个问题,我们需要引入位置编码,也就是t时刻的输入,除了Embedding之外(这是与位置无关的),我们还引入一个向量,这个向量是与t有关的,我们把Embedding和位置编码向量加起来作为模型的输入。原创 2025-02-11 22:35:39 · 1041 阅读 · 0 评论 -
从基础到人脸识别与目标检测
从本文开始,我们将开始学习ROS机器视觉处理,刚开始先学习一部分外围的知识,为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。我采用的笔记本是联想拯救者游戏本,系统采用Ubuntu20.04,ROS采用noetic。本文主要系统介绍了机器视觉处理的外围知识,引入了opencv和cv_bridge,后面几篇文章,我们将用它们继续丰富 robot_vision 软件包。原创 2025-02-10 21:30:48 · 1094 阅读 · 0 评论 -
ROS机器人建模与仿真设计——模型控制理论
之前我们学习了如何使用URDF来描述一个机器人,现在就开始学习如何让这个机器人控制跑起来。首先,先把那个圆柱体补全成一个差速结构的小车。下面开始编辑URDF文件,添加其他link和joint,每次添加后,需要重新编译代码,重启RVIZ2。原创 2025-02-09 13:36:27 · 802 阅读 · 0 评论 -
开源云原生数据仓库ByConity ELT 的测试体验
ByConity的ELT能力能够简化数据处理的复杂性,提高系统的响应速度和可靠性。通过将大部分转换操作留在分析阶段,ByConity能够更好地适应复杂的数据处理需求,特别是在实时数仓和离线数仓的场景中表现出色。从 ByConity 开源之初,我们一直将产品定位为开源云原生数据仓库。区别于传统 OLAP 产品,ByConity 采用存算分离的云原生架构,通过这种架构获得了弹性和降低资源浪费的优势,但与此同时也在一定程度上提高了产品的复杂度。原创 2025-02-07 22:21:30 · 933 阅读 · 0 评论 -
开源云原生数据仓库ByConity ELT 的测试体验
ByConity的ELT能力能够简化数据处理的复杂性,提高系统的响应速度和可靠性。通过将大部分转换操作留在分析阶段,ByConity能够更好地适应复杂的数据处理需求,特别是在实时数仓和离线数仓的场景中表现出色。从 ByConity 开源之初,我们一直将产品定位为开源云原生数据仓库。区别于传统 OLAP 产品,ByConity 采用存算分离的云原生架构,通过这种架构获得了弹性和降低资源浪费的优势,但与此同时也在一定程度上提高了产品的复杂度。原创 2024-12-25 22:12:04 · 1257 阅读 · 1 评论 -
RA8D1-Vision Board上OSPI-Flash实践
高阶安全性:卓越的加密算法、TrustZone、不可变存储、带DPA/SPA攻击保护的防篡改功能、安全调试、安全工厂编程和生命周期管理支持。(1)FSP配置:最开始自己按照官方例程配置,在尝试无法获取UID后,发现是工程模板默认配置的CS引脚是CS0,实际硬件连接为CS1。(4)编写程序:由于使用的flash芯片型号不同,主要修改了官方例程的配置和初始化内容。(5)下载调试:首先需要调试初始化在识别芯片UID后,此时可确定配置正常,修改芯片状态后再调试和测试FAL执行情况。原创 2024-12-11 21:51:44 · 374 阅读 · 0 评论 -
Transformer图解
RNN还有一个特定就是能考虑词的顺序(位置)关系,一个句子即使词完全是相同的但是语义可能完全不同,比如”北京到上海的机票”与”上海到北京的机票”,它们的语义就有很大的差别。我们上面的介绍的Self-Attention是不考虑词的顺序的,如果模型参数固定了,上面两个句子的北京都会被编码成相同的向量。为了解决这个问题,我们需要引入位置编码,也就是t时刻的输入,除了Embedding之外(这是与位置无关的),我们还引入一个向量,这个向量是与t有关的,我们把Embedding和位置编码向量加起来作为模型的输入。原创 2024-12-10 22:03:35 · 742 阅读 · 0 评论 -
深入解析PID控制算法:从理论到实践的完整指南
大家好,今天我们介绍一下经典控制理论中的PID控制算法,并着重讲解该算法的编码实现,为实现后续的倒立摆样例内容做准备。众所周知,掌握了 PID ,就相当于进入了控制工程的大门,也能为更高阶的控制理论学习打下基础。在很多的自动化控制领域。都会遇到PID控制算法,这种算法具有很好的控制模式,可以让系统具有很好的鲁棒性。(1)闭环控制系统:讲解 PID 之前,我们先解释什么是闭环控制系统。简单说就是一个有输入有输出的系统,输入能影响输出。一般情况下,人们也称输出为反馈,因此也叫闭环反馈控制系统。原创 2024-12-02 22:43:10 · 1266 阅读 · 0 评论 -
ESP32语音识别灯:从设计到实现的全过程解析
使用ESP32-S3N8R8模块作为主控芯片,S3内核增加了用于加速神经网络计算和信号处理等的指令,这使得我们可以使用它来快速解析训练好的语音模型进行语音识别的功能。原创 2024-11-17 17:42:55 · 1473 阅读 · 0 评论 -
基于ZYNQ 平台测试SD NAND
本来打算拿这些样片去试试信息安全领域是否有所应用,但发现其似乎内置了复位或初始化,导致无法提取上电时的不确定值,故无法提取该SD NAND的物理不可克隆特性,所以这方面的测试无法进行;对于芯片正常读写的测试结果,还是很让人满意的,芯片的价格也很合理。并且LGA-8封装更适合无卡槽的嵌入式开发板设计,在一定的应用领域有着简化硬件设计、减小硬件面积的功能。最后贴上测试工程的链接,还迎复现实验:t=O83A。原创 2024-11-06 21:12:35 · 1050 阅读 · 0 评论 -
codigger体验过程记录
codigger是一款分布式操作系统,主要是便于进行个人移动化办公、在线协同办公、开发和娱乐的私人应用。收到codigger开发者朋友的邀请,于是进行了这款产品的升级体验,接下来就简单介绍一下自己的体验过程吧。原创 2024-11-04 21:59:51 · 464 阅读 · 0 评论 -
C++中的AI编程助手添加
这两年 AI 发展迅猛,作为开发人员,我们总是追求更快、更高效的工作方式,AI 的出现可以说改变了很多人的编程方式。AI 对我们来说就是一个可靠的编程助手,给我们提供了实时的建议和解决方案,无论是快速修复错误、提升代码质量,或者查找关键文档和资源,AI 作为编程助手都能让你事半功倍。原创 2024-10-28 21:36:52 · 1033 阅读 · 0 评论 -
ROS 编程入门的介绍
在 ROS 中,自定义消息类型和服务类型是很常见的需求。我们可以定义自己的消息和服务文件来满足特定的应用需求。首先,在my_robot功能包的msg目录下创建一个新的消息文件,例如然后,在FILES在类似地,我们可以在srv目录下创建一个新的服务文件,例如---然后,在FILES在本文介绍了如何创建 ROS 功能包,并使用主题、服务和 actionlib 实现机器人功能。通过这些基础知识,您可以构建复杂的机器人应用程序。原创 2024-10-25 23:03:24 · 1031 阅读 · 0 评论 -
PID算法原理
今天为大家介绍一下经典控制算法之一的PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。在大学期间,参加的智能汽车竞赛中就使用到了PID经典控制算法,对于智能小车的调试更加的方便。原创 2024-10-24 22:20:16 · 835 阅读 · 0 评论 -
关于LDO,读懂这一篇就够了
在电子设计中,我们经常需要用到不同的直流电压给不同器件供电,其中广泛常见的就是通过LDO稳压芯片来实现得到不同的直流电压输出,因为成本低、性能好,且使用起来也很简单,让低压差线性稳压器(下文简称LDO)用的也越来越多,几乎每款电子产品里都有其身影。说它好用,是因为在普通设计里,只需要加入合适的输入电压,和几个滤波电容即可得到想要的输出电压,非常简单,然而也正因为这看似简单的用法也要工程师熟悉LDO的主要参数结合自己的具体设计。LDO是靠自身的反馈环路控制主功率管,与负载分压,保持输出端电压的稳定。原创 2024-10-22 22:28:23 · 4540 阅读 · 0 评论 -
基于RT-Thread摄像头车牌图像采集系统
使用基于RT-thread操作系统的AB32VG1开发板作为主控,对ov7670摄像头进行图像采集,并使用串口发送图片RGB565格式到PC供opencv进行图像识别。原项目设想在开发板上进行采集的同时并通过简单的二值算法和插值算法实现车牌号识别,但实践中发现开发板的ram并不够保存采集回来的图像信息,与数据手册中介绍的192k有一定差距,实现用户能使用的ram是70k;同时原设想是带lcd屏幕的,但最后发觉io口数量不够,只能通过串口调试显示,但lcd屏幕的 spi代码仍保留在原码中,可供参考。原创 2024-10-21 22:03:27 · 272 阅读 · 0 评论 -
C++ 之 perf+火焰图分析与调试
perf是Linux下的一款性能分析工具,能够进行函数级与指令级的热点查找。利用perf剖析程序性能时,需要指定当前测试的性能时间。性能事件是指在处理器或操作系统中发生的,可能影响到程序性能的硬件事件或软件事件perf list主要是用于列出有哪些可用的event,可以供来分析。,其中可以列出 hard ware 的event, sw 是software的event, 其它类似。原创 2024-10-20 22:30:37 · 1050 阅读 · 0 评论 -
RA8D1-Vision Board上OSPI-Flash实践
高阶安全性:卓越的加密算法、TrustZone、不可变存储、带DPA/SPA攻击保护的防篡改功能、安全调试、安全工厂编程和生命周期管理支持。(1)FSP配置:最开始自己按照官方例程配置,在尝试无法获取UID后,发现是工程模板默认配置的CS引脚是CS0,实际硬件连接为CS1。(4)编写程序:由于使用的flash芯片型号不同,主要修改了官方例程的配置和初始化内容。(5)下载调试:首先需要调试初始化在识别芯片UID后,此时可确定配置正常,修改芯片状态后再调试和测试FAL执行情况。原创 2024-10-19 21:18:42 · 332 阅读 · 0 评论 -
PID算法原理分析及优化
今天为大家介绍一下经典控制算法之一的PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。在大学期间,参加的智能汽车竞赛中就使用到了PID经典控制算法,对于智能小车的调试更加的方便。原创 2024-10-18 22:45:58 · 1079 阅读 · 0 评论 -
Transformer图解以及相关的概念
RNN还有一个特定就是能考虑词的顺序(位置)关系,一个句子即使词完全是相同的但是语义可能完全不同,比如”北京到上海的机票”与”上海到北京的机票”,它们的语义就有很大的差别。我们上面的介绍的Self-Attention是不考虑词的顺序的,如果模型参数固定了,上面两个句子的北京都会被编码成相同的向量。为了解决这个问题,我们需要引入位置编码,也就是t时刻的输入,除了Embedding之外(这是与位置无关的),我们还引入一个向量,这个向量是与t有关的,我们把Embedding和位置编码向量加起来作为模型的输入。原创 2024-10-17 22:02:45 · 922 阅读 · 0 评论 -
关于粒子滤波的解析
基本原理:随机选取预测域的 N NN 个点,称为粒子。以此计算出预测值,并算出在测量域的概率,即权重,加权平均就是最优估计。之后按权重比例,重采样,进行下次迭代。初始状态:用大量粒子模拟X(t),粒子在空间内均匀分布;预测阶段:根据状态转移方程,每一个粒子得到一个预测粒子;校正阶段:对预测粒子进行评价,越接近于真实状态的粒子,其权重越大;重采样:根据粒子权重对粒子进行筛选,筛选过程中,既要大量保留权重大的粒子,又要有一小部分权重小的粒子;原创 2024-10-15 21:40:02 · 814 阅读 · 0 评论 -
WebViz可视化工具的应用
Webviz是一个基于Web的可视化工具,意味着您可以通过浏览器/APP访问它,而不需要安装额外的软件。这对于远程访问和团队协作非常方便。Foxglove是一个开源的工具包,包括线上和线下版。旨在简化机器人系统的开发和调试。它提供了一系列用于构建机器人应用程序的功能。本节将介绍如何使用Foxglove进行数据查看,以及话题通信。为了实现OriginBot与Foxglove的连接,我们需要在OriginBot上搭建ROS环境。原创 2024-10-14 22:20:00 · 414 阅读 · 0 评论 -
多线程;顺序容器;智能指针
shared_ptr的拷贝和赋值1、当新的 shared_ptr 对象与指针关联时,则在其构造函数中,将与此指针关联的引用计数增加1。deque是一个的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector 容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。要加锁的代码段,我们用{}括起来形成一个作用域,括号的开端创建lock_guard对象,把mutex对象作为参数传入lock_guard的构造函数即可。LIO-SAM中的std::lock_guard。原创 2024-10-09 21:18:47 · 995 阅读 · 0 评论 -
python实现匈牙利匹配
现在针对某个项目,利用python实现DBSCAN和Kmeans算法。项目简介:利用某传感器可以采集场景中的点云,每一帧都可以采集数量不等的点(x,y,z)。想要利用DBSCAN和Kmeans对点云进行无监督式的聚类,并利用匈牙利匹配对不同帧的点云簇进行匹配,从而实现跟踪效果。项目备注:这是别人拜托我来写的,我花了一点点时间。从我的角度,这种方法解决该项目,简直是胡扯。。。不过,项目和人不靠谱,并不影响代码的有效性,权当一种消遣。原创 2024-09-29 23:17:23 · 354 阅读 · 0 评论 -
如何帮助我们改造升级原有架构——基于TDengine 平台
此次升级改造总体进行得比较顺利,但过程中也有一些波折,尤其是在数据建模的时候遇到了一些困难。办法总比困难多,通过一些方法和技巧,我们把TDengine改造成了schema-free的数据库,满足了物联网平台的要求,最终完成了升级改造。目前,已经支撑起了所有物联网设备上报的数据,同时支撑起了应用层的各种应用场景。我们使用到的功能还比较简单,主要是插入、连续查询以及降采样查询,对于物联网平台来说基本够用。原创 2024-09-25 23:23:28 · 1467 阅读 · 0 评论 -
基础的点云转换
对于点云处理而言,最简单也逃不过的就是点云转换了,我们就从点云转换开始,来一步步完成点云加速的学习。点云基础转换是3D点云处理中的一个重要步骤。它的主要目的是将点云从一个坐标系转换到另一个坐标系中,通常是为了方便后续处理或者显示。在实际应用中,点云基础转换通常包括平移、旋转、缩放等操作。这里对应了这种方法。原创 2024-09-24 21:50:44 · 843 阅读 · 0 评论 -
基于波特图的控制系统设计算法
波特图(Bode Plot)是一种用于描述线性控制系统频率响应的图形表示方法,通常用于分析和设计控制系统。它以控制系统的传递函数(或频域传递函数)为基础,将系统的幅频特性(振幅-频率响应)和相频特性(相位-频率响应)以图形的方式展示出来。可以根据波特图理解和评估系统的稳定性、性能和鲁棒性。波特图可以指导控制器的设计。通过调整控制器的参数,可以改变系统的频率响应,以满足特定的性能要求。波特图提供了反馈信息,帮助选择合适的控制器类型和参数,以达到期望的控制效果。原创 2024-09-21 23:57:41 · 591 阅读 · 0 评论 -
关于深度学习量化的操作
深度学习中做量化提升运行速度是最常用的方法,尤其是大模型这类非常吃GPU显存的方法。一般是高精度浮点数表示的网络权值以及激活值用低精度(例如8比特定点)来近似表示达到模型轻量化,加速深度学习模型推理,目前8比特推理已经比较成熟。比如int8量化,就是让原来32bit存储的数字映射到8bit存储。int8范围是[-128,127], uint8范围是[0,255]。原创 2024-09-18 21:27:05 · 811 阅读 · 0 评论 -
ROS 编程入门的介绍
在 ROS 中,自定义消息类型和服务类型是很常见的需求。我们可以定义自己的消息和服务文件来满足特定的应用需求。首先,在my_robot功能包的msg目录下创建一个新的消息文件,例如然后,在FILES在类似地,我们可以在srv目录下创建一个新的服务文件,例如---然后,在FILES在本文介绍了如何创建 ROS 功能包,并使用主题、服务和 actionlib 实现机器人功能。通过这些基础知识,您可以构建复杂的机器人应用程序。原创 2024-09-17 23:56:46 · 1178 阅读 · 0 评论 -
图像检测【YOLOv5】——深度学习
Anaconda的安装配置:(Anaconda是一个开源的Python发行版本,包括Conda、Python以及很多安装好的工具包,比如:numpy,pandas等,其中conda是一个开源包和环境管理器,可以用于在同一个电脑上安装不同版本的软件包,并且可以在不同环境之间切换,是深度学习的必备平台。5.安装完成以后,会提示done,然后输入pip list,查看我们的包是否被安装,这里可以看到torch相关的包都安装了。小伙伴们在这里注意一下,环境名和python的版本是可以自己指定的嗷~原创 2024-09-13 21:58:04 · 751 阅读 · 0 评论 -
关于NAND NOR FLASH闪存产品概述
芯片类产品有SD NAND,eMMC, SPI NAND. 他们共同特点是内部都带了针对NAND Flash的管理机制。二来会增加CPU的负荷。随着国内对集成电路,特别是存储芯片的重视,前来咨询我们关于NOR Flash,NAND Flash,SD NAND, eMMC, Raw NAND的客户越来越多了。2,NAND Flash出厂时会有坏块(不用惊讶,原厂出厂的时候都会标识出来,而且比例是很低),在使用当中也可能产生坏块。NAND Flash产品本身存在一定的特性,要正常使用,必须配备对应的管理机制。原创 2024-09-12 22:12:46 · 1541 阅读 · 0 评论 -
动物目标检测——基于YOLOv5和树莓派4B平台
通过以上步骤,我们成功地在性能更强的计算机上训练了YOLOv5模型,并将训练好的模型部署到树莓派4B上,利用树莓派的摄像头实现了实时动物目标检测。这一过程展示了从环境配置、数据准备、模型训练到模型部署和实时推理的完整流程。通过本文的介绍,相信读者能够掌握在树莓派上部署YOLOv5进行动物目标检测的完整流程。这一技术在智能家居、安防监控、农业监测等领域具有广泛的应用前景。希望本文能够为你的项目开发提供帮助和参考。原创 2024-09-12 22:03:37 · 964 阅读 · 0 评论 -
使用CLion进行ROS开发
回到一开始的"Threads & Variables"窗口,左上角有一些控制按钮,从左到右依次是:Rerun(Ctrl+F5),Stop(Ctrl+F2),Resume(F9),Pause(暂时用不上),Step Over(F8),Step Into(F9),Step Out(Shift+F8)。上图中,上方从左到右依次为:选择编译器,选择源文件,构造(用于项目打包整体编译,现阶段用不到),运行,调试。单击要修改名称的源文件,按下快捷键“Shift+F6”,修改名称,并点击"Refactor"。原创 2024-09-11 22:38:29 · 1149 阅读 · 0 评论 -
关于粒子滤波的解析
基本原理:随机选取预测域的 N NN 个点,称为粒子。以此计算出预测值,并算出在测量域的概率,即权重,加权平均就是最优估计。之后按权重比例,重采样,进行下次迭代。初始状态:用大量粒子模拟X(t),粒子在空间内均匀分布;预测阶段:根据状态转移方程,每一个粒子得到一个预测粒子;校正阶段:对预测粒子进行评价,越接近于真实状态的粒子,其权重越大;重采样:根据粒子权重对粒子进行筛选,筛选过程中,既要大量保留权重大的粒子,又要有一小部分权重小的粒子;原创 2024-09-10 21:51:28 · 1262 阅读 · 0 评论 -
C++ 之 perf+火焰图分析与调试
perf是Linux下的一款性能分析工具,能够进行函数级与指令级的热点查找。利用perf剖析程序性能时,需要指定当前测试的性能时间。性能事件是指在处理器或操作系统中发生的,可能影响到程序性能的硬件事件或软件事件perf list主要是用于列出有哪些可用的event,可以供来分析。,其中可以列出 hard ware 的event, sw 是software的event, 其它类似。原创 2024-09-09 22:40:06 · 1554 阅读 · 0 评论 -
Transformer图解以及相关的概念解析
RNN还有一个特定就是能考虑词的顺序(位置)关系,一个句子即使词完全是相同的但是语义可能完全不同,比如”北京到上海的机票”与”上海到北京的机票”,它们的语义就有很大的差别。我们上面的介绍的Self-Attention是不考虑词的顺序的,如果模型参数固定了,上面两个句子的北京都会被编码成相同的向量。为了解决这个问题,我们需要引入位置编码,也就是t时刻的输入,除了Embedding之外(这是与位置无关的),我们还引入一个向量,这个向量是与t有关的,我们把Embedding和位置编码向量加起来作为模型的输入。原创 2024-09-08 21:23:00 · 765 阅读 · 0 评论 -
对深度学习概念的基础理解与认识
人工神经网络(Artificial Neural Networks,简写为ANNs)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。。为了详细地描述神经网络,我们先从最简单的神经网络说起。感知机是1957年,由Rosenblatt提出会,是神经网络和支持向量机的基础。原创 2024-09-06 22:16:42 · 671 阅读 · 0 评论