
通用
文章平均质量分 84
敢敢のwings
欢迎来到「敢敢のwings」!本人是一位前自动驾驶的具身智能行业从业人员,著有《从ROS1到ROS2无人机编程实战指南》一书。作为阿里云专家博主、华为云享专家、古月居优秀创作者及签约作者、优快云博客专家,握有多篇发明专利授权和SCI、EI论文。之前主要侧重机器人运动学、定位感知算法、深度学习研究,目前主要关注端到端、具身智能等方面,平时涉猎较广。正在努力成长并胜任架构师的角色!有商务合作或咨询需求可站内私信,或关注我团队的微信公众号【敢敢AUTOHUB】以及微信【mpl9725440】。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
“bash -e“ 的使用与shell脚本常见使用技巧
在当今的软件开发与系统运维领域,自动化是提升效率和保证一致性的关键。而 Shell 脚本,作为连接和驱动各种命令行工具的“胶水”,无疑是自动化工作流中不可或缺的一环。无论是简单的任务批处理,还是构建复杂的持续集成/持续部署(CI/CD)流水线,Shell 脚本都扮演着至关重要的角色。然而,编写健壮、可靠的 Shell 脚本并非易事。许多开发者,尤其是初学者,常常会陷入一个常见的陷阱:脚本在遇到错误时并不会如预期般停止,而是“默默地”继续执行下去,最终可能导致数据损坏、服务异常甚至系统崩溃等灾难性后果。原创 2025-07-16 09:44:27 · 3034 阅读 · 0 评论 -
谈谈电机控制器(MCU):从结构原理到拆解分析
摘要:电机控制器是电动汽车动力系统的核心控制单元,负责将直流电转换为交流电并精确控制电机转速和转矩。其硬件结构包括功率模块、控制电路、散热器等组件,通过空间矢量脉宽调制(SVPWM)等算法实现闭环控制。拆解分析显示,控制器采用高度集成化设计,如功率模块与散热器封装一体,铜排采用注塑模具固定,并配备EMC屏蔽结构。控制板采用周边包地和压接连接方式,增强了电磁兼容性和装配便利性,但也带来维修难度。整体设计体现了高集成度与功能优化的平衡。转载 2025-06-15 13:56:08 · 3837 阅读 · 0 评论 -
传感器大小端详解
大小端(Endianness)是指计算机存储多字节数据时的字节顺序。计算机内存以字节为单位进行划分,每个地址对应一个字节。对于超过一个字节的数据类型(如int、float等),就需要决定这些字节在内存中的排列顺序。大端(Big Endian):高位字节存放在低地址,低位字节存放在高地址。小端(Little Endian):低位字节存放在低地址,高位字节存放在高地址。以32位整数0x12345678为例,在内存中的存储方式如下图所示:大端模式:内存从低到高依次存储小端模式:内存从低到高依次存储。原创 2025-05-08 11:15:14 · 6203 阅读 · 0 评论 -
花生壳内网穿透 Putty 远程连接Ubuntu Server 24 服务器研发笔记
然而,有些软件包或脚本可能仍然依赖于 net-tools,所以需要使用 sudo apt install net-tools 安装,安装完成后再次运行 dpkg -i phddns_5.3.0_amd64.deb 确保花生壳安装成功。phddns start(启动)| status(状态)| stop(停止)|restart(重启)| reset(重置)|enable(开机自启动)|disable(关闭开机自启动)|version(版本),可以采用离线安装,羊大侠直接复制命令行,采用在线安装方式。转载 2025-05-01 11:42:57 · 545 阅读 · 0 评论 -
radare2 入门与反汇编
如果现有的 Linux 原生工具也能做类似的事情,你自然会问为什么需要另一个工具。嗯,这和你用手机做闹钟、做笔记、做相机、听音乐、上网、偶尔打电话和接电话的原因是一样的。以前,使用单独的设备和工具处理这些功能 —— 比如拍照的实体相机,记笔记的小记事本,起床的床头闹钟等等。对用户来说,有一个设备来做多件(但相关的)事情是_方便的_。另外,杀手锏就是独立功能之间的_互操作性_。同样,即使许多 Linux 工具都有特定的用途,但在一个工具中捆绑类似(和更好)的功能是非常有用的。这就是为什么我认为。原创 2025-04-23 13:57:00 · 6285 阅读 · 0 评论 -
在Ubuntu 20.04上安装CUDA v11.7和cuDNN 9.2的一键安装脚本
在深度学习和高性能计算领域,CUDA和cuDNN是不可或缺的工具。本文将详细介绍如何在Ubuntu 20.04上安装CUDA v11.7和cuDNN 9.2。这篇指南不仅详细,而且经过多次实践验证,确保可行性和可靠性。原创 2025-01-22 10:00:32 · 10694 阅读 · 0 评论 -
使用Clion/Pycharm优雅地全程同步和远程调试
机械是血肉,电控是大脑,视觉是灵魂。如果你可以在一个系统上用clion写程序,并使用另一个系统的内核来编译完成代码运行,是不是一件非常省事而且高效地事情呢?这在另一个系统没有图形化界面的时候尤其有用。Clion可以帮助你完成这一点。我们可以在主机上写代码,并把虚拟机作为服务器完成代码的编写和调试,并且代码的同步是完全自动完成的。转载 2025-01-15 18:00:41 · 7738 阅读 · 0 评论 -
如何使用反汇编等高级用法来完成coredump查询
coredump是一个使用c++编程工作者最常用的方法,但是如果在GCC -O3优化级别下,很多局部变量是会被优化掉的,此时只能通过人工分析反汇编代码来获取所需信息,而这么做的前提是保存下来的寄存器中的值是准确的。绝大部分情况下 coredump 是由于或assert触发的,情况下 Kernel 保存下来的registers信息是准确的,GDB 中直接用就可以看到。然而若是由 assert 触发,由于 assert 会进行多层函数调用后最终执行raise()原创 2024-12-13 16:16:38 · 17571 阅读 · 0 评论 -
常见Lidar&IMU性能汇总
之前我们在一文中大致梳理了主要传感器的类型,而这部分对应具体传感器效果怎么样,以及这些传感器的指标是什么样的。原创 2024-12-11 22:26:50 · 18203 阅读 · 1 评论 -
Sphinx使用与项目文档生成
之前我们介绍了,其实现在更简单更高效的是使用Sphinx,这是一个基于Python的文档生成工具,它可以将标记文本转换为各种格式的文档,包括HTML、PDF、EPUB等。Sphinx最初是为Python文档而开发的,但是它也可以用于其他类型的文档,例如API文档、技术文档、用户手册等。原创 2024-11-22 10:23:27 · 13383 阅读 · 0 评论 -
IMU器件参数解析与选择指南
指的是零飘稳定度. 比如说在某个温度的范围内,使用了一段时间,还能一直保持不变的零飘. 比如0.07deg/s:每秒有0.07deg的误差,1小时的误差=0.07deg*3600=252deg/hr. 零飘可以在应用种校准,比如零飘1度.那么在应用时是减去1度校准到0度.但是用了段时间后,零飘又出现了. repeatability衡量这个稳定性。它的单位是LSB/°/sec或LSB/(°/sec),LSB是指传感器输出数字量的最低有效位(Least Significant Bit).转载 2024-11-19 14:33:54 · 3354 阅读 · 0 评论 -
如何使用Tracy完成在线的性能分析
是一款实时、纳秒级分辨率的混合帧和采样剖析器,可用于远程或嵌入式遥测游戏和其他应用程序。它可以对 CPU(C、C++11、Lua)、GPU(OpenGL、Vulkan、Direct3D 11/12、OpenCL)和内存进行剖析。它还能监控线程所持有的锁,并显示竞争发生的位置。Tracy 可以像其他统计分析工具(如 VTune、perf 或 Very Sleepy)一样,对取样的调用堆栈数据进行统计分析,但它主要侧重于对源代码进行手动标记,以便逐帧检查程序的执行情况。原创 2024-11-10 12:25:16 · 11618 阅读 · 0 评论 -
动态链接使用大全
是一个强大的环境变量,用于在程序启动时强制加载指定的共享库,优先级高于任何其他库路径。这意味着即使程序不直接依赖这些库,指定的共享库也会优先加载,并可以覆盖或替换程序中已有的函数实现。非常适合临时改变库的查找路径,但不建议在生产环境中长期使用,因为它可能影响系统中其他程序的运行。可以输出程序加载时的详细信息,帮助开发者分析和调试共享库的加载过程。:用于调试程序的加载过程,查看库的加载顺序、符号解析、绑定等信息。:开发、测试期间用来加载特定版本的库,而不是系统默认的库。中列出的路径顺序查找对应的可执行文件。原创 2024-11-10 12:24:49 · 11229 阅读 · 0 评论 -
兼容14.04--22.04的Ubuntu一键安装脚本
setup.bash脚本旨在自动化安装和配置各种软件包。您可以通过运行脚本并按照提示进行选择,来轻松地设置开发环境、办公工具、媒体工具等。脚本支持不同的 Ubuntu 版本,并包含多个功能模块,用户可以根据需要选择安装。原创 2024-11-10 12:23:17 · 11643 阅读 · 0 评论 -
这几款 VSCode 流程图工具,太惊艳了!!!
它非常流行,适用于创建各种类型的图表和图示,例如流程图、网络拓扑图、UML 图、组织结构图、ER 图(实体关系图)等。VSCode 拥有一个庞大的扩展市场,用户可以根据自己的需要安装各种扩展来增强编辑器的功能,包括语言支持、代码格式化工具、版本控制集成、主题和图标等。tldraw 是一款开源免费的无限画布白板,可以在线的实时协作,用户可以轻松地在线创建简洁明了的图形和图示,使得思维的表达变得更加直观和高效。Draw.io 的界面简单直观,功能强大,适合个人用户、开发者、设计师、项目经理等使用。转载 2024-11-05 10:38:13 · 5005 阅读 · 0 评论 -
C++开发中能省去很多事情的第三方开源项目
Ceres Solver 是一个用于非线性最优化问题的C++库,特别擅长处理大规模的优化问题。它支持多种类型的最小化问题,特别是那些涉及到大量参数的问题。原创 2024-10-28 13:45:00 · 8994 阅读 · 0 评论 -
stack smashing detect以及解决之道
相较于其他报错,stack smashing detect这个报错是最令人头疼的段错误种类。“Stack smashing detect” 是指在程序运行过程中检测到栈溢出的情况。栈溢出是一种常见的安全漏洞,发生在程序尝试往栈空间写入超过其边界范围的数据时。原创 2024-09-07 12:34:03 · 9124 阅读 · 0 评论 -
静态检查工具
静态检查是软件开发过程中的一个重要环节,它在代码执行之前分析源代码或编译后的代码,以识别潜在的错误、代码规范违规、安全漏洞等问题。静态检查的好处包括提高代码质量、减少bug、增强安全性、提升开发效率等。它能够帮助开发者在早期发现问题,减少后期调试的工作量,以及降低维护成本。我们很多常见的编译器无法识别的问题都可以通过静态检查识别可能存在的问题。通过静态分析可以发现的错误类型包括:• 未定义的行为• 使用危险的代码模式• 编码风格静态分析应作为质量保证的补充。它不能取代任何;• 精心设计。原创 2024-09-04 17:17:19 · 9012 阅读 · 0 评论 -
空间坐标(系)如何进行变换?
要描述某一物体在现实场景的位置,通常以三维空间坐标系下的坐标进行说明,当物体位置或自身进行变化时,可以用放射变换说明物体的变化情况。根据现实情况,坐标系和物体可以相互描述,即二维平面坐标(系)变换的情况包括一个二维平面坐标系描述一个物体(坐标)变换情况和一个物体(坐标)在两个二维平面坐标系间的变换情况。根据现实情况,坐标系和物体可以相互描述,即三维空间坐标(系)变换的情况包括一个三维空间坐标系描述一个物体(坐标)变换情况和一个物体(坐标)在两个三维空间坐标系间的变换情况。[3] 你不来我不老.转载 2024-09-04 10:45:26 · 2342 阅读 · 0 评论 -
CMakeList整理大全
之前我们也整理过。但是这里面整理的内容其实是不全的。所以我们需要进一步将CMake的使用整理好。以供后面的学习的工程师来检索查询。原创 2024-04-29 14:41:26 · 19334 阅读 · 0 评论 -
protobuf + VS Code 开发
回看之前的文章,一年多的开发以来,我意识到并非一定要靠某些可视化的行为来完成编译工作。其实proto文件的编译完全可以在命令行完成。因此这个插件更多是进行语法的检查,很遗憾,它做不到。这部分代码在安装插件以后,也不会报错。然而 CLion 下由 Jetbrains 官方开发的 proto 插件却能报出这一错误。不过考虑到我所在的公司也没有像样的工具编写 proto 文件,都是记事本一开了事。其实我也觉得这玩意的语法检查真的无关紧要,VS Code的插件能对关键词着色就已经胜过记事本了。转载 2024-04-24 14:24:20 · 4019 阅读 · 0 评论 -
图形化编程要怎么做
Scratch其实应该算得上最早做图形化编程的工程了。Scratch 是麻省理工学院的“终身幼儿园团队”在 2007 年 [5]发布的一种图形化编程工具,主要面对全球青少年开放,是图形化编程工具当中最广为人知的一种,所有人都可以在软件中创作自己的程序。而我们就在想是否能做一些工作,让一些复杂的指令集能够通过拖动变成可以被识别的功能呢。我其实在上大学时候就想做类似这样的一个东西。只是一直没有时间,这里作者首先发现了。原创 2024-04-16 12:59:46 · 17091 阅读 · 0 评论 -
机器人&自动驾驶时间同步进阶
之前时间同步也写过一篇文章介绍。在最近的学习中发现一些额外需要阐述学习的内容,这里就再次写一些之前没写到的内容。原创 2024-03-25 09:57:01 · 12959 阅读 · 0 评论 -
常用传感器指标以及性能
对于传感器选型,很多新手乃至工程师也不太清楚,不同价位以及不同设备之间的区别。这里作者想根据自己的一些经验,以及网上的一些资料,给各位读者提供一些建议,以及这些设备要怎么去使用。原创 2024-03-25 09:55:12 · 13587 阅读 · 0 评论 -
IMU/捷联惯导常见的术语,以及性能评价标准(附Python解析代码)
现在的机器人领域在普遍使用IMU(惯性导航单元)。该系统有三个加速度传感器与三个角速度传感器(陀螺)组成,加速度计用来感受飞机相对于地垂线的加速度分量,陀螺仪用来感知飞机的角速率变化;通过算法融合来计算出飞行器姿态,也用来进行航位推算。而每次我们拿到一个惯性导航的时候会发现参数手册中有很多信息,而这些信息的好坏要怎么评判是比较关键的。下面我们来一一讲解。原创 2024-01-31 10:43:25 · 7358 阅读 · 0 评论 -
C++ CPU程序占用率高问题排查
我们在之前介绍了使用Valgrind、perf、AddressSanitzer等工具来完成内存泄漏的检测,当然内存泄漏以外还有cpu的占用率变高这类问题。作者在这里提供几个方法来对C++程序中CPU程序占用率高问题排查。原创 2023-12-29 13:14:36 · 8999 阅读 · 0 评论 -
代码图形注释自动生成(通过文字图像)
大家在学(CTRL)习(C)别人代码的时候,看到别人的代码程序,在日志中有很多很酷的代码注释,或者是有一些图形化注释方便理解。之前本人以为都是一个个手敲出来的。然后在网上一番搜索,找到了很多神奇的好网站,以用于图形注释生成。代码图形注释自动生成技术是一种将代码逻辑和结构可视化的创新工具。它通过解析编程代码,并将代码的功能、结构和逻辑关系转换成直观的图形注释,从而使得程序员能够更加轻松地理解和分析代码。这种技术特别适合于复杂代码的解读,帮助开发人员快速定位代码中的关键部分和潜在问题。原创 2023-12-22 16:47:11 · 9673 阅读 · 0 评论 -
Benchmark tool library for c++ code
Benchmark原则Benchmark类型一些常用的benchmark测试工具内存、文件系统benchmark工具一些个人想法这里主要介绍了benchmark的原则(做基准测试要遵循的规则)、benchmark的类型(主要存在哪些类型的benchmark,当我们要进行benchmark测试时,首先要知道我们测试的主体是什么,在上述的类型中应该有它的归属)、一些常用的benchmark工具(针对那些通用的测试主体,已经前人开发的各个工具);转载 2023-12-20 10:15:18 · 7573 阅读 · 0 评论 -
内存泄露检测工具-AddressSanitzer
2012 年,Google 发布了一篇论文:《介绍了一种新的内存检测方法,让上面的问题得到了很大的改进。截止到目前,AddressSanitizer 已经被广泛应用到了各种语言: C、C++、Objective-C、Java 等。以 Google 自己的 benchmark 为参考,开启 ASan 后,会使程序运行速度平均下降 2 倍左右,内存占用会增加 3 倍左右(和硬件有关)。这和其他工具动辄十几倍的消耗要好上不少。(如果要跑比较大的包,还是建议用AddressSanitzer的)。原创 2023-12-18 09:54:50 · 7671 阅读 · 0 评论 -
Makefile文件模板与使用
开发过程,特殊代码一般增加宏条件来选择是否编译,如调试打印输出代码。-D是标识,后面接着的是“宏”。转载 2023-11-15 15:28:59 · 3999 阅读 · 0 评论 -
非常好用的C++线程池和内存池
对于使用C++的开发者来说,这两种用法应该是比较高级也是比较常用的。而对于内存池来说,主要作用又有以下几点:4. 减少内存碎片:内存池通过预先申请一大块内存,并对其进行管理和分配,有效地减少了因反复申请和释放小块内存导致的内存碎片问题(时间过长会出现coredump)。5. 提高内存利用率:通过对内存的管理,可以重复利用已经释放的内存块,避免了频繁地向系统申请和释放内存,从而提高内存利用率。原创 2023-11-15 13:29:57 · 8923 阅读 · 0 评论 -
C++ 之Google benchmark测试与分析
作为一个程序而言,benchmark是非常关键的一个衡量指标,无论是程序算法的指标还是程序运行性能的指标,这些我们都可以去完成衡量。对于性能衡量而言google benchmark无疑是一个比较好的选择。原创 2023-11-03 15:18:40 · 11930 阅读 · 0 评论 -
Linux C++性能优化:从编译器到代码,探究高性能C++程序的实现之道
GCC(GNU Compiler Collection)是一个开源的编译器集合,支持多种编程语言,其中包括C++。GCC具有优秀的性能、丰富的优化选项和广泛的平台支持,成为Linux环境下最常用的C++编译器之一。Clang是一个基于LLVM(Low Level Virtual Machine)的C/C++/Objective-C编译器。相比于GCC,Clang具有更快的编译速度、更低的内存占用、更易于扩展的特点。因此,Clang也成为Linux环境下的一个热门选择。转载 2023-09-07 10:15:34 · 2810 阅读 · 0 评论 -
设计时序图——以APA自动泊车系统为例
序列图是一种 UML(统一建模语言)图,它说明了系统中对象之间随时间的交互,通常用于可视化消息流和软件系统中对象之间方法调用的顺序。时序图展示对象之间交互的顺序,将交互行为建模为消息传递,通过描述消息是如何在对象间发送和接收的来动态展示对象之间的交互;相对于其他UML图,时序图更强调交互的时间顺序;可以直观的描述并发进程。转载 2023-09-01 10:12:34 · 3200 阅读 · 0 评论 -
代码检视工具Gerrit的日常使用
当然,如果必要,你也可以基于一个正在code review的Change开发新的feature,这样会产生依赖,可以在Gerrit中该Change的页面看到“Related Changes”。草稿箱中的Change也可以很方便的转换为正式的Change,而无需重新用“refs/for/”来提交,点击Publish按钮转换为正式Change,也可以在此删除此草稿。Gerrit提供了直接在Web页面修改我们的patch代码的功能,这对于我们做一些小的问题修改(比如格式化问题,命名不对,多余的空格等)非常方便。转载 2023-08-17 13:07:01 · 3694 阅读 · 0 评论 -
Linux中.a、.so和.o文件以及-I,-L,LIBRARY_PATH,LD_LIBRARY_PATH等
(3) 修改/etc/ld.so.conf文件,把库所在的路径加到文件末尾(直接写在文件末尾,不要在路径前加include),并执行ldconfig刷新(ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.)。转载 2023-08-16 17:14:24 · 3871 阅读 · 0 评论 -
Sublime Merge 日常使用
之前一直在终端里面使用git,自己开发提交的时候,还勉强够用。在多人协作开发的时候,想看各种版本的更改情况还是有个图形化的界面比较简单直接。编辑器一直在用sublime text,所以找来sublime merge作为图形化的git工具。切换到某一分支,右键被合并分支,右键,merge xxx into xxx ,图中feat就被合并消失了。随着日常开发,关于Sublime Merge的使用会在这篇文章中持续更新。push操作点击界面右上方的箭头即可,相当于执行。按钮后,可以看到左侧的图形化界面,转载 2023-08-02 10:50:50 · 6501 阅读 · 1 评论 -
C++一键安装工具(vcpkg)
相较于python而言,C++因为其复杂的环境安装一直受到很多人的诟病,比如说一个pcl的安装就需要有很多操作步骤。译过程仍然复杂和多样化。当了解了这些还不够,我们还需要考虑预先编译出哪种类型的开源库程序。比如:Debug还是Release、动态库还是静态库、MD还是MT、32位还是64位。常见的编译方式就有下面四种:为了解决这样的问题,微软C++ 团队开发了适用于C 和C++ 库的跨平台开源软件包管理器,它大大简化了Windows、Linux 和macOS 上第三方库相关的下载和配置操作。原创 2023-06-28 14:28:24 · 13714 阅读 · 0 评论 -
关于自动驾驶开发和CI/CD流程
近年来随着 DevOps 的兴起,导致了对 CI/CD 工具的强烈需求。目前行业内比较主要流行的 CI/CD 工具是 Jenkins 和 GitLab CI/CD。此外 GitHub 也在 2018年10月推出了 GitHub Actions 来支持 CI/CD。这三者都能实现应用从源码到上线的自动化,但还是各有侧重。GitLab 是由 GitLab Inc 开发,一款基于 Git 的完全集成的软件开发平台。它的社区版是免费的,提供了 Git 仓库管理,issue 跟踪,代码评审和 CI/CD 等功能。转载 2023-06-19 15:00:41 · 7298 阅读 · 0 评论 -
避免使用第三方工具完成电脑环境检测
在之前配置各种深度学习环境的时候经常需要先检测一下电脑的软硬件环境,其实整个过程比较重复和固定,所以我们是否有可能一键检测Python版本、PIP版本、Conda版本、CUDA版本、电脑系统、CPU核数、CPU频率、内存、硬盘等内容这是很多Deepper苦恼的。这里会从软件开始介绍,并最终提供一套Python脚本工具来完成检测。原创 2023-05-05 11:04:40 · 11959 阅读 · 0 评论