自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++使用总结

最简单的lock会因为一些程序异常或者忘记解锁导致mux不能unlock,处于一直锁着的状态,而利用cpp库中自带的模板std::lock_guard类模板,就会让构建的对象在构造函数中加锁,在析构函数中解锁,即创建即加锁,作用域结束自动解锁。在使用unique_lock时,有时也会使用条件变量<condition_variable>,加上这个是为了让多线程在合适的情况下合适的同步,等待的线程可以被进行完的线程“唤醒”,搭配条件变量的两个主要函数:notification & wait。

2025-03-14 14:12:53 1053

原创 office版本

office各个版本安装包 http://pan.baidu.get8%2etop/ms/office。

2025-01-16 17:02:36 109

原创 MoveIt!(humble)安装、初识与C++实现运动规划

主要的内容是如何安装MoveIt、如何在RViz中使用MoveIt以及如何通过C++程序加入障碍物,并且进行运动规划。

2025-01-16 15:15:04 202

原创 ROS2 环境变量

在 ROS(Robot Operating System)中,环境变量是用于配置和管理 ROS 系统运行时行为的关键工具。ROS 环境变量影响节点的运行、通信设置、日志记录等多个方面。这些环境变量使得 ROS 系统能够灵活配置和管理节点的运行、网络通信、构建和日志等方面。根据不同的应用场景,可能需要根据需要配置这些变量。例如,如果你在多个机器上使用 ROS,可能需要配置和ROS_IP,以确保节点能够正确通信。如果你使用 ROS 2,可能需要更多地关注和等变量。

2025-01-14 15:55:54 812

原创 深度相机进行障碍物检测

对于障碍物检测,首先要确定一个距离阈值。如果某个像素点或者一组像素点(代表一个物体)的距离小于这个阈值,就可以被判定为在关注范围内的物体,可能是障碍物。例如,在一个自动导航的机器人应用中,如果设定机器人周围 1 米内的物体为障碍物,那么深度相机获取到的距离数据小于 1 米的像素区域对应的物体就会被标记为障碍物。

2025-01-13 17:05:20 1272

原创 激光雷达标定

激光雷达标定是移动机器人感知与预测系统中的关键环节,对机器人的环境理解能力和决策准确性具有直接影响。本文介绍的“最小方差法”标定算法,通过简单的标定环境和高效的计算流程,实现了激光雷达角度误差的高精度标定。这一方法不仅降低了标定成本,还提高了标定的便捷性与实用性,为移动机器人的智能化发展提供了坚实的支撑。展望未来,后面继续讲解激光雷达与其他传感器的联合标定方法,敬请期待。

2025-01-13 13:58:54 837

原创 ros2多机通信

在这个例子中,主机A上的talker将发布消息,而主机B上的listener将接收这些消息。注意,ROS_IP应该设置为主机对应的IP地址,ROS_DOMAIN_ID是一个区域标识符,如果你使用的是DDS作为通信底层,那么这是必要的。如果你使用TCP/IP通信,则可以忽略它。确保防火墙设置允许ROS 2所使用的端口(通常为11311 for DDS and 1039 for TCP)在两台计算机之间通信。假设主机A的IP是192.168.1.10,主机B的IP是192.168.1.20。

2025-01-13 11:12:19 534

原创 激光雷达进行障碍物检测

在农业机器人的正前方安装激光雷达,进行障碍物检测,激光雷达的数据向上发送的数据是pointcloud2类型,即xyzi(x、y、z表示点的空间位置,i可能表示反射强度等信息),下面介绍几种基于xyzi数据进行障碍物检测的方案。),设置模型类型为平面(pcl::SACMODEL_PLANE),距离阈值(例如 0.05 米,表示到拟合平面距离超过这个值的点被视为非平面点)和 RANSAC 迭代次数(例如 100 次)等参数。遍历点云数据,根据z轴阈值筛选出可能的障碍物点,将这些点存储在一个新的集合中。

2025-01-06 10:22:04 1192

原创 四元数 欧拉角 旋转矩阵

欧拉角通过绕三个坐标轴的旋转(通常是滚转、俯仰、偏航)来描述三维旋转。常见的旋转顺序有:XYZ、ZYX等。直观性:欧拉角是人类最自然的旋转方式,很容易理解。比如,飞机的航向(偏航)、俯仰(上仰或下俯)和滚转(左右倾斜)就是典型的欧拉角应用。易于操作:对角度的直观控制,适用于一些需要精确调整角度的应用。万向节锁(Gimbal Lock):当两个旋转轴对齐时(例如俯仰角为 ±90° 时),会导致一个自由度丢失,使得旋转失去自由度,无法描述某些方向的旋转。

2025-01-03 14:37:44 1391

原创 RK3588 Ubuntu系统编译

RK 固件,是以 Rockchip 专有格式打包的固件,使用 Rockchip 提供的工具可以烧写到 eMMC 或者 SD 卡中(注:若无特殊说明,WIKI 上提及的固件默认为 RK 固件)。我首先执行的是全自动编译,然后在kermel目录下通过make menuconfig添加sc132gs的相关驱动,重新编译内核后打包固件,烧录成功后发现 sc132gs驱动没有打进系统中,使用。全自动编译会执行所有编译, 编译生成u-boot、kernel和buildroot。1、返回kernel目录下,以。

2024-11-13 12:59:36 1111 1

原创 RK3588 快速上手

我的开发板是临滴科技的LKD3588,相关的官网上都可以找到,我这里给大家一个网盘链接LKD3588-开发板(公开资料)pwd=3588LKD3588-开发板(保密资料)pwd=3588。

2024-11-13 11:12:44 494

原创 聊一聊Linux中断

中断,包括硬中断和软中断。整个操作系统就是一个中断驱动的死循环,操作系统原理如果用一行代码解释,下面这样再合适不过了。其他所有事情都是由操作系统提前注册的中断机制和其对应的中断处理函数完成,我们点击一下鼠标,敲击一下键盘,执行一个程序,都是用中断的方式来通知操作系统帮我们处理这些事件,当没有任何需要操作系统处理的事件时,它就乖乖停在死循环里不出来。

2024-08-20 14:42:46 411

原创 Linux源码

本文转载关于Linux内核源码的讲解。

2024-08-19 15:14:18 145

原创 机器人常用的几大主流SLAM算法

转自:https://zhuanlan.zhihu.com/p/614769897。

2024-08-15 11:37:53 2378

原创 C语言代码优化方案(深度好文)

函数定义并不知道函数返回值是否被使用,假如返回值从来不会被用到,应该使用void来明确声明函数不返回任何值。一般来说,所有函数都应该有原型定义。原型定义可以传达给编译器更多的可能用于优化的信息。

2024-08-07 11:42:31 920

原创 一些面试题

全网唯一C语言经典算法,技术面试题汇总及答案嵌入式面试总结BSP开发|嵌入式|Linux驱动|笔试面试C语言常见面试题汇总嵌入式软件工程师经典面试题127道50个C/C++面试题

2024-08-06 16:49:08 107

原创 Linux虚拟机扩展磁盘空间

mount -o remount -rw /var/snap/firefox/common/host-hunspell:重新以读写权限来挂载另一个目录。可以通过 拖拽移动 或者直接输入数值的方式来对指定分区 /dev/sda3 进行扩充大小,之后点击 Resize 完成分配。在VM的设置中分区之后,还需要进入Linux虚拟机,将扩展的磁盘空间分配给对应的分区。mount -o remount -rw /: 重新以读写权限来挂载根目录 /sudo -i:切换到临时root账户。修改要增加的分区大小。

2024-07-15 10:06:03 663

原创 CUDA编程

2006年,NVIDIA公司发布了CUDA,CUDA是建立在NVIDIA的CPUs上的一个通用并行计算平台和编程模型,基于CUDA编程可以利用GPUs的并行计算引擎来更加高效地解决比较复杂的计算难题。近年来,GPU最成功的一个应用就是深度学习领域,基于GPU的并行计算已经成为训练深度学习模型的标配。目前,最新的CUDA版本为CUDA 9。GPU并不是一个独立运行的计算平台,而需要与CPU协同工作,可以看成是CPU的协处理器,因此当我们在说GPU并行计算时,其实是指的基于CPU+GPU的异构计算架构。

2024-07-03 16:03:41 767

原创 Linux htop命令使用

htop 是一个类似于 top 的命令,但具有更丰富的功能和更友好的界面。它可以实时显示系统中各个进程的资源占用情况,如 CPU 使用率、内存使用率等。以下是对 htop 命令的完全解析:表示 CPU 核心的编号(如果有多个核心的话)。

2024-06-22 16:26:26 933 1

原创 Linux下计算程序运行时间(C++)

在Linux环境下,可以使用多种工具和技术来测量程序的运行时间,例如time命令、perf工具、以及编程语言级别的性能分析库。对于需要更高精度时间测量的场景,可以使用 gettimeofday() 函数(需要包含头文件 <sys/time.h>),但请注意这属于POSIX标准而非C++标准库的一部分。以上方法中,使用 chrono 库是最推荐的方式,因为它提供了更现代、更灵活且跨平台的解决方案。在嵌入式开发中,计算程序运行时间是一个重要的实践,它涉及到性能分析、资源管理和系统优化等多个方面。

2024-06-08 14:57:25 675

原创 I2C协议详解

在I2C通信中,主设备控制时钟线SCL,而数据线SDA用于在主设备和从设备之间双向传输数据。主设备通过SDA发送数据给从设备,同时使用SCL产生时钟信号,从设备根据时钟信号读取SDA上的数据。反过来,从设备也可以在主设备的控制下,通过SDA发送数据给主设备。其中,SDA用于在设备之间传输数据,而SCL则提供时钟信号,控制数据传输的速度。在I2C总线上,每个设备都有一个唯一的地址,主设备通过这个地址来识别和访问从设备。这种工作方式的优点在于,它可以简化系统设计,减少设备间的连接线,提高系统的可靠性。

2024-05-29 15:52:50 1273

原创 ADC协议详解

模数转换器(ADC,Analog-to-Digital Converter)是一种将模拟信号转换为数字信号的电子设备。模拟信号通常表示物理测量的连续变化,如声音、温度、压力等,而数字信号则是以二进制数值表示的离散信号。ADC起源于20世纪的电子技术发展,用于将模拟的物理世界信息转换为数字计算机能够处理的信息。ADC有多种转换方式,常见的有直接转换(flash ADC)、逐次逼近(SAR ADC)、积分(integrating ADC)、ΔΣ(delta-sigma ADC)等。

2024-05-24 15:33:48 1123

原创 UART协议详解

UART是(Universal Asynchronous Receiver/Transmitter),通用异步收发器的缩写。在19世纪60年代,为了解决计算机和电传打字机通信,Bell发明了 UART协议,将并行输入信号转换成串行输出信号。因为UART简单实用的特性,其已经成为一种使用非常广泛的通讯协议。我们日常接触到的串口,RS232,RS485等总线,内部使用的基本都是 UART协议。是一种广泛应用于嵌入式领域的串行、异步、全双工通信协议。

2024-05-23 11:30:41 1386

原创 GPIO协议详解

GPIO是通用输入/输出(General Purpose Input/Output)的缩写,它是电子系统中用于控制和监视外部设备的一种接口。在计算机硬件和微控制器中,GPIO通常指的是一组可以被软件编程为输入或输出的引脚。

2024-05-22 18:59:10 2811

原创 SPI协议详解

SPI(Serial Peripheral Interface,串行外设接口)是一种广泛使用的同步串行通信协议,用于微控制器和各种外围设备之间的数据传输。SPI通信是全双工的,即可以同时发送和接收数据,并且是高速的,没有速度限制,通常能达到甚至超过10Mbps。

2024-05-20 16:26:56 1161

原创 Windows环境下训练OpenCV分类器

直接在Powershell用pip安装,用国内源(我这里用的是阿里源)下载OpenCV,官方的太慢了。测试一下Ctrl+Z退出Python环境安装依赖库。

2024-05-17 17:00:52 411

原创 树莓派与OpenCV实现人脸识别

为了检测摄像头是否成功接入,先拔掉运行lsusb命令查看当前树莓派接入的设备,再接入摄像头,再运行lsusb,对比返回结果。我们使用luvcview这个工具来查看摄像头的实时视频,利用which luvcview这个命令来查看是否已安装这个工具,正常情况会返回“/usr/bin/luvcview”,若没有返回任何信息,则使用 sudo apt-get install luvcview 来安装工具。安装完成后使用luvcview -s 1080x720来启动该工具,其中1080x720代表采集的分辨率。

2024-05-17 16:45:08 732

原创 Linux下计算程序运行时间(C语言)

在Linux环境下,可以使用多种工具和技术来测量程序的运行时间,例如time命令、perf工具、以及编程语言级别的性能分析库。这些工具可以帮助开发者准确测量和分析程序的性能,从而进行有效的优化。在嵌入式开发中,计算程序运行时间是一个重要的实践,它涉及到性能分析、资源管理和系统优化等多个方面。接下来介绍C程序计算程序运行时间,单位是毫秒(ms)

2024-05-15 14:47:30 741

原创 树莓派安装OpenCV

我的树莓派选用的是32G内存卡,建议选择树莓派安装raspbian系统镜像,如果不会安装官方镜像百度网盘 https://pan.baidu.com/s/1ACxvVdpYYJ0OAg7nqVXJmA提取码:ms45。

2024-05-15 14:27:28 1724 1

原创 Raspbian系统镜像安装

提示1:烧录的过程如果存在提示:“验证写入失败,SD卡的内容与写入的内容不同。”的话,多尝试几次,我一般都是尝试三次之后写入成功!提示2:将烧录好的SD卡插入树莓派上,等待安装系统,如果树莓派上旁边的绿灯在闪的话,说明正在安装系统,大概十分钟左右。此时树莓派的镜像已经成功烧录在SD卡中。

2024-05-15 14:11:18 1496 5

原创 记录一下如何生成core dump文件

有问题的程序运行后,产生“段错误 (核心已转储)”时生成的具有堆栈信息和调试信息的文件。

2024-05-15 11:39:23 799

原创 记录一下安装ROS的过程

ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面ROS相当于一种“机器人框架(robot frameworks)(来自ROSwiki)

2024-05-06 14:10:48 1025 1

原创 CRC代码实例

【代码】CRC代码实例。

2024-04-25 16:11:58 331

原创 MQTT 简介与使用说明

MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信。

2024-04-25 15:46:01 1240

原创 Nvidia Orin(Ubuntu20.04)安装NoMachine

Nomachine是一款免费的远程桌面访问应用程序。支持用户从任何地方访问连接到Internet的计算机。该应用程序允许多个用户访问单个PC,且支持使用不同的操作系统。官网链接:NoMachine - Free Remote Desktop for Everybody软件下载地址:NoMachine - Download Free Remote Desktop Access需要的软件已经放在网盘中,需要自取。

2024-04-24 11:37:36 2555 3

原创 ROS 生成core dump

终端输入ulimit -c如果输出 0,说明没有开启 core dump 功能以上指令只对当前终端有效,想要永久生效需要修改 “/etc/security/limits.conf” 文件,重启后生效。

2024-04-11 14:08:14 283 1

原创 linux共享目录下无法执行shell脚本

在开发过程中将打包程序在Linux环境下写成.sh形式推送在git进行维护。

2024-04-07 16:47:24 201

原创 数据结构——队列

队列是一种特殊的线性表,既可以以数组形式存储也可以以链式结构的形式存储。以数组形式存储称为数组队列(特殊的线性表),以链式结构的形式存储称为链式队列(特殊的链表)。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列的原则。队尾:进行插入操作的一端。队头:进行删除操作的一端。队列是从队尾插入数据,队尾不能删除数据。从队头删除数据,队头不能插入数据。

2024-04-02 15:06:53 179 1

原创 数据结构——栈

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈只在栈顶进行操作,不能在栈底和栈顶之间的部位进行操作。

2024-04-02 14:24:51 286 1

原创 数据结构——线性表之双链表

双链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针双向链接次序实现的。双链表最大的优势就是双链表结构体的成员变量中包含上一个节点的地址,这样操作起来非常方便并且不需要遍历找上一节点的地址,基本没有效率损失,完美解决了单链表存在缺点。

2024-04-02 14:06:35 356 1

office版本,学习资料,懂的都懂

office版本,学习资料,懂的都懂

2025-01-17

空空如也

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

TA关注的人

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