
【1】数据结构与算法、编程规范与设计模式
文章平均质量分 82
本专栏会持续更新,结合本人在机器人、自动驾驶行业的研发经验,从常用的操作系统、通信方式、计算机语法、数据结构与算法、系统调试经验、代码设计及优化方式等角度出发,探讨嵌入式系统硬软件开发的系统原理和项目实践。
RoboticsTechLab
一枚爱琢磨、愿意深耕的研发攻城狮,现从事于机器人、自动驾驶行业,不定期分享机器人、自动驾驶及工作经验相关内容,感谢关注!
展开
-
开发经验及方法导读
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对开发经验及方法导读做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2024-04-27 20:30:21 · 517 阅读 · 0 评论 -
【工程开发】数据结构与语法规范
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对数据结构与语法规范做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2023-07-08 14:45:21 · 600 阅读 · 0 评论 -
【多线程开发】(1)多进程、多线程编程应用层开发理论
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对Linux应用层开发–多线程进程编程做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容1、开源性:Linux系统及其工具都是开源的,因此,Linux环境编程可以使用大量的免费工具和库。2、多用户支持:Linux系统是支持多用户和多任务的,这意味着Linux环境编程可以同时处理多个任务和用户。3、灵活的文件系统:Linux文件系统是非常灵活和可扩展的,这使得Linux环境编程更方便。原创 2023-07-02 12:09:34 · 300 阅读 · 0 评论 -
【操作系统】操作系统内核原理
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对操作系统内核做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容线程是进程当中的一条执行流程。同一个进程内多个线程之间可以共享代码段、数据段、打开的文件等资源,但每个线程各自都有一套独立的寄存器和栈,这样可以确保线程的控制流是相对独立的线程是调度的基本单位,而进程则是资源拥有的基本单位。原创 2023-09-14 20:27:46 · 504 阅读 · 0 评论 -
【编译器】使用gcc编译器和clang编译器的区别
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对使用gcc编译器和clang编译器的区别做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2023-10-10 17:42:01 · 1417 阅读 · 0 评论 -
【网络通讯】TCP/IP、TCP、UDP的区别
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对网络通讯TCP/IP、TCP、UDP的区别做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容一般来说,如果数据传输的可靠性要求很高,建议使用TCP协议;如果对传输速度要求较高,可以使用UDP协议。参考链接。原创 2023-10-10 15:29:40 · 529 阅读 · 0 评论 -
【定义通讯数据类型】LCM搭建系统通讯
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言前言认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对**当没有使用ROS系统,自己也可以用LCM搭建系统通讯(如话题通讯,定义通讯数据类型)**做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容自定义的LCM消息类型,主要的变量的消息类型,使用.lcm文件格式,结合了LCM轻量级通讯库LCM通原创 2024-06-15 17:15:28 · 2797 阅读 · 0 评论 -
【进程的话题通讯】DDS数据分发服务中间件
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对系统平台同一网络下不同设备及进程数据通讯–DDS数据分发服务中间件做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容在分布式系统中,中间件是位于操作系统和用户应用程序之间的软件层,它将操作系统提供的资源进行抽象和封装,为应用程序提供各种各样的高级的服务和功能,比如通信或数据共享。原创 2023-10-26 16:55:59 · 1167 阅读 · 0 评论 -
【通讯传输】protobuf编码解码与通讯传输原理(附C++代码)
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对protobuf编码解码与通讯传输原理做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容Google Protocol Buffer( 简称 Protobuf)Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以理解为一个结构体格式,专门对应着.proto文件进行存储,可以用于结构化数据序列化(序列化即编码)。原创 2023-10-27 16:59:59 · 585 阅读 · 0 评论 -
【模块间通讯架构】导航系统中各个层次和模块间的数据隔离、共享与传递方法
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、方法一二、方法二三、方法三四、方法四总结前言认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对导航系统中各个层次和模块间的数据隔离与传递方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容一、方法一每个模块和层次(mission->section)分别用一个类(工厂设计)来写,在类内原创 2021-11-16 23:45:57 · 697 阅读 · 0 评论 -
【开发环境】搭建linux工程开发环境
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、普通电脑选型二、组装电脑步骤三、导航算力平台经验介绍前言认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对选型电脑硬件,组装电脑做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容一、普通电脑选型具体看知乎攻略,CPU天梯图、GPU天梯图,更新的特别快,关注一下价格和尺寸啥的一般就是选择几大原创 2021-11-14 10:39:38 · 807 阅读 · 0 评论 -
【看日志工具】notepad编辑器的使用
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对notepad编辑器的使用做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容notepad编辑器的使用–看日志软件工具,看代码工具下载链接网上提供的网盘很多,官网下载是收费的,用破解版。原创 2023-09-27 15:37:01 · 508 阅读 · 0 评论 -
【code review】解读ROS功能包模块的步骤
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言解读ROS功能包模块的步骤前言认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对解读ROS功能包模块的步骤做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容解读ROS功能包模块的步骤每一个文件夹就是一个功能包,实现一个子功能的,我们以其中一个功能包分析cmakelist是负责编译选项和路径设原创 2024-06-15 17:15:41 · 1657 阅读 · 0 评论 -
【架构模式设计】设计模式
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对**架构模式设计层(设计模式)**做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容工厂模式类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,使用了C++多态的特性,将存在继承关系的类,通过一个工厂类创建对应的子类(派生类)对象。在项目复杂的情况下,可以便于子类对象的创建【防盗标记–盒子君hzj】原创 2023-07-08 14:47:44 · 752 阅读 · 1 评论 -
【设计模式】如何提高代码的运行效率、可读性、可维护性、健壮性?
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对代码设计模式–写的各种代码进行高层次抽象的总结做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容需精通所有的设计模式,只要能够融汇贯通常见的设计模式,就能让你的代码变得优雅。就像程咬金只会三板斧,但是熟练度无人能及,照样能横行天下。每一类的设计模式学精一种即可,每一种都精通时不可能的。这七种最为常用,要求掌握1、创建型模式:抽象工厂模式、单例模式。原创 2023-08-29 21:15:13 · 413 阅读 · 0 评论 -
【代码设计】程序设计Kiss原则
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对优秀程序设计Kiss原则做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。–善于把业务功能、算法功能抽象成函数、对象、结构体(同一个功能的相关变量)原创 2023-07-20 21:15:55 · 205 阅读 · 0 评论 -
【C/C++工具】C++代码检查工具
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对CPP代码检查工具做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2023-09-26 21:08:57 · 706 阅读 · 0 评论 -
【C++工具】cppcheck代码检查工具
1、定义的对象或者变量没有进行赋值初始化,导致第一次使用的时候会给一个随机值。【在构造函数中进行初始化就好】原创 2023-07-02 13:42:28 · 271 阅读 · 0 评论 -
【工程优化】Linux系统性能、代码负载分析、代码性能优化
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对Linux系统性能分析做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容1、注意:火焰图上面的顺序并不是函数执行的顺序,是统计之后重新编排的顺序2、perf的运行原理简单概括就是给定一个采样频率,根据采样频率每隔一段时间对CPU进行一次中断并根据记录的程序符号表得到当前运行的函数。最后如果某个函数被抽样的次数越多,代表这个函数运行时间越长3、y 轴表示调用栈,每一层都是一个函数。原创 2024-02-06 09:13:46 · 466 阅读 · 0 评论 -
【工程优化】代码重构
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对代码重构做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容对系统和软件内部结构的一种调整,提高其可理解性,降低其修改成本。原创 2023-07-08 14:48:57 · 364 阅读 · 0 评论 -
【开发工程篇】源代码封装成库Lib的方法
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!推荐开发经验及方法博客专栏:本文先对源代码封装成库Lib的方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2024-12-05 08:40:09 · 155 阅读 · 0 评论 -
【工程库依赖】三方库的调用方法
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对三方库的调用方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2024-05-11 22:53:12 · 1003 阅读 · 0 评论 -
【工程系统调试】常见的系统崩溃原因总结和解决方法
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对常见的系统崩溃原因总结和解决方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容大多数原因是语法导致的、也有系统平台硬件导致的。崩溃的原因:本质都是因为指针的地址出错导致的。原创 2023-08-10 20:40:49 · 707 阅读 · 0 评论 -
【工程调试】日志系统的搭建及gdb代码debug方法
日志系统的搭建及代码debug方法原创 2022-10-17 15:06:40 · 1094 阅读 · 0 评论 -
【工程调试】gdb操作系统开发的调试器
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对gdb操作系统开发的调试器做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2023-10-10 15:08:01 · 485 阅读 · 0 评论 -
【工程调试】局部计时、全局计时、各个模块与系统时间同步的方法
系统计时的方法原创 2022-10-28 18:41:32 · 529 阅读 · 0 评论 -
【工程调试】joy遥控手柄通用Linux操纵杆的ROS驱动程序安装
joy遥控手柄通用Linux操纵杆的ROS驱动程序安装原创 2022-10-18 20:51:30 · 1517 阅读 · 0 评论 -
【工程调试】通过键盘发送控制指令(附C++代码)
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对键盘控制应用做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2023-10-09 20:10:47 · 893 阅读 · 0 评论 -
【开发工具】ubuntu的终端窗口分割工具terminator
安装Terminator。原创 2023-07-02 13:31:02 · 1613 阅读 · 0 评论 -
【开发环境】小米的ac2100的刷机教程
路由器刷机教程梯子。原创 2023-07-02 13:36:17 · 1639 阅读 · 0 评论 -
【开发环境】VMware虚拟机快照与克隆,保存系统运行环境
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对VMware虚拟机快照与克隆,保存系统运行环境做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2023-08-30 15:14:17 · 809 阅读 · 0 评论 -
【应用程序的环境配置】docker的介绍及使用
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对docker的介绍及使用–解决应用程序的环境配置问题做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容Docker是一个开源的应用容器引擎,用于快速部署和管理应用程序。Docker的简介中,我们可以了解到它是基于容器技术的一种实现,这种技术可以将操作系统和应用程序隔离在一个个的容器中,这样既提高了效率又增强了灵活性。原创 2024-05-06 19:52:13 · 605 阅读 · 0 评论 -
【版本管理】源代码封装成库Lib的方法
封装源代码成库lib原创 2022-10-14 19:27:33 · 3630 阅读 · 0 评论 -
【代码版本管理】SVN(Subversion)
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对SVN(Subversion)代码版本管理做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2024-04-09 19:40:31 · 238 阅读 · 0 评论 -
(0)主动学习途径及复现工程能力心得
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、学习的方法二、学习途径介绍(预研)三、寻找并阅读论文、开源代码demo的方法1.下载论文和GitHub demo的方法(1)下载论文的方法(2)下载github代码方法2.阅读论文的方法(我自己)3.看懂一个开源代码的方法(我自己)四、精通一个领域的方法前言认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对**主动学习途径+复现工程能力(原创 2021-11-06 22:00:15 · 269 阅读 · 0 评论 -
第一篇:C/C++语法与std数据结构
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理文章目录系列文章目录前言一、C++在C基础上的改进1.C语言和C++语言的关系2.C++的开发工具3.面向对象的思想4.面向过程和面向对象的两种思维比喻5.面向对象思想的的特点6.C/C++的特点(1)C++特点:(2)使用面向对象的编程技术开发程序的基本步骤:(3)面向对象的优点(4)高级的面向对象编程方法(5)解决程序的阻塞性二、C++的数据结构【重要】1.布尔型bool2.整型int(int_16、原创 2021-11-07 11:17:13 · 1137 阅读 · 1 评论 -
【C/C++相关】C++开发知识树
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对C++开发知识树的阶段做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2023-08-21 21:10:31 · 240 阅读 · 0 评论 -
【C/C++语法】数据拷贝赋值方法
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对关于数据拷贝赋值方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容常用的数据结构变量拷贝,要么用开源stl的operator进行操作,自己写的数据结构千万不要直接拷贝要自己具体定义opertor,不然会出现拷贝出错。原创 2023-08-10 20:52:48 · 350 阅读 · 0 评论 -
【C++ RAII机制】将资源用类进行封装起来,做到资源创建即完成初始化,使用完资源即自动销毁(附C++代码)
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对C++ RAII机制将资源用类进行封装起来,做到资源创建即完成初始化,使用完资源即自动销毁做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容RAII(Resource Acquisition Is Initialization)是由c++之父Bjarne Stroustrup提出的,中文翻译为资源获取即初始化,他说:使用局部对象来管理资源的技术称为资源获取即初始化;原创 2023-08-14 20:02:58 · 327 阅读 · 0 评论 -
【C/C++语法】数据结构迭代器的实现示例
认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对数据结构迭代器的实现示例做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。原创 2023-11-27 16:55:18 · 826 阅读 · 0 评论