自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (3)
  • 收藏
  • 关注

原创 mcu 启动流程

2、复位中断服务程序执行的最终结果是跳转至C程序的main函数,如上图中标号2️⃣所示,而main函数应该是一个死循环,是一个永不返回的函数。stm32内部闪存的起始地址为0x8000000,程序从此处写入,中断向量表位于该位置,首先从0x8000000取出MSP的栈顶指针(设置堆栈),然后从中断向量表中取出复位中断向量,并执行复位中断程序来完成启动。建立中断向量表:中断向量表作为中断源的识别标志,可以形成相应的中断入口地址,或者中断服务程序的入口地址的偏移量和段基值。

2023-07-19 19:42:02 7473

原创 rt-thread构建含c++源码的工程

vim libraries/SConscript ,删除 pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp(切记不要注释,要删除)

2023-07-19 19:40:34 2554

原创 rt-thread i2c通信点亮oled显示屏

其主要实现软件I2C的时序等逻辑,并提供对应的I2C的收发处理函数,为drv_soft_i2c层提供提供了(struct rt_i2c_bit_ops)注册接口和(rt_i2c_bit_add_bus)接口,为i2c_core层提供主机模式的数据处理函数i2c_bit_xfer()。i2c_bit_xfer函数的实现,根据i2c协议实现响应的读写时序。rt_i2c_bus_device_register函数向rt-thread内核设备注册设备对象,其一般封装在rt_i2c_bit_add_bus函数中。

2023-07-19 19:39:30 2369

原创 pico添加devmem2读写内存模块

msh是FinSH的传统命令行模式,因其模式体积小,使用方便,能够解决C-style(C语言解释器模式)的弊端等,被广泛引用。name:要导出的命令,desc:导出命令的描述在ENV工具中配置MSH:command shell,如下图:添加devmem2模块至FinSH组件,需要在工程中的FinSH路径下cmd.c(如:…/bsp/raspberry-pico/dist/project/rt-thread/components/finsh/cmd.c)添加devmem2相关源码。

2023-07-19 19:37:30 1249

原创 rt-thread rtc设备驱动开发

参考/rt-thread/components/drivers/rtc/下的RTC的设备驱动框架源码,了解RTC设备类封装的函数及相关接口体。综上,针对某一操作,传递至设备框架层的函数能够有效调用驱动层的函数,驱动层的函数调用设备SDK衍生出的函数,进而实现对硬件的操作。同理,从设备驱动框架层到IO设备管理接口层,又是上层对下层的一次抽象。​ 在RT-Thread中,I/O设备管理层和驱动设备框架层已完成封装,若新增设备驱动到I/O设备框架时,一般只需要结合硬件设备提供的SDK对设备驱动层进行驱动开发。

2023-07-19 19:33:43 2323

原创 虚拟机挂载USB设备/USB serial 连接开发板

5、用完后,必须先卸载设备 sudo umount /mnt/usb ,然后才能拔出U盘,否则会损伤U盘中的数据。此外,也可以通过查看/dev目录下存在的ttyUSB*设备,命令:ls /dev/ | grep USB。3、创建挂载目录:mkdir /mnt/usb。

2023-07-19 19:32:07 1777

原创 基于osg引擎,实现对osg文件内容的处理,涉及指定node节点的提取、在线shader内容更改、三角面片顶点存储形式转换

本博将介绍如何利用osg引擎实现对osg模型文件内数据的在线修改,针对实际需要从 num_children 中提取所需的child;开发中涉及到shader着色器数据的在线更改,实时变换模型的数据;更改osg默认的数据存储形式。

2023-03-31 13:25:23 906 1

原创 xml.etree.ElementTree对xml文件的基本处理操作

xml.etree.ElementTree对xml文件的基本处理操作

2022-12-09 10:01:47 740

原创 基于openssl的aes_cbc加解密操作、基于libxml2的xml文件解析

基于openssl的aes_cbc加解密操作、基于libxml2的xml文件解析

2022-10-31 10:59:05 1002

原创 string/hex/bit等数据类型之间的转换

字符串、hex、bit等数据类型之间相互转换

2022-10-20 16:15:50 879

原创 virualBox虚拟机系统磁盘fdisk无损扩容+vriualBox对windows虚拟机的扩容

针对virualBox相较于VMwareWorkstation的磁盘扩容稍微复杂一些。需要明确一点:xxx.vmdk格式的硬盘文件是无法通过virualBox实现扩容的,而xxx.vdi格式磁盘是可以通过virualBox进行扩容。接下来的工作将分为两步进行,分别为:1、将xxx.vmdk格式的磁盘文件转为xxx.vdi的格式磁盘文件2、对系统进行设置,实现扩容。

2022-09-19 14:00:15 2179 2

原创 socket网络编程——基于socket通信实现对客户端与服务器间的文件互传

客户端与服务器间的文件互传 基于socket的文件数据互传,将文件中所有的字符一一通过buf进行传递,为了更好地判断文件的 结束,通过添加文件结束标识符“#”,当接收端接收到该字符,即可表示发送端对该文件传输结束,结束端需要对文件进行保存,并继续创建新的文件进行新文件内容的写入目录客户端与服务器间的文件互传代码strcat()、strcmp()、strcpy()函数的用法**fgets()、scanf()、gets()函数的用法 及区别****文件流的读出与写入(fwrite、fread)方法****

2022-05-18 19:21:37 1720

原创 socket网络编程——通过输入参数区分服务器与客户端

socket网络编程——通过输入参数区分服务器与客户端文章目录socket网络编程——通过输入参数区分服务器与客户端源码源码服务器和客户端共用一套源码,根据输入参数的不同,分别启动服务器线程或客户端线程#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/socket.h>#include <neti

2022-05-07 20:56:59 487

原创 两步解决VirtualBox共享文件夹问题

主机Windows系统进行共享文件夹设置添加并设置共享文件夹的路径和名称,设置挂载点虚拟环境设置进入虚拟机,打开新终端(方法:ctrl+alt+t),输入mkdir share_dir命令,创建一个共享文件夹share_dir输入命令 ls -ll 查看创建信息:通过命令 sudo mount -t vboxsf Share share_dir 实现将windows下的共享文件夹Share(也就是D/BOX/share)挂载到当前目录share_dir验证虚拟机终端继续输入指令 e

2022-05-07 20:08:58 2279

原创 socket网络编程——两个终端共用一份代码,先启动的做服务器,后启动做客户端

socket网络编程——两个终端共用一份代码,先启动的做服务器,后启动做客户端 两个终端,先运行的作为服务器,后运行的作为客户端:这样两个终端的代码基本一致,不同点在于端口号的不同,通过端口号来区分两个终端。其中的实现代码,应考虑先创建两个线程,主线程放服务器程序,子线程放客户端程序。利用connect()的返回值来确定当前是否已开启服务器端,需要将connect()放在子线程中【针对错误以结束线程的方式结束,否则系统会直接退出】在运行过程中,为了保证每个终端只有一个身份(要么是客户端,要么是服务器),因

2022-04-26 21:13:46 1030

原创 linux中pycharm获取管理员权限执行编译运行代码

pycharm 获取管理员权限一、创建.sh二、设置当前用户执行sudo python时免密码三、pycharm项目中配置环境一、创建.sh通过 which python (查看系统安装的版本,若是python3就输入python3)获取python指令的所在路径:$ which python3/usr/bin/python3如上所示,得到python3所在的路径 /usr/bin/python3 ,创建 ~/bin/python3-sudo.sh(不限制所在的路径),.sh中写入以下内容(

2022-04-01 17:57:44 4140

原创 socket网络编程——多线程并发,多客户端与服务器交互

多客户端与服务器数据互发基于上几节描述,本节进行多客户端与服务器的数据互发。创建服务器,每当一个新的客户端与服务器建立连接后,创建新的线程用于与客户端进行数据交互与处理;每个客户端同样创建线程,主线程用于发数据,子线程用于读数据文章目录多客户端与服务器数据互发server端client 端编译运行输出server端#include <stdio.h>#include <stdlib.h>#include <string.h>#include <u

2022-03-28 19:13:42 1715

原创 socket网络编程——多线程并发服务器

多线程并发服务器线程作为程序执行的最小单位,一个进程中可以拥有多条线程,所有线程可以共享进程的内存区域,线程通常在运行时也需要一组寄存器、内存、栈等资源的支撑。文章目录多线程并发服务器说明server端client端pthread_creat()说明在使用线程模型开发服务器时需考虑以下问题:1.调整进程内最大文件描述符上限2.线程如有共享数据,考虑线程同步3.服务于客户端线程退出时,退出处理。(退出值,分离态)4.系统负载,随着链接客户端增加,导致其它线程不能及时得到CPUserv

2022-03-26 10:35:39 2505

原创 socket网络编程——多进程并发服务器

多进程并发服务器进程就是一段程序的执行过程,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。文章目录多进程并发服务器说明server端client段说明使用多进程并发服务器时要考虑以下几点:1.父进程最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符)2.系统内创建进程个数(与内存大小相关)3.进程创建过多是否降低整体服务性能(进程调度)server端#

2022-03-26 10:04:34 2131

原创 socket网络编程——错误函数封装

错误封装函数系统调用不能保证每次都成功,必须进行出错处理,这样一方面可以保证程序逻辑正常,另一方面可以迅速得到故障信息。 为使错误处理的代码不影响主程序的可读性,我们把与socket相关的一些系统函数加上错误处理代码包装成新的函数,做成一个模块错误封装函数错误封装函数错误函数源码wrap.cwrap.hserverclient错误函数源码wrap.c#include "wrap.h"/* 打印错误原因并退出 */void perr_exit(const char *s){ per

2022-03-16 20:43:36 651

原创 socket网络编程——概念篇

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-03-16 16:05:58 3150

原创 进程间通讯——FIFO篇

进程间通讯——FIFO有名管道管道没有名字,只局限于有共同祖先进程的各个进程之间。FIFO不同于管道的是有一个路径名与之相关联,允许无亲缘关系的进程访问同一个FIFO。由于FIFO是半双工的,因此FIFO不能打开来既读又写。注:1、创建并打开一个管道只需要调用pipe;创建并打开一个FIFO则需在调用mkfifo后再用open;2、管道在所有进程最终关闭它之后自动消失,FIFO的名字只能通过调用unlink才从文件系统中删除。FIFO由mkfifo函数创建:#include<sys/st

2022-03-16 10:55:43 2100

原创 进程间通讯——管道篇

进程间的通信【管道】局限于没有名字,只能由亲缘关系的进程使用。基于此,提出【有名管道(FIFO)】进行改正。在实际应用中【管道】常用于具有共同祖先的进程间。【管道】和【FIFO】都是使用通常的read和write函数访问文章目录进程间的通信客户-服务器管道全双工管道客户-服务器1.客户端从标准输入(stdin)读进一个路径名,并将其写入IPC通道(客户端与服务器之间的虚线)2.服务器从IPC通道读出路径名并打开读取对应的文件。如果服务器能打开文件:服务器读出其中的内容,并写入IPC通道,

2022-03-16 09:56:56 1150

原创 V2X车路协同技术

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档@车路协同车路协同被认为是实现无人驾驶的必要条件,现阶段随着单车智能的发展,在取得一定的成果的同时也不断暴露单车智能存在的问题,越来越多的企业开始涉足车路协同技术。智能驾驶分为感知、决策、执行三大模块。通过高精度图、雷达、摄像头、DGPS和IMU等对自身及周围环境进行感知,通过对数据的融合和处理,完成对行人、车辆及其他障碍物的检测并规划局部路径,进而实现对车辆的横纵向及加速、制动等控制。针对智能驾驶汽车这一对象而言,V2X参与了部

2022-01-05 22:25:17 15237 1

原创 基于三维点云的机器人杆件目标识别与抓取(七)

@点云数据精配准经点云数据粗配准算法SAC_IA算法或4PCS算法配准处理后,源点云与目标点云基本重合,但仍存在匹配偏差。为了降低彼此间的匹配偏差,需要在粗配准结果的基础上采用精配准处理,对当前位姿进行修正,从而提高源点云数据与目标点云数据之间的配准精度。本文采用的精配准算法为最近点迭代配准算法。提示:以下是本篇文章正文内容,下面案例可供参考ICP数据精配准2 点云数据配准实验及分析...

2021-12-28 22:25:21 1784

原创 基于三维点云的机器人杆件目标识别与抓取(六)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档@基于点云配准的场景目标杆件位姿估计1 前言本章主要介绍场景中桁架杆件目标的位姿获取方法及过程。本文采用点云数据配准的方式获取场景目标的位姿信息[50]。通过创建桁架杆件目标的模型点云数据与实际场景中识别的桁架杆件目标的点云数据进行配准,计算两点云数据之间的变换关系,进而求得实际桁架杆件目标的位姿。为了提高两组点云数据在数据配准过程中快速性和准确性,点云数据配准过程分为数据粗配准和数据精配准两部分。本文采用采样一致性算法(SAC_IA

2021-12-21 23:26:25 1021 1

原创 基于三维点云的机器人杆件目标识别与抓取(五)

@基于多层条件阈值判据的目标杆件识别前言如上节所述,基于模型特征描述匹配的目标识别方法,对场景点云数据的精度要求高,且要求识别过程视角保持不变,因此基于模型特征描述匹配的目标杆件识别方法在实际识别过程中存在适应性不足的问题。根据当前的实验条件和实验要求,考虑到桁架杆件外形特征,本文提出多层条件阈值判据的目标杆件识别方法。该方法需要针对场景点云数据子集创建最小包围盒,根据杆件特征设置不同的阈值条件,通过层层筛选,进而完成场景目标杆件的识别,通过实验验证可知,该方法能够有效实现场景杆件目标的识别且识别率较

2021-12-19 21:09:44 1236 1

原创 基于三维点云的机器人杆件目标识别与抓取(四)

@基于点云特征描述匹配的目标识别识别基于点云特征描述匹配的目标识别方法主要分为离线注册与在线识别两个过程。离线注册过程,需要创建待识别目标的模型点云,可以通过CAD模型的点云化获得,也可以通过数据采集设备获得。对获得的模型点云进行特征描述并生成特征描述文件。在线识别阶段,需要对经点云数据分割后得到的模型点云数据子集进行特征描述,分别与离线注册生成的目标特征描述文件进行特征匹配,累计投票得到预测的中心点,并计算匹配相似度,提取匹配相似度最高的点云子集,作为场景中所要识别的目标,进而完成场景桁架杆件目标的识别

2021-12-15 22:54:13 5568 1

原创 基于三维点云的机器人杆件目标识别与抓取(三)

本片博文将主要介绍几种基于点云数据的基本特征描述方法,包括:点法向量估计、点特征直方图(PFH)、快速点特征直方图(FPFH),接下来将依次对齐原理、实验及相关代码进行展示与介绍。特征描述一、点云特征描述在点云数据分割、目标识别、位姿配准、表面重建等点云数据处理算法中,点云特征描述起到尤为基础和重要的作用。根据特征的空间尺度进行分类,可分为单点、局部及全局特征。针对点云数据的局部和全局特征,目前已有很多成熟稳定的点云特征描述子对点云数据进行特征描述与表达,如图3-1所示。二、点云法线特征描述

2021-05-16 10:26:35 1173

原创 基于三维点云机器人杆件目标识别与抓取(二)

本篇博文将继续介绍点云数据的预处理内容,本篇主要介绍点云数据的分割处理。利用点云数据的轮廓、分布、几何等特征,对数据进行分割处理,并根据数据间的不同的特征对数据进行分类。点云数据分割是进行场景目标识别的前提。经数据滤波算法处理后的点云数据,对所要识别的对象而言仍存在大量无效的背景点,因此需要点云数据分割并对不同类别的点云数据进行聚类,才能更好地进行数据特征提取与识别。针对实际检测环境,本文将通过随机采样一致性分割算法(RANSAC)分割大面积场景背景,通过聚类分割算法将场景中满足要求的对象从场景点云数据中

2021-05-13 11:08:41 914

原创 基于三维点云机器人杆件目标识别与抓取(一)

从本文开始,我将近一年的课题学习与研究,已分片的形式来记录和展示。将通过这几篇博文的介绍,展示自己的学习和研究过程中采用的方法及其相关结果显示。下图所示为基于位置的机器人视觉伺服反馈控制方法,本课题侧重于视觉伺服反馈部分中的场景超长杆件的目标识别及杆件的位姿估计。本篇博文将介绍数据的采集以及数据的预处理等相关内容。一、场景数据采集点云数据通常由深度图生成,本文基于双目视觉成像原理获取深度图,红外点阵投射器将结构光投射到物体表面,左右红外相机获取左右图像,根据三角测量原理得到视差图,由视差图进而生

2021-05-13 10:43:39 1732 1

原创 欧拉角与旋转矩阵之间的相互转换

位姿的表现形式有多种,常用的有:齐次矩阵、欧拉角、四元数等。欧拉角与旋转(齐次)矩阵的之间的相互转换C++代码如下:#include "opencv2/opencv.hpp"#include <stdlib.h> /* srand, rand */#include <time.h> /* time */using namespace cv;using namespace std;#define M_PI 3.1415926 Mat R_T

2021-01-21 21:44:53 1504

原创 C++实践项目一:基于多态搭建企业员工管理系统,实现信息的增、删、改、查、排序

C++实践项目一:基于多态搭建企业员工管理系统,实现信息的增、删、改、查、排序基于多态的信息管理系统是典型的团体管理系统,对于任何存在明显的角色分工的团体和组织(学校的学生教职工、政府单位各部门等)都可以以此进行拓展,本系统是基于C++面向对象中多态与动态绑定的机制实现的。多态性的概述多态是指同样的消息被不同类型的对象接受时导致不同的行为。所谓信息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数。简单的例子:运算符使用同样的“+”就可以实现整型数之间、浮点数之间、双精度浮

2020-12-13 21:14:48 1546

原创 “初始化”: 无法从“const char [6]”转换为“char *”

针对【 “初始化”: 无法从“const char [6]”转换为“char *” 】的问题:char *output = “image”;此语句带来的问题,对于新标准来说,这是不允许的。解决方法,按如下进行修改: char text[] = "image"; char *output = text;...

2020-11-26 21:42:57 3669

原创 OpenCV(C++)实现相机/图像的畸变校正

本次主要介绍一下相机的畸变以及如何获取相机的内参以及畸变系数,从而尽可能消除畸变的影响。###什么是畸变?参考:单目摄像头标定与畸变矫正###图像校正成像过程基本分为:物理坐标变换、投影变换、畸变矫正、像素变换##畸变校正的基本流程1.采集标定板图像,大约十五张左右;2.根据使用的标定板确定标定板的内点数,找出标定板的角点坐标3.进一步提取亚像素角点信息;4.计算并获取相机的内参矩阵和畸变系数;5.畸变图像的校正修复###0.准备标定板标定板可以直接从opencv官网上能下载到:

2020-11-26 20:10:52 19448 15

原创 实现Linux(ROS)与Windows(Visual studio)信息传输通讯

目前一直在做视觉引导的机械臂目标抓取相关内容的研究。由于图像数据处理是在Window系统下进行的,而机械臂开发却是在ROS环境中开发,因此需要进行跨系统的信息通讯传输,将位姿信息传输给机械臂。在进行该部分通讯内容的学习过程中,主要参考了以下博主的工作,非常感谢~~链接: link.链接: link.链接: link.这里,介绍一下传输环境搭建的过程,便于分享学习和日后查阅。运行环境ROS: kinetic Window10: Visual Studio2017 通讯方

2020-11-11 14:55:17 3089 17

原创 Qt解决资源文件中添加图片,对应控件不显示图片的问题

//资源文件——为控件添加图标 //:/new/prefix1/image/mr.jpg QPixmap pic; //定义一个图片对象 pic.load(":/new/prefix1/a.jpg"); //给图片对象加载图片 //openaction:菜单项 saveaction->setIcon(QIcon(pic));Qt中添加资源文件中的图片部分,图片无法正常显示,如图所示,save按钮应该正常显示图片此时需要做如下操作:...

2020-11-05 22:21:44 5520 4

原创 OpenCV基于haar分类器算法的人脸检测实现(一)

近期要开展一个新项目,关于场景图像信息获取的,具体涉及到场景中人脸检测、运动目标检测以及场景中给定目标的追踪问题,后面还会涉及到信息交互的界面开发。接下来将通过写博客的方式记录项目进展(问题及解决方案)和心得。人脸检测人脸检测不同于人脸识别,人脸检测通俗的意思就是在获取是场景数据(图像、视频)中,将具有人脸特征的目标检测出来,但不清楚检测到的人脸是谁,只知道这可能是一张脸;人脸识别就是在检测的基础上,能够对检测到的人脸进行辨识,进而知道这个人是“张三”还是“李四”或是“鸣人”还是“佐助”。人脸检测/识

2020-11-05 14:33:32 790 2

原创 Qt在打印输出中文的时候出现乱码的解决方法

当在Qt中需要打印文字的时候出现乱码,例如下图所示:qDebug() << " mybutton的析构 " << endl;输出界面:解决过程如下:在对应的.cpp程序中,添加:#pragma execution_character_set(“utf-8”)如图:再次运行,则正常显示...

2020-09-23 15:48:56 5900 4

原创 无法打开输入文件“vtkIOExportOpenGL-8.1.lib” &&There‘s no Qt version assigned to project pcl_visualizer.

配置环境:win10+PCL1.9.0+VTK8.1.0+Qt5.12.0+OpenCV4.1.0在VS中运行程序进行可视化显示的时候,当出现以下错误时:1、LINK : fatal error LNK1181: 无法打开输入文件“vtkIOExportOpenGL-8.1.lib”2、如下图:这是因为VS中的 Qt VS Tools中的相关设置没有处理好。需要对其进行设置,设置如下:然后进入Qt Project Settings 模块,勾选三个模块:Core、GUI、Widgets

2020-09-21 14:19:15 1307 1

OpenCV and PCL 项目属相表.rar

上传两个文件,分别是opencv和pcl的属性表,免得自己配置环境,直接调用现有的属性表,然后创建文件就可以了。

2019-08-25

PCL深度可视化图像Point cloud visualization_2plus.rar

点云数据可视化深度显示文件,包括pcd文件,相关的cpp程序,以及经过编译后生成的一系列执行文件。

2019-08-25

CMakeLists.txt

Cloud before projection: 1.28125 577.094 197.938 828.125 599.031 491.375 358.688 917.438 842.563 764.5 178.281 879.531 727.531 525.844 311.281 Cloud after projection: 1.28125 577.094 0 828.125 599.031 0 358.688 917.438 0 764.5 178.281 0 727.531 525.844 0

2019-08-18

空空如也

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

TA关注的人

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