自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 KDL机器人库的使用

本文介绍了两种构建机器人运动学模型的方法:1)使用关节向量和连杆参数直接定义;2)采用标准DH参数法。详细说明了DH参数的四个要素(α、a、d、θ)及其物理意义,并给出了具体的代码实现。文章还展示了基于KDL库的正向和逆向运动学求解过程,包括关节空间到笛卡尔空间的转换(JntToCart)及其逆过程(CartToJnt)的具体实现方法,为机器人运动学建模提供了实用参考。

2025-11-14 08:10:49 444

原创 RL机器人人库使用简介

本文介绍了机器人开发框架的主要模块及其应用实现。框架包含硬件抽象层、运动学算法、数学模型、运动规划等核心模块。通过ABB IRB-4600机器人模型的XML文件加载,展示了系统初始化过程,包括场景构建和模型加载。详细说明了关节坐标和世界坐标的获取方法,以及通过正/逆运动学实现关节操作和世界坐标操作。在界面更新方面,实现了机器人3D模型与仿真模型的同步显示。文中还提到了使用NloptInverseKinematics算法处理逆向运动学问题,为机器人控制提供了完整的解决方案。

2025-11-12 14:47:42 246

原创 socket异步连接超时异常

这一段是出问题的read代码,问题就在于recv偶发性的会返回-1,但大多时候errno为0,偶尔会是22,经几番测试和验证发现这种情况下返回-1后不影响再次接收,使用while循环接收数据。1.使用异步connect-select方式实现的连接超时功能不能正常工作了,但使用setSocketOpt设置接收超时的功能正常了。经过排查发现异常出在两处。以上这段代码是出问题的代码,这段代码中connect返回了-1,并且select 函数也会返回-1导致功能无法正确实现。

2025-10-28 11:33:39 209

原创 opencv模版匹配

opencv模板匹配网上的实现方式不少,但大多在特定的应用场景中表现还不错,负责的场景中表现都不如意,特别是有角度要求的模板匹配。本文介绍了一种使用opencv模板匹配的方式,大大提高了应用场景的适应性和匹配的准确率。(注:PCB板芯片匹配目前测试情况看准确率还没有达到100%)

2025-10-23 17:04:51 346

原创 RCNN系列网络的理解

RCNN, FAST RCNN, FASTER CNN, MASK RCNN

2023-10-16 16:55:24 283

原创 libtorch之cv::Mat和Tensor的互转

使用c++ libtorch开发, cv::Mat和torch::Tensor的数据互转

2023-09-27 20:01:12 663

原创 libtorch之tensor的使用

它将b的第3个围堵作为c的第一个维度,b的第二个维度作为c的第二个维度,b的第一个维度作为C的第三个维度,所以c的维度是5x5x3。这里需要申明的一点,这里只是数据维度的调整,并没有调整数据存储空间,tensor数据的存储是线性存储的。通过下标的访问,返回的是一个tensor对象,即使是最后一维元素也是,无法得到像float,int这样的数据类型,需要使用的tensor的item函数获取。tensor的拼接有两种基本形式的拼接,一种是stack式的扩展维度,另一种是cat形式的在某个维度上的连接。

2023-09-26 09:28:47 703

原创 通用插件框架体系-媒介系统

在实际的项目中,很多场景需要我们在不知道对象具体类型的情况下构建拷贝对象、复制数据、归档数据等。如在一个基础类库中管理了诸多的派生类,这些类是以基类类型指针或无类型指针管理的。另一种典型的场景是基础类库中要跨线程复制和拷贝数据时。这些场景有一个典型的特点是基础类库不知道派生对象的具体类型。媒介系统就是要建立一套机制,在这种场景下构建对象和归档对象。这一种需求类似于c++的运行时类型鉴定(RTTI),但又超越了运行时类型鉴定提供的能力。

2022-12-19 07:23:01 394

原创 通用插件框架体系-日志系统

日志,作为一个基功能有着广泛的应用,本文介绍了一种日志系统的实现,同时支持windows和linux两种平台。首先实现了一个基本的类CTrack,再以这个类为基础提供了一个对外的接口Track,之后再定义了各种宏,方便模块的使用。

2022-12-17 09:23:07 614 1

原创 halcon一维测量

halcon的一维测量核心步骤如下:1.通过一个矩形ROI创建测量对象,他的ROI是一个Rect2矩形,将在这个矩形phi方向上测量。2.调用单个尺寸测量或多个尺寸测量。3.关闭测量对象。代码如下:void TestProc1D(QWidget *w){                 QSize size = w ->size();          

2015-07-01 21:29:05 3515

原创 光学测量的精度

决定光学测量系统的精度,有哪些要素呢?首先我们看相机,相机的像素,诸如3876x2584这样的数据,更有直观放入表述叫100,500,800万像素。另一个是视场,视场诸如100cm X 80cm等,是拍摄对象真实的尺寸,这个视场的大小与镜头的放大、缩小倍数有关(更直接的说与焦距有关)。接下来我们看视觉分辨率,若100cm的距离成像到3876个像素上,那么在这个方向的分辨率就是100/3876

2015-07-01 21:07:58 4436

原创 halcon二维测量

halcon二维测量的基本步骤1.图片预处理,这里指的是图片的滤波等手段,使要测量的特征凸显化,有效去除噪点干扰等。2.阈值化,通过阈值化抽取出图像的特征,通常使用灰度阈值化,但halcon中没有特意的将图片转换成灰度图,而是直接调用阈值化处理函数。同时灰度直方图能帮助开发人员快速找到阈值范围。3.阈值化之后是求解图片的联通区域,一般阈值化之后存在很多连通区域,还要使用select_s

2015-06-29 21:43:09 7913 1

原创 PCM转WAV

//.H**********************************************************class QPcmToWav : public QObject{    Q_OBJECTpublic:    QPcmToWav(QObject *parent = 0);    void setFormat(const QAudioFormat

2015-03-07 11:10:38 590

原创 Qt动态重生类厂

class QConstructHelper{public: virtual void * create() = 0;};templatetypename T>class QMetaTypeConstructHelper : public QConstructHelper{public: QMetaTypeConstruct

2015-03-07 11:07:57 617

原创 简单通用数据访问映射层

与简单数据访问层配合的命令道SQL语句的映射层,目标构建通用代码,使用不同的配置文件完成不同数据访问功能。

2015-03-07 11:02:53 671

原创 简单通用数据访问层

使用Qt实现的简单的通用数据访问层,方便构建通用数据访问。

2015-03-07 10:58:29 891

原创 树的非递归深度优先遍历

void GZLTBydDataExt::readFromXml(QDomElement & secondElem){ //QDomElement elem = secondElem.firstChildElement(); //while(!elem.isNull()) //{ // this->readMathData(elem);

2015-01-26 20:46:22 992

原创 c++中带空格路劲的处理

处理的原则是使用一个双引号将这个路劲包含,但c++中双引号是一个关键字符,所以必须使用转义字符完成这一功能。见代码:QString str;if(data.opt.contains(" ")){     str = QString("\"%1\"").arg(data.opt);}else{     str = data.opt;}Q

2014-12-04 21:06:45 1931

转载 字符串相似度

这个算法来源于网上,但忘记了出处,对其使使用了isSame封装,然后用在了自己的网页数据抓取代码中。//求解两个字符串的相似度int calculateStringDistance(const string &strA, const string &strB){ int lenA = (int)strA.length()+1; int lenB = (

2014-12-04 20:59:51 631

原创 mfcc

在研究MFCC算法时,从网上下了一份代码,经过小改编译通过了,可程序一跑就蹦,费了好几天的功夫也没找到问题的原因。化了一个月的时间边看资料,边整理代码,参照原有代码自己实现了一份。目前代码调通了,还没有能力验证结果的正确性。     这里使用的FFT算法是从网上下载的。稍后也将其附上。欢迎有MFCC经验的朋友帮忙指正其中存在的问题。      #ifndef MFCC_

2014-12-04 20:47:26 1066

原创 定时关闭消息对话框

class QTimeDialog : public QDialog{public:    QTimeDialog (const QString & str,QWidget *parent = NULL);    ~QTimeDialog ();    static void show(const QString & msg, QWidget *parent = NULL)

2014-12-04 20:34:05 539

原创 c++数值处理

1.浮点数的比较2.防止被除数为0情况1.浮点数的比较不可以直接比较,需要给定一个差值判断两个浮点数相减的结果是大于还是小于这个差值  bool operator>(double d1,double d2)  {       double diff = 0.00000001;       if(d1 - d2 > diff)return true;       

2014-12-04 20:29:24 754

原创 Qt文件日志

#include class CFileMessageHandler{public: CFileMessageHandler(); ~CFileMessageHandler();protected: static void myMessageOutput(QtMsgType type, const QMessageLog

2014-12-04 20:22:24 818

原创 菜单式弹出窗体

弹出式窗体他的要求如下: 1.点击按钮弹出这个窗体在按钮旁边,并可编辑内容。 2.鼠标点击其他地方(非弹出窗体),这个窗体关闭注意:1.这里基类必须是QDialog. 2.创建他时必须指定parent. 3.这个窗体必须new出来。//头文件class GTZLSetWidget : public QDialog{

2014-12-04 20:17:07 640

原创 工具栏按钮下拉菜单

Qt, execl工具栏按钮下拉菜单的实现,创建一个弹出式菜单,将其弹出的位置设置在按钮的下面。

2014-12-04 20:11:09 2239

原创 简单观察者模式

Qt,使用模板方式实现的观察者模式。

2014-12-04 19:50:36 546

原创 离散余弦变换DCT

离散余弦变换的函数如下:void DCT(double *data,int len,double * dct,int dctnum){    //double temp[100];    //memset(temp,0,100*sizeof(double));    //memcpy(temp,data,len*sizeof(double));    d

2014-11-02 16:28:49 812

原创 mel滤波器算法设计

什么是mel滤波器呢?mel滤波器是在mel频率上均匀分布的三角滤波器        mel频率与时域频率之间的关系是:        me滤波器在mell频率上均匀分布,那么他的带宽是:        知道了中心平率,可以换算成时域频率:          mel滤波器的传递函数如下:    实现代码如下:#ifndef MEL

2014-11-02 16:25:59 6036

原创 QTreeView实现复选框

好久没有关注这些细节了,竟然记得butai

2014-10-09 15:08:57 1182

原创 基于OPENCV 一维条码识别源码。

#include "stdafx.h"#include "opencv/cv.h"#include "opencv/highgui.h"#include "opencv/cxcore.h"#include "TestBarCode.h"#include #include "PointTrans.h"#include #include us

2014-09-30 07:48:39 8457

原创 两个在多线程环境下使用的小工具类

templateclass QThreadSelfQueue{public:    QThreadSelfQueue(){}    void push(T * p){        m_semaphore.release();        m_list.push_back(p);    }    T* pop(int timeout = -1)

2014-09-30 07:21:57 521

原创 Qt QTcpServer的使用

Qt集成许多小工具类,使开发者使用起来十分

2014-09-30 07:05:22 961

原创 敏捷开发—用户故事

1.1. 敏捷开发的目的质量风险前移适应需求变化及时总结、思考和促进团队成长。  2.      User story和需求列表的不同需求栈通常如下:序号功能详细描述1功能1…………………………………………2功能2…………………………………

2014-08-14 20:08:00 1445

原创 高并发服务器设计总结2

高性能服务器设计总结(2)       服务器和客户的通讯,存在两种基本的情况,1.      客户到服务器。2.      服务器到客户。 基于消息的通讯系统,特别是在HTTP之上实现的诸如soap,xmlrpc,xmlpp等,这些都是短连接,易于构建从客户到服务器的通讯,但服务器要主动向客户发数据就没那么容易,原因是客户可能在子网或是子网的子网中。基于短连接的通讯也可变

2014-04-27 11:09:36 750

原创 回忆成都之行

迫于西安就业形势的压力和对成都的向往,4月17日简短的成都之行给我留下了不少值得思考的地方。1.       向往成都,到底向往什么?2.       现实与理想中的成都存在反差时,应如何面对?3.       做一件事情如何让理性的决策战胜感性的决策? 实话说,在我出行之时我还没有考虑清楚第一个问题和第二个问题,只是抱着一腔的热情和向往踏上了去往成都的路,头脑中呈现的成都和现

2014-04-27 11:00:53 1116

原创 高性能服务器设计总结(1)

高性能服务器设计在高性能服务器设计中首先应保持一下几个原则1.       对线程不是越多越好,原则上应和CPU核数相等,这是为什么呢?线程数超过了CPU核数,执行时的环境切换将耗去不少的CPU资源。2.       能不用锁最好,即是用,锁锁定的线程越少越好。推存仅在两个线程间使用锁,锁锁定的仅是数据,千万不要去锁定函数,锁定函数锁的作用域无法良好控制。锁锁定的粒度越小越好,

2014-04-07 08:19:54 759

原创 一次糟糕面试的思考

1.      沟通原则之一,在沟通过程中发现对方问的问题有问题时,应在融洽的气氛中当面指出,事后想找机会指出是无力的,并且可能没有这样的机会。但切记不要将这一切变成一场争论。 2.       沟通原则之二,当对方与你针锋相对时应怎么办呢?最明智的做法首先应指明这种状态,希望双方冷静下来之后寻求新的沟通方式。若这种方法无法凑效,应立即停止沟通。 3.       沟通

2014-03-31 12:55:06 746

原创 基于opencv的一维条码识别

一. 条码图像处理过程        图像的大致处理流程如下:         1.将彩色图转变成灰度图         2.对灰度图均衡化         3.将灰度图转换成二值图         4.对二值图进行腐蚀         5.识别边界检测轮廓         6.对每一个轮廓包围的区域进行特征识别,判断是否是条码区域。    

2014-03-20 14:52:42 10531

原创 面对一个设计需求,是全新设计一个系统还是基于现有系统改造一个系统?

问题:面对一个设计需求,是全新设计一个系统还是基于现有系统改造一个系统?1.优先选择基于现有系统改造出一个系统,对现有系统的选择必须保证以下几个特点   a.类似系统。   b.成熟系统,并得到广泛认同和好评的系统。   c.已经大量应用的系统。   d.有广泛可扩展可利用的模块或资源的系统。      为什么要这样选择呢?优先需求只是一个大概,需求被提出以后如何变化和

2013-09-27 10:09:47 1134

原创 分页多表联查和效率问题

先看一个较常见的多表联查时的分页:SELECT TOP (30) T_EVENTS.EVENT_TIME,T_EVENTS.CATALOG_ID,T_USERS.USER_NAME,T_HOSTS.HOST_NAME,T_HOSTS.HOST_ADDRESS,EVENT_NAME,EVENT_CONTENTFROM T_CATALOGS,T_EVENTS,T_USERS,T_HOSTS

2013-07-31 10:34:01 1259

空空如也

空空如也

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

TA关注的人

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