- 博客(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
原创 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
原创 树的非递归深度优先遍历
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
原创 离散余弦变换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
原创 基于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
原创 敏捷开发—用户故事
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关注的人
RSS订阅