LOS
追踪控制算法中的视线法(Pure Pursuit Algorithm) 是一种常用于无人车、自主机器人或自动驾驶系统的路径跟踪算法。它的核心思想是通过确定一个“目标点”,使车辆以特定的转向角调整其行驶方向,从而逐步靠近预定路径。 视线法的基本原理 视线点: 视线点是路径上一个期望的参考点,航向调整是基于该点的相对位置。通常,视线点位于当前位置前方的某个固定或动态计算的距离处。 从当前位置沿着路径找到一个距离为“前视距离”(Lookahead...
Cmake 实践
使用 CMake 构建的 C++ 项目如何进行调试方法 一在CMakeLists.txt中添加123set(CMAKE_BUILD_TYPE "Debug")set(CMAKE_C_FLAGS_DEBUG "$ENV{CFLAGS} -O0 -Wall -g -ggdb")set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") gdb 可执行文件进行调试 方法 二在vscode中使用cmake tool插件进性调试 后续。。。
Linux下基于VSCode的c和c++编译环境搭建
可以使用gcc/g++、make、cmake编译 基础环境 ubuntu24.04 安装VSCode 在VSCode中安装C++拓展 1. gcc/g++1.1. 环境配置 首先确保ubuntu系统已安装gcc,使用gcc -v命令查看 如果能够正确打印出当前gcc的版本信息,则表示已经预装。若没有预装,则用如下命令安装安装 GNU 编译器工具和 GDB 调试器: 12sudo apt update # 更新软件包源 sudo apt-get install build-essential gdb 1.2. 配置项目的配置文件位于.vscode文件夹下: c_cpp_properties.json (compiler path and IntelliSense settings) tasks.json (compiler build settings) launch.json (debugger...
gcc、make与cmake
1.gcc gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。当你的程序只有一个源文件时,直接就可以用gcc命令编译它。 gcc hello.c -o hello,也可以gcc -o hello hello.c 编译成功后会生成一个可执行文件hello,在命令行中输入 ./hello运行程序 或者分步骤 123456gcc - 选项 源文件名(依赖文件) -o 目标文件名或者gcc -选项 -o 目标文件 源文件名(依赖文件)选项:-E 从当前文件开始,在预处理完成之后停止, 生成的文件后缀一般加i-S 从当前文件开始,在编译完成之后停止, 生成的文件后缀一般加s 预处理:gcc -E hello.c -o hello.i 编译:gcc -S hello.i -o hello.s 汇编:gcc -c hello.s -o hello.o 链接:gcc hello.o -o...
Vim编辑器
Vim 是从 vi 发展出来的一个文本编辑器。具有代码补全、编译及错误跳转等方便编程的功能。 Vim的使用vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和底线命令行模式(Command-Line Mode)。 命令模式启动vim,便进入命令模式。命令模式下,此时我们的输入会被识别为命令,而非字符。常用的命令: i 切换到输入模式,在光标当前位置开始输入文本。 a 进入插入模式,在光标下一个位置开始输入文本。 o 在当前行的下方插入一个新行,并进入插入模式。 O 在当前行的上方插入一个新行,并进入插入模式。 x 删除当前光标所在处的字符。 yy 复制当前行。 p(小写) 粘贴剪贴板内容到光标下方。 P(大写) 粘贴剪贴板内容到光标上方。 u 撤销上一次操作。 Ctrl + r 重做上一次撤销的操作。 : 切换到底线命令模式,以在最底一行输入命令。 :w 保存文件。 :q 退出 Vim 编辑器。 :q! 强制退出Vim 编辑器,不保存修改。当我们想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i...
Linux 常用指令
linux系统文件目录/bin 二进制文件,系统常规命令 /boot 系统启动分区,系统启动时读取的文件 /dev 设备文件 /etc 大多数配置文件 /home 普通用户的家目录 /lib 32位函数库 /lib64 64位库 /media 手动临时挂载点 /mnt 手动临时挂载点 /opt 第三方软件安装位置 /proc 进程信息及硬件信息 /root 临时设备的默认挂载点 /sbin 系统管理命令 /srv 数据 /var 数据 /sys 内核相关信息 /tmp 临时文件 /usr 用户相关设定 快捷键 Alt + F4 关闭当前窗口 Ctrl + Alt + T 打开终端 Ctrl + Shift + C 复制 Ctrl + Shift + V 粘贴 Ctrl + l 清空屏幕 Ctrl + c 终止命令 Ctrl + z...
Shell 脚本
1.什么是ShellShell有两层身份: Shell 是一个“应用程序”(解析器)它是用户和操作系统之间的“翻译官”,接收你输入的命令,然后交给内核执行。常见的 Shell 应用程序有: | Shell | 常见平台 | 特点 | | ————————————————— | —————————————————— | —————————————————————— | | bash (Bourne Again SHell) | Linux, macOS(默认) | 最常见,功能强,支持数组、字符串操作 | | sh(Bourne Shell) | Unix, Linux | 最早的 Shell,兼容性高,功能略弱 |...
Linux系统
Linux系统简介Linux 本质上是一个内核(kernel),但通常我们说的“Linux 系统”是指 内核 + 各种工具/软件包的集合。Linux内核是开源的,允许软件被自由地使用、修改和再发布,因此许多公司和组织都会基于Linux内核,来开发自己的系统,即发行版,如: Ubuntu(用户友好,适合入门) CentOS / RHEL(服务器常用) Debian(稳定性高) Arch Linux(极度自定义) Kali Linux(渗透测试、安全研究) Linux系统结构(从底层到高层) 硬件层 就是物理设备,例如:CPU、内存、硬盘、网卡、外设等。 Linux通过驱动程序控制和管理这些硬件 Linux内核(Kernel)内核是Linux系统最重要的部分,关键模块|模块|功能||—-|—-||进程管理| 负责进程调度、创建、终止(多任务能力)||内存管理| 管理虚拟内存、物理内存分配等||文件系统| 支持各种文件系统(ext4、NTFS、FAT等)||设备驱动| 管理硬件设备,如鼠标、硬盘、摄像头等||网络协议栈| 提供...
模糊(Fuzzy)控制算法C++实现
引言在前面的一篇文章PID控制算法简单说明了模糊控制算法的原理,本文用C++实现了一个通用性的模糊控制器。 fuzzy_controller.hpp文件12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#pragma once#include <functional>#include <map>#include <string>#include <vector>namespace control_algorithm {/** * @brief * 表示模糊集合的类,代表一个模糊集合,包含集合的名称和一个隶属度函数(该函数返回给定值的隶属度)。 */class FuzzySet { public: std::string name; // 模糊集合的名称 ...
C++ 标准库
C++ 标准库C++标准库(C++ Standard Library)是C++语言的一部分,提供了一组丰富的工具和组件,涵盖了各种编程需求。标准库由以下几个主要部分组成: 1.标准模板库(STL)STL提供了常用的数据结构和算法,分为以下几个部分: 容器12345678910111213<array>: 定长数组容器<vector>: 动态数组容器<deque>: 双端队列容器<list>: 双向链表容器<forward_list>: 单向链表容器<stack>: 栈容器适配器<queue>: 队列容器适配器<priority_queue>: 优先队列容器适配器<set>: 集合容器(基于平衡二叉树)<unordered_set>: 无序集合容器(基于哈希表)<map>: 映射容器(键值对,基于平衡二叉树)<unordered_map>: 无序映射容器(基于哈希表)<bitset>:...