自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(214)
  • 收藏
  • 关注

原创 履带机器人运动模型分析

分别是右侧和左侧履带的速度。这两个公式使我们能够根据机器人质心的运动需求(线速度和角速度)来设置每个履带的速度。) 表示机器人的转向半径,它是基于差速驱动机制计算的,其中机器人两侧的轮速不同。使用这个公式可以帮助你计算在不同轮速条件下机器人的转向半径,这对于路径规划和避障算法非常重要。) 履带的速度,我们需要计算机器人质心的线速度 (),我们需要计算出每个履带应有的速度 () 是机器人质心的平均线速度,而 () 是机器人绕其质心的角速度,其中 (根据机器人质心的期望线速度 () 是虚拟左右轮间的距离。

2024-09-28 11:35:31 1221

原创 CMake 中 add_definitions() 使用的注意事项及替代方案

函数时,虽然其作用范围是全局的,但在实际应用中可能会遇到一些问题,导致其对子目录的影响不如预期。通过上述措施,可以更有效地管理 CMake 项目中的编译定义,确保构建过程符合预期,同时提高项目的可维护性和可扩展性。如果使用变量来设置定义,并且这些变量在父目录中没有正确地传递到子目录(如未使用。这种方法确保只有指定的目标受到定义的影响,提高了构建过程的清晰度和可控性。),那么子目录中的目标将不会受到这些定义的影响。这样可以确保定义传递给所有子目录中的目标。,那么这些目标将不会包含新增的预处理器定义。

2024-09-28 11:28:04 372

原创 CMake 中的目标:详细概述

代表了构建过程中生成的特定构建产物,如可执行文件、库或任何其他文件。理解目标对于有效管理和扩展使用 CMake 的构建系统至关重要。这一详细概述包括了你可以在 CMake 中定义的目标类型、如何管理它们的属性,以及它们在构建系统中的作用。在 CMake 中精确理解和使用目标是至关重要的,因为它们是构建过程中的基本单元。正确使用目标可以提升项目的可维护性和可扩展性,使构建过程更加清晰和高效。这种方式的好处是它仅影响指定的目标,而不会全局影响其他目标。可以通过专门的命令,如。在 CMake 中,

2024-09-27 16:54:35 395

原创 g++的一些常用标识

下面将为上述提到的g++编译器常用标识提供具体的使用实例和解释,以展示每个标识在实际的编程和编译过程中的应用。

2024-09-27 16:53:45 631

原创 详解 CMake 命令:启用详细 Makefile 输出

目录中找到的项目,并生成详细输出的 Makefile。这样配置后,在构建过程中,你可以看到所有的编译器调用、链接命令和其他构建细节,而这些通常在默认的 Makefile 中是不显示的。虽然开启详细输出对于上述目的非常有帮助,但在常规的开发过程中,它可能会生成大量的输出,从而影响到构建的性能和日志的可读性。因此,推荐仅在需要深入调查构建问题时才开启此选项。整条命令的作用是,运行 CMake 以配置在。

2024-09-25 11:19:51 289

原创 深入理解 cmake --build CMake 的统一构建命令解析

指向包含生成的构建系统文件(如 Makefile 或 *.sln 文件)的目录,这通常是在运行cmake命令时指定的构建目录。[options]是可选的参数,用来控制构建过程的具体行为。是 CMake 生态中的一个强大工具,它为构建过程提供了统一且高效的界面。通过深入理解和合理利用这一命令,开发者可以更高效地管理和自动化他们的软件构建过程,无论是在本地开发还是在持续集成环境中。

2024-09-25 11:19:19 516

原创 详细解析:CMake的跨平台构建流程及其工作原理

CMake的设计使得它能够支持从小型项目到大型企业级应用的多平台构建。其能力不限于生成构建文件,还包括对项目依赖和外部库的管理,以及高级用户定义功能,如自定义构建步骤和测试自动化(通过CTest)。通过CMake,开发团队能够确保在各种环境下一致的构建结果,减少环境配置差异带来的问题,同时提高项目的可移植性和可维护性。这种方法为现代软件开发提供了必要的灵活性和效率。

2024-09-24 12:26:36 527

原创 深入探索CMake的跨平台构建机制:原理与实现

通过以上机制,CMake 提供了强大的跨平台构建能力,允许单一的构建配置文件在多个平台上生成和管理构建过程。这极大地简化了复杂项目的构建管理,使得开发者可以集中精力于代码本身,而不是构建工具的差异。

2024-09-24 12:25:52 443

原创 C++编译过程详解:从源代码到可执行文件的转换步骤

C++编译过程是从源代码到最终可执行文件的详细转换过程,每个阶段都具有特定的任务和目标,这些阶段共同确保了源代码能被转化为效率高、功能完整的程序。理解这些编译阶段对于高效的程序设计和问题调试至关重要。

2024-09-23 11:10:49 560

原创 用户和用户组在系统权限管理中的应用实例

在 Unix-like 系统中,每个使用系统的人都需要有一个用户账号。系统通过用户账号来管理权限,控制对系统资源的访问。用户账号包括一个唯一的用户名和与之相关的其他信息,如用户的个人文件(家目录)和用户组。

2024-09-23 11:10:18 375

原创 Unix-like 系统中的文件所有权管理:使用 sudo chown -R 命令的详解与实践应用

是一个在 Unix-like 系统中用于更改文件或目录所有权的命令。下面将详细解释这个命令的作用、可以解决的问题,以及一个实例说明。,现在需要将这个目录及其所有子目录和文件的所有权转移给用户。命令在实际工作中如何用于解决访问控制和权限管理问题。通过这个实例,我们可以看到。的目录,原本属于用户。

2024-09-22 13:36:54 575

原创 使用 CMake 创建和调用动态库在 Windows 和 Ubuntu上的差异

尽管创建和使用动态库的基本步骤在不同操作系统上相似,具体实现上的差异主要体现在动态库文件的处理、环境配置和平台特定的编译器选项上。理解这些差异可以帮助开发者更有效地跨平台开发和部署软件。

2024-09-22 13:34:54 983

原创 完整指南:使用 CMake 在 Windows 上创建和使用动态链接库 (DLL)

这个教程提供了完整的步骤和详细的说明,涵盖从设置项目、编写代码、配置 CMake、到编译和运行应用程序的全过程。这种方法不仅确保了 DLL 的正确创建和使用,也使得项目的依赖管理更加高效和模块化。

2024-09-21 12:59:13 558

原创 详细解析:在 Windows 上使用动态链接库(DLL)的关键方面

上述段落详细阐述了在 Windows 系统上使用动态链接库(DLL)的关键方面,涵盖了DLL的文件类型和扩展、导出控制、运行时依赖,以及导入库的使用。这些内容对于确保 DLL 的正确创建、管理和使用至关重要。下面将进一步详细解释每个部分的重要性和作用。

2024-09-21 12:58:39 546

原创 常用的C和C++编译器概览

C和C++是两种广泛使用的编程语言,它们支持的编译器众多,适用于不同的操作系统和开发需求。

2024-09-20 12:58:46 486

原创 在Windows上安装WSL2和Ubuntu 20.04以搭建C++开发环境的详细指南

在Windows系统上安装WSL2(Windows Subsystem for Linux 2)并选择Ubuntu 20.04作为Linux发行版,进而搭建C++开发环境,是一种非常实用的配置。这使得在Windows操作系统上可以方便地使用Linux环境进行开发。

2024-09-20 12:57:27 564

原创 C、C++源文件生成可执行程序的toolchain流程

整个C/C++源文件生成可执行程序的toolchain流程包括了预处理、编译、汇编和链接四个主要步骤。每个步骤都有特定的任务和输出,最终生成的可执行文件能够在特定的操作系统和硬件平台上正确运行。理解这些步骤的工作原理和相互关系,对于开发者来说是非常重要的,可以帮助他们理解和调试程序,提高代码的效率和可移植性。

2024-09-19 17:53:04 378

原创 CMake的跨平台性

CMake 的跨平台性体现在其能够在不同操作系统和开发环境下生成相应的本地构建规则和项目文件,并且支持多种生成器和内置对常见库和工具的支持。开发者可以通过统一的 CMakeLists.txt 文件来描述项目的构建过程,从而简化跨平台开发和构建管理,提高开发效率和代码的可移植性。

2024-09-19 17:52:21 277

原创 cmake makefile cmakelists.txt的区别和联系

描述项目的构建过程,生成特定构建系统的配置文件(如Makefile),而Makefile直接描述了如何编译和链接源代码。使用CMake可以提高项目的可移植性和跨平台性,同时简化了复杂项目的管理。理解CMake、Makefile和CMakeLists.txt的区别和联系,可以帮助我们更好地管理和构建C/C++项目。总结:CMake通过。

2024-09-18 11:27:27 449

原创 编译和链接以及makefile

【代码】编译和链接以及makefile。

2024-09-18 11:26:27 979

原创 常用压接线端子教程

首先我们需要对线头处理成类似的这样的一个状态,剥去一段塑料绝缘层,露出一段线芯。然后把这个线头插到我们的端子里面去,确保它已经插进了端子的金属环的部分。

2024-09-17 13:34:32 491

原创 螺丝、螺母、垫片等紧固件常用类型详细介绍

螺丝、螺母、垫片等紧固件常用类型详细介绍

2024-09-17 13:27:27 1256

原创 直流无刷电机霍尔线序自学习解释

在电机运行过程中,霍尔传感器安装在电机定子的固定位置,用于实时监测转子磁极相对于定子的位置变化。当磁极通过霍尔传感器时,其磁场的变化会引起霍尔传感器输出信号的跳变。这些跳变是电机控制系统获取转子当前位置的关键。

2024-09-16 12:53:36 1234

原创 铝型材及其常用紧固件、连接件介绍

铝型材及其常用紧固件、连接件介绍

2024-09-16 12:51:06 1421

原创 RAM和ROM的区别

RAM和ROM的区别

2024-07-05 18:48:29 432 1

原创 存储器类型介绍

存储器类型介绍

2024-07-04 14:20:04 989

原创 ISP和IAP原理解释

ISP和IAP

2024-07-04 14:10:28 405

原创 程序烧录原理

程序烧录原理

2024-07-03 12:36:54 362

原创 bootloader原理介绍

不同mcu芯片的启动形式呢,又都不尽相同,比如采用Coretex-M内核的stm32系列mcu,如前面所说,启动时会固定跳转到0地址处。不管你用不用它,但还是那句老话,我们没有权限对这片flash地址进行修改。

2024-07-03 12:35:57 1138

原创 ubuntu 默认的PATH配置

在Ubuntu系统中,PATH环境变量是非常关键的,因为它定义了操作系统在接收到用户输入命令时,搜索可执行文件的目录顺序。这个变量的配置决定了哪些命令可以被系统全局识别和执行。

2024-07-02 19:49:05 471

原创 ubuntu 更换软件源

在Ubuntu 20.04 LTS中更换软件源可以通过图形界面或命令行进行。更换软件源通常是为了加快软件包的下载速度或解决软件源不可用的问题。这里我将分别说明如何通过图形界面和命令行更换软件源。

2024-07-02 19:48:26 873

原创 ubuntu 软链接(ubuntu20.04)

在Ubuntu和其他Linux系统中,软链接(也称为符号链接)是文件系统中的一个特殊类型的文件,它作为一个引用或指针,指向另一个文件或目录。软链接类似于Windows中的快捷方式,但功能更为强大和灵活。这些链接不复制原始文件的内容,而是创建一个指向该文件或目录的路径。

2024-06-28 13:10:08 905

原创 ubuntu 内核版本

选择哪个内核启动通常由GRUB引导加载器决定,该设置基于GRUB配置文件中的条目排序。用户可以在系统启动时进行选择或通过修改GRUB配置文件来更改默认设置。这为Ubuntu用户提供了灵活的管理和选择不同内核版本的能力,以满足不同的系统需求和偏好。在Ubuntu系统中配置GRUB来选择默认的内核版本或修改启动参数需要编辑GRUB的配置文件。

2024-06-28 13:09:29 2156

原创 ubuntu recovery 恢复模式(20.04)

Ubuntu 20.04 LTS(长期支持版本)的恢复模式提供了一种启动到修复模式的方式,以帮助解决启动问题、文件系统问题以及其他系统相关的问题。这是一个特别有用的功能,特别是当你无法以常规方式启动系统时。

2024-06-26 12:46:28 4150

原创 ubuntu bin目录

在Ubuntu以及其他Unix和Linux系统中,bin目录扮演着非常重要的角色。这个名字bin来自“binary”的缩写,意味着这些目录包含二进制可执行文件,即那些编译过的程序,用户和系统可以直接运行这些程序。

2024-06-26 12:45:44 486

原创 ubuntu wget使用方法(ubuntu20.04)

O [file]:将下载的内容保存到指定文件。-c:断点续传。-r:递归下载。-np:不下载父目录。:限制下载速度。-m:镜像网站。-k:转换链接为本地链接。-E:将 HTML 文件保存为.html扩展名。:设置用户代理字符串。:提供用户名和密码进行认证。-i [file]:从文件中读取 URL 列表。

2024-06-25 17:43:09 1587

原创 ROS 激光雷达避障(Python实现)

目录下创建一个Python脚本(例如命名为。

2024-06-25 17:41:17 744

原创 ROS 激光雷达避障(C++实现)

目录下创建一个C++文件(例如。

2024-06-24 18:21:02 756

原创 linux下使用源码编译安装cangaroo(以ubuntu20.04为例)

Cangaroo是一个开源的CAN总线分析器,用于监控和分析CAN总线上的通信。它是一个软件项目,提供了一个用户界面,可以实时捕获、解析和显示CAN消息的内容,并提供各种分析工具和功能,帮助用户理解和调试CAN总线上的通信。

2024-06-24 18:20:13 1768

原创 激光雷达消息包格式

在ROS(Robot Operating System)中,激光雷达(LiDAR)的数据通常通过消息类型进行传递。这种消息类型被广泛用于传输从2D或3D激光雷达接收到的扫描数据。以下是。

2024-06-21 12:55:10 910

ros-arduino-bridge py3 双路pid

可以在ubuntu20.04上运行(py3版本)已调通 arduino里使用了双路pid,可以有效解决两个电机存在自身差异导致一个pid很难走直线的问题,并且可以通过串口绘图器,将两路编码器的值全部输出,直接观察曲线图,易于调试。这里的pid使用了Kp,Ki,Kd,Ko四个参数,前面三个参数就是正常的比例系数、积分系数、微分系数,而最后一个Ko是用于将PID三个参数作一个整体的放大或缩小,用于提高调整的精度。(不要随意修改编码器的AB相信号输出引脚以及编码器的计数方式,因为可能会影响到上位机的键盘控制节点出现问题,只能是一侧轮子转动,具体原因还有待研究,如果arduino无法驱动电机,很有可能是引脚接线问题,但不排除一些接触不良、板子本身有问题,有遇到过arduino nano的板子两个IO口是互通的奇葩问题) 关于上位机的部分,也修改为了双路pid,运行arduino.launch后,会在终端实时打印出当前编码器的计数值。

2023-09-15

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除