- 博客(66)
- 收藏
- 关注

原创 UWB技术了解
随着各手机厂商在其旗舰级上支持了UWB模块,和UWB相关的衍生应用也越来越广泛。例如苹果的AirTag无线追踪器,以及小米的“一指连”,手机指向支持UWB技术的电风扇,手机上会弹出一个控制卡片,进而实现对风扇的操控,无需实体遥控器,除此以外,小米“一指连”还实现了智能电视投屏、智能门锁靠近即开等操作。另外UWB在室内定位或者说小空间内的定位应用也很广泛,因为UWB采用的时基于飞行时间(ToF-base)的测距方式+ UWB信号的脉冲极短,因此它的精度很高,一般情况下能达到10cm的精度。
2024-02-20 20:07:23
4338

原创 使用Strace定位Linux下线程泄露
Linux下我们可以通过通过命令行输入free查看系统的整体内存消耗情况,以及通过输入查看进程实际消耗物理内存VmRss的方式了解到进程所消耗的内存。因此我们可以通过输入命令行的方式进行对比查看了解当内存泄露时,具体是哪个进程泄露的。但是想要查看线程所消耗的内存则需要借助外部工具了,这里我们介绍下通过strace工具查看进程内存增长时,具体是哪个线程增长的。
2024-01-30 15:00:03
1723

原创 GUI和AWTK介绍
GUI(图形化界面)目前在我们的生活中无处不在,以至于我们都很少关注到他为我们所带来的巨大改变,GUI出现于1970年一群天才之手,后伴随着PC由面向企业到面向个人的发展,再经乔布斯和比尔盖茨等发掘应用逐渐进入到大众视野。AWTK是我们国产的GUI开源引擎,其代码干净利落,思路清晰,而且各种更新频繁各种特性在不断的进行支持,同时对于开发者的支持做的也很好经常碰到问题后在github上上午提问,下午可能就有答复了。
2023-04-16 21:36:57
4411

原创 《程序员代码之外的生存指南》中“努力工作的价值,以及为什么自己总是逃避努力工作”的思考
今天恰巧在《软技能,代码之外的生存指南》中看到了“努力工作的价值,以及为什么你总是逃避努力工作”这一章,看完之后对我造成了一定的触动,我也想借此机会谈谈自己对于努力工作的看法。
2021-12-21 22:38:08
323
1
原创 火山引擎TTS使用体验
语音合成TTS(text to Speech)是我觉得后续开发产品所不可或缺的一个功能,因为==相比较于过去的GUI 图形+文字展示,动态形象+语音会更利用人与设备之间的交互。
2025-06-19 20:07:03
1127
2
原创 本地部署 - SenseVoice多语言语音理解模型Small
SenseVoice是一个具备多语言识别、情感分析等功能的音频基础模型,这篇文章分享了在Windows 10系统上本地部署SenseVoice语音模型的过程
2025-06-18 11:18:31
1093
原创 聊一聊 - 如何写好README文档
写好README实际上并没有说最标准的答案,最本质上的思路是把自己所负责的组件当作一个产品去看待,把使用组件的人当作用户去看待,通过文档甚至视频等方式,去向他们宣传我们的组件,让他们都能用我们的组件以及觉得这个组件好用
2025-06-13 17:00:35
789
原创 聊一聊 - 如何像开源项目一样,去设计一个组件
我一直觉得好的软件不应该是高深莫测的,而应该是简单易懂的。就像真正理解一个事物的人总能用通俗的语言去帮助别人理解一样,代码的好坏本身也是对自身所作业务的理解的体现。好的代码往往更容易维护,因为开发者在做每一个改动时都在思考这次改动背后的动机以及未来的趋势,并及时的调整软件的各种细节和架构。而杂乱无章的代码则大都是因为各种原因,为了凑合完成当前的工作,长期进行的胡乱拼凑。
2025-06-10 20:40:19
768
原创 MicroROS简述
MicroROS是ROS 2的轻量级版本,专为资源受限的微控制器(MCU)设计。它通过精简ROS 2功能和引入中间代理(Agent),使MCU设备能无缝接入ROS网络。Agent负责协议转换和动态发现,让MCU设备直接使用ROS API进行开发,无需手动解析数据。MicroROS解决了机器人系统中高端处理器与底层MCU的通信断层问题,提高了开发效率和实时性,同时支持边缘计算和ROS生态复用。其出现背景包括ROS 2无法在MCU运行、硬件层与应用层通信效率低下等痛点,为机器人开发提供了更灵活的解决方案。
2025-06-03 20:15:50
739
原创 FreeRTOS - 定时器踩坑记录(注意用不好真的会崩)
在STM32设备上,使用FreeRTOS时遇到设备重启后反复崩溃的问题。经过排查,发现与FreeRTOS定时器的使用不规范有关。具体表现为定时器回调函数执行时间过长,导致定时器消息队列堆积,最终引发系统崩溃。通过分析栈回溯和定时器源码,确认了问题的根源,并提出了增加定时器队列大小和优化回调函数执行时间的解决方案。文章详细介绍了排查过程,并总结了FreeRTOS定时器的使用规范,以避免类似问题的发生。
2025-05-22 17:11:51
904
原创 小智AI机器人 - 语音代码梳理1
本篇主要是梳理和记录与语音相关功能的整体代码框架是怎么样的,有哪些模块它们又分别起到什么作用,先对与语音相关的整体代码结构有个初步的了解,这部分内容也比较多所以会分开来记录。
2025-05-19 20:20:51
1231
原创 小智AI机器人 - 语音相关方案了解2( 3D Speaker + 大模型 TTS )
本篇主要是记录下自己所了解到的小智AI聊天机器人背后的语音技术的后半部分(`声纹识别 3D Speaker + 大模型 TTS - 火山引擎 + 大模型TTS - CosyVoice`)。
2025-05-19 16:28:07
1114
原创 小智AI机器人 - 语音相关方案了解1(ESP-SR + SenseVoice)
本篇主要是记录下自己所了解到的小智AI聊天机器人背后的语音技术的一部分(`ESP-SR+SenseVoice`),这块内容有点多所以估计要拆成几篇去记录了。
2025-05-19 15:30:55
1874
原创 一种简单的将app.hex和boot.hex进行合并的方法
在开发调试过程中,我们一般采用将bootloader的程序如boot.hex和的程序如app.hex进行分别下载的方式,即采用两次下载。但是在产线上为了增加生产效率,一般都会要求研发提供一种只烧录一次即可的办法,这时我们经常采用将boot.hex与app.hex进行合并生成一个后重新烧录的方式。
2025-02-23 20:43:24
385
原创 聊一聊 - FreeRTOS的调度器是如何接管main函数的
我们知道在使用FreeRTOS时,当我们在main函数中调用了之后,FreeRTOS的任务调度器就接管了main()了,且不会运行main中之后的代码了。之前我一直认为FreeRTOS中有类似于while(1)地方,所以调用了();之后就不会再往下继续运行了。然后带着这种想法我去查看了FreeRTOS的代码,可是走进()的实现,并没有找到有任何wihle(1)的地方。于是为了找到答案,我重新梳理了下FreeRTOS的任务调度器是如何接管main。
2025-01-09 20:31:15
869
原创 N32使用定时器TIM1注意事项
在N32G003上进行裸机驱动代码编写时,碰到一个使用TIM1输出PWM一直没有波形的问题。本来想着以自己多年的开发经验,写个裸机的驱动不是轻而易举,没想到还是花费了点时间,这里发出来和大家分享一下。
2025-01-07 20:59:03
1414
原创 一种好用简单的软件定时器写法(支持裸机)
分享一种我近些年经常使用,好用简单的裸机软件定时器写法可以运行在各类单片机的裸机中,这块的设计主要参考开源GUI引擎AWTK的定时器实现。不需要操作系统的接口,也不需要链表,简单好用易懂。
2024-12-24 19:00:59
905
原创 ROS2 - Python工程创建和工程解析
本文主要介绍如何创建、编写、编译、运行ROS2的python工程。开发环境是基于Ubuntu的Linux虚拟机。本文中很多的学习资源来源于ROS2官网colcon是对 ROS 构建工具catkin_make、catkin_make_isolated、catkin_tools和ament_tools的迭代。据我初步了解ROS1使用的是catkin_make、catkin_make_isolated、catkin_tools。
2024-12-18 21:46:18
1521
原创 ROS2 - 创建自定义消息和srv文件【上】
限于篇幅本文是介绍如何创建自定义msg和srv的上半部分。上半部分:详细讲解创建过程中的每一步是如何实施的以及为什么要这样做。下半部分:详细介绍编译以及验证过程。
2024-12-18 17:37:55
1700
原创 ROS2 学习笔记系列文章索引
随着AI的发展以及ChatGPT的出现,大家逐渐看到了解决机器人最棘手的机器人大脑问题的可能性,同时随着像中国等比较发达的国家逐渐进入人口老龄化,未来年轻劳动力势必会缺失。在这一系列因素之下,发展机器人,提前布局和进入机器人相关方面的研究再次被整个国家,公司以及资本市场所看好。作为一名开发者,我一直希望自己能够做出或者说参与做出能够改变和造福整个社会的产品,从而为这个社会留下一些有用的东西,来体现自己的价值。在我看来机器人是一个很有价值的产品,所以希望能在空闲之余去对其做一些了解。
2024-12-08 22:21:57
483
原创 ROS2 - C++工程创建和工程解析
本文主要介绍如何创建、编写、编译、运行ROS2的C++工程。开发环境是基于Ubuntu的Linux虚拟机。
2024-12-08 22:19:25
1328
原创 FreeRTOS的辅助调试手段
在使用FreeRTOS开发的过程中,经常碰到因内存不足以及线程栈溢出而产生的崩溃问题。起初对FreeRTOS不熟悉,碰到这种崩溃问题就是通过map文件反向查看是不是崩在了FreeRTOS的线程或者定时器调度中,如果是这几个里面那么大概率是线程或者定时器的资源不足,导致的崩溃,然后尝试增加资源再次进行尝试。等空下来去查看FreeRTOS有哪些调试手段,发现人家本身提供的就有“线程栈溢出钩子函数”以及“内存分配失败的钩子函数”,只是自己没有用起来。下面简单介绍下这两种调试手段怎么使用。
2024-11-26 20:00:41
853
原创 内存碎片是如何产生的?
近期听到大家在讨论不要在FreeRTOS中使用JSON ,因为在做JSON解析的过程中会产生,很多小的内存碎片。导致最后内存申请不出来,间接的产生内存泄漏。为什么使用JSON会产生内存碎片?内存是怎么分配的?内存碎片到底是怎么产生的?是只有FreeRTOS中才会有内存碎片吗?Linux操作系统使用内存时有没有内存碎片?决定是否存在内存碎片的到底是什么?于是在网上找了一些资料围绕着上述问题进行了一些记录。这里和大家分享一下。
2024-11-20 18:56:14
941
原创 DC-DC充放电原理
最近用了一款充放电芯片SC8815,可以通过配置该芯片的寄存器结合外围电路,自动对充放电进行管理。虽然芯片用起来了,但是充放电到底是如何实现的还是不太清楚,于是去了解了一些DC-DC充放电相关的知识。这里进行下记录另外为什么说充放电会去讨论升压和降压相关的原理呢?这是因为,首先充电肯定是电压高的一方向电压低的一方去充,然后现如今不同快充之间的区别经常是充电电压的不同,例如常见的66w和120w快充,一般是11V / 6A 和 20V / 6A。
2024-07-07 15:24:05
1771
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人