自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 收藏
  • 关注

原创 对偶四元数表示空间旋转和平移

常规四元数只能表示空间旋转变换,它的数学形式为q= [cos(θ/2)nxsin(θ/2)nysin(θ/2)nzsin(θ/2)],其中单位向量[nxnynz]表示通过原点的旋转轴,θ表示旋转角度。对偶数的概念类似于复数,它的数学形式为ẑ=r+dε并满足ε2= 0,其中r和d分别表示实部和对偶部,ε表示对偶算子。对偶四元数是实部和对偶部都为四元数的对偶数,又可称为八元数。常...

2019-10-28 14:23:47 5488

原创 cJSON_Print一定要显式释放内存

cJSON_Print会申请内存,使用完后一定要free掉。char* pstr = cJSON_Print(json);...free(pstr);pstr = NULL;血的教训。。。。。。

2019-08-20 17:01:54 2023

转载 EPSON机器人固定下相机自动标定及下相机纠偏抓取程序

Function VisionCalib_FIXEDUP '固定下相机自动标定 Integer i Double X_Distance, Y_Distance X_Distance = 10 '9宫格X偏移量(设太大可能超出CCD视野) Y_Distance = 10 '9宫格Y偏移量(设太大可能超出CCD视野) String buff$ ...

2019-08-20 16:51:14 1997

原创 Halcon实现一维DBSCAN算法

procedure DBSCAN (: : Props, Epsilon, MinPoints: Classification)* initl := |Props|tuple_gen_const(l, 0,clusters)tuple_gen_const(l, 0, points)tuple_gen_const(l, 1, pointTypes)tuple_gen_const(l, ...

2019-08-20 16:47:08 805

转载 深度解析工业机器人主流离线编程软件

转自微信公众号“工业机器人”通常来讲,机器人编程可分为示教在线编程和离线编程。我们今天讲解的重点是离线编程,通过示教在线编程在实际应用中主要存在的问题,来说说机器人离线编程软件的优势和主流编程软件的功能、优缺点进行深度解析。示教在线编程在实际应用中主要存在以下问题:1、示教在线编程过程繁琐、效率低。2、精度完全是靠示教者的目测决定,而且对于复杂的路径示教在线编程难以取得令...

2019-04-12 11:30:25 5414 1

转载 工业机器人在线示教编程和离线编程

工业机器人的应用极大地提高了工厂的生产效率,在帮助企业应对人工成本上涨、劳动力供给不足等方面提供了可供选择的方式,赢得了企业的广泛关注。目前,机器人广泛应用于焊接、装配、搬运、喷漆、打磨等领域。目前常用的编程方式有两种:一种是示教编程,一种是离线编程。离线编程因为相对于示教编程具有许多优势,应用范围日趋广泛。协作机器人示教编程示教编程特点:需要实际机器人系统和工作环境编程...

2019-04-11 16:09:30 11995

转载 颜色校正CCM

概要:1 CCM定义及出现的原因;2 CCM的算法设计;3 注意事项1. CCM是什么以及出现的原因1.1 CCM是什么Color Correction Matrix (CCM)是一个由至少俩矩阵合在一起的矩阵。如图1所示一般的ISP流程,在去马赛克过后就进行了CCM。之后再进行Gamma校正。图 1 ISP示例Gamma之后ISP中的空间就变成了非线性sRGB空间了。...

2019-03-27 13:32:10 16944 2

原创 halcon实现rpy转换旋转矢量函数

procedure rpy2rotvec (: : vec: rx, ry, rz) tuple_cos (vec, Cos) tuple_sin (vec, Sin) create_matrix (3, 3, [Cos[2], -Sin[2],0,Sin[2],Cos[2],0,0,0,1], Y) create_matrix (3, 3, [Cos[1],0, Sin[1],0...

2019-03-12 10:28:17 1211

原创 ur机器人计算相对位姿

已知MInB0,PInB0, 计算PInMBInM0 = pose_inv(MInB0)PInM = pose_trans(BInM0,PInB0)根据以上结果,已知MInB,计算PInBPInB = pose_trans(MInB,PInM)注:pose_trans(pa,pb)即pa*pb

2019-03-07 14:50:50 1881

原创 halcon 脚本代码实现简单的一维kmeans算法

kmeans(:: Props, K, Num : Classification)N := |Props|-1Seeds :=[]for i := 0 to K-1 by 1 tuple_rand(1,Rand) tuple_floor(Rand*N,seed) tuple_int(seed,seed) tuple_find(Seeds,seed, Ind...

2019-02-19 15:06:58 1385

转载 Halcon运算符

Halcon语言输入控制参数可以是表达式,但图形参数、输出参数均应为变量;String类型变量由单引号’括起来;此外还有一些特殊字符;Boolean型变量包括 true ( = 1 )、 false ( = 0 ) ;不为零的整数将被认为true;但绝大多数的Halcon函数接受字符串型的表达:’true’‘false’,而非逻辑型表达;函数返回常量用于标识错误:Ø H_MSG...

2019-02-19 14:21:59 3158

原创 halcon获取窗口图像

Write the window content to a file.dump_window( : : WindowHandle, Device, FileName : ) Write the window content in an image object.dump_window_image( : Image : WindowHandle : )

2019-01-19 13:01:52 4882

转载 Linux 常用网络命令

网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看 linux 服务器 ip 地址,管理服务器网络配置,通过 telnet 和 ethernet 建立与 linux 之间的网络链接,查看 linux 的服务器信息等。下面让我们看看在...

2019-01-18 15:58:28 345

原创 qt使用sqlite出现的错误记录

1. create table时提示 unable to fetch row No query的错误信息 sql语句多加了“”,去除掉2.执行时提示"Driver not loaded"错误信息qt插件路径没设置,通过export 命令设置export QT_PLUGIN_PATH=路径 ...

2019-01-07 16:06:52 1447

转载 制作Linux下程序一键安装包

简介  制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了。一般这个后部分的文件是个压缩包,那样,就能够打包很多文件了,在脚本中解压出来即可。这就是Linux那些bin啊run啊等安装脚本的简单制作了。制作run程序安装包run程序安装包实质上是一个安装脚本加要安装的程序,如下图所示:这样整个run安装包结构就一目...

2018-10-19 16:20:42 2988

原创 Halcon与Opencv在QT CREATOR混合编程头文件引用顺序问题

用Halcon与Opencv在QT中混合编程时,遇到一个奇怪的问题。当头文件引用顺序如下时#include <HalconCpp.h>#include <opencv2/opencv.hpp>编译项目会提示有关core.hpp 和stringfwd.h的238个错误。解决方法为将两个头文件的引用顺序对调:#include <opencv2/ope...

2018-09-21 15:58:27 467 1

转载 使用Virtual Box时无法启动虚拟机提示:Start tag expected

使用Virtual Box时无法启动虚拟机 提示:virtualbox “Start tag expected, ‘<’ not found.&q解决办法: 进入虚拟机所在的文件夹,查看*.vbox文件的大小。 如果 *.vbox文件的大小为0,复制*.vbox-prev文件重命名为*.vbox文件。 重启 virtualbox。转载原文:http://blog.si...

2018-09-20 15:00:12 596

原创 robotics专项课Estimation and Learning assignment 3: Occupancy Grid Mapping

% Robotics: Estimation and Learning % WEEK 3% % Complete this function following the instruction. function myMap = occGridMapping(ranges, scanAngles, pose, param)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%...

2018-05-02 13:49:27 618 1

原创 robotics专项课程Estimation and Learning Assignment 2: Kalman Filter⎼Target Tracking

Where:X is state (for ex., 4x1 vector: {x ;y; vx ;vy} )P is state covariance matrix (for ex., 4x4 matrix)A is transition matrix for velocity term (for ex., 4x4 matrix)B is transition matrix for accele...

2018-04-28 14:36:19 332

原创 robotics专项课程Perception Assignment 4: Structure from Motion

function F = EstimateFundamentalMatrix(x1, x2)%% EstimateFundamentalMatrix% Estimate the fundamental matrix from two image point correspondences % Inputs:% x1 - size (N x 2) matrix of points i...

2018-04-22 14:14:46 604

原创 robotics专项课程Perception Assignment 3: Image Projection

function [ corners ] = track_corners(images, img_pts_init)%TRACK_CORNERS % This function tracks the corners in the image sequence and visualizes a% virtual box projected into the image% Inputs:%     i...

2018-04-19 21:53:02 767

原创 robotics专项课程Perception Assignment 2: Image Projection(图像投影)

文档中错误更正:1. 公式(14)中x3=1                            2. A为8x9矩阵                            3. reshape后H矩阵需转置function [ H ] = est_homography(video_pts, logo_pts)% est_homography estimates the homography t...

2018-04-18 14:48:11 679

原创 robotics专项课程Perception Assignment 1:Dolly Zoom(滑动变焦)

function [ f ] = compute_focal_length( d_ref, f_ref, pos )%% Compute camera focal length with given camera position.  % % In this function, multiple camera positions will be given. The camera is% plac...

2018-04-17 11:25:40 1208 5

转载 高级系统架构师培训笔记

前几天参加了中科院计算所培训中心谢老师的高级系统架构师培训课程,将其中的一些点做了下记录:系统架构师的工作是复杂设计总体解决方案以及领域对象的逻辑和物理布局,这是一项在复杂环境中高风险、高影响力的活动。1、软件架构的定义:软件架构(Software Architecture)也称之为软件体系结构,它是一组有关如下要素的重要决策:软件系统的组织,构成系统的结构化元素,接口和它

2015-11-12 08:59:08 419

转载 C++重载运算操作符示例

以下示例中定义了一个class test, 重载了>等符号:#include#includeusing namespace std;class test{public: int v; /*构造函数*/ test():v(0){} test(const int &a):v(a){} test(const test &t1):v(t1.v){

2015-04-29 10:38:49 378

转载 MySQL C API函数大全

Mysql C API提供函数主要分为如下五种:1. 控制类函数2. 信息获取类函数3. 行列类操作函数4. 线程类操作函数5. 出错处理类函数本文归纳了C API可使用的函数,具体用法,参考文末地址中对应条目,均有详细说明。函数描述mysql_affected_rows()返回

2015-04-27 11:56:21 439

原创 BasicExcel另存为中文文件名出错的解决

wcstombs使用需要设置中文环境,具体修改代码如下:bool Block::Create(const wchar_t* filename)// PURPOSE: Create a new block file and open it.// PURPOSE: If file is present, truncate it and then open it.// PROMISE: Ret

2015-04-24 14:25:02 667

转载 Debug 运行正常,Release版本不能正常运行

引言     如果在您的开发过程中遇到了常见的错误,或许您的Release版本不能正常运行而Debug版本运行无误,那么我推荐您阅读本文:因为并非如您想象的那样,Release版本可以保证您的应用程序可以象Debug版本一样运行。 如果您在开发阶段完成之后或者在开发进行一段时间之内从来没有进行过Release版本测试,然而当您测试的时候却发现问题,那么请看我们的调试规则1:规则1:

2015-04-24 10:54:34 1033

转载 STL所有算法介绍

STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象。    STL中算法大致分为四类:        1、非可变序列算法:指不直接修改其所操作的容器内容的算法。        2、可变序列算法:指可以修改它们所操作的容器内容的算法。        3、排序算法:包括对序列进行排序和合并的算法、搜索

2015-04-15 14:49:54 587

原创 stl系列(11):求并集

STL算法中的set_union可以求两个集合的并集,示例代码如下:#include #include using namespace std;int main(){ vector a,b; for(int i=0; i<100; i++) { a.push_back(i); b.push_back(i+20); } vector c(200); vector::

2015-04-14 14:26:34 373

原创 stl系列(10):求交集

STL算法中的set_intersection可以求两个集合的向量,代码示例如下:#include #include using namespace std;int main(){ vector a,b; for(int i=0; i<100; i++) { a.push_back(i); b.push_back(i+20); } vector c(100); v

2015-04-08 13:22:29 514

转载 STL系列(9):容器适配器

STL 中包含三种适配器:栈stack 、队列queue 和优先级priority_queue 。  适配器是容器的接口,它本身不能直接保存元素,它保存元素的机制是另一种顺序容器去实现,即可以把适配器看作“它保存一个容器,这个容器再保存所有元素”。 STL 中提供的三种适配器可以由某一种顺序容器去实现。默认下stack 和queue 基于deque 容器实现,priority_queue

2015-04-01 13:46:42 311

原创 C++ vector 计算自相关性函数selfcorr

简单实现如下:templatevoid selfcorr(vector src, vector& dst){size_t len = src.size();for(size_t i=0; i{T temp = 0;int d = len-1-i;for(size_t j=0;j{temp += src[j]*src[d+j];}dst.push_

2015-04-01 13:42:08 1287

转载 STL系列(8): Sets & MultiSets

集合(Set)是一种包含已排序对象的关联容器。多元集合(MultiSets)和集合(Sets)相像,只不过支持重复对象,其用法与set基本相同。 1.begin() 返回指向第一个元素的迭代器 2.clear() 清除所有元素 3.count() 返回某个值元素的个数4.empty() 如果集合为空,返回true 5.end() 返回指向最后一个元素的迭代器6.equa

2015-03-29 11:56:39 251

转载 STL系列(7): 关联容器特点

set, multiset, map, multimap 是一种非线性的树结构,具体的说采用的是一种比较高效的特殊的平衡检索二叉树—— 红黑树结构。因为关联容器的这四种容器类都使用同一原理,所以他们核心的算法是一致的,但是它们在应用上又有一些差别,先描述一下它们之间的差别。set 又称集合,实际上就是一组元素的集合,但其中所包含的元素的值是唯一的,且是按一定顺序排列的,集合中的每个元素

2015-03-27 16:38:52 542

转载 STL系列(6):vector list deque比较

vector 是一段连续的内存块,而deque 是多个连续的内存块, list 是所有数据元素分开保存,可以是任何两个元素没有连续。  vector 的查询性能最好,并且在末端增加数据也很好,除非它重新申请内存段;适合高效地随机存储。  list 是一个链表,任何一个元素都可以是不连续的,但它都有两个指向上一元素和下一元素的指针。所以它对插入、删除元素性能是最好的,而查询性能非常差;适合大

2015-03-27 12:43:28 241

转载 STL系列(5):vector 删除重复元素

STL提供了很多实用的算法,这里主要讲解sort和unique算法。删除重复元素,首先将vector排序。sort( vecSrc.begin(), vecSrc.end() );然后使用unique算法。 vecSrc.erase( unique( vecSrc.begin(), vecSrc.end() ), vecSrc.end() );unique返

2015-03-26 15:28:37 302

转载 STL系列(4):Deque 双向队列

deque是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪。向deque 两端添加或删除元素的开销很小。它不需要重新分配空间,所以向末端增加元素比vector 更有效。  实际上,deque 是对vector 和list

2015-03-26 10:50:08 281

转载 STL系列(3):List 双向链表

List是一个线性链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有序的元素链接起来。  由于其结构的原因,list 随机检索的性能非常的不好,因为它不像vector 那样直接找到元素的地址,而是要从头一个一个的顺序查找,这样目标元素越靠后,它

2015-03-26 10:41:52 275

转载 STL系列(2):Vector 向量容器

vector是一个线性顺序结构,相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组。 在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即capacity() 函数的返回值。当存储的数据超过分配的空间时vector 会重新分

2015-03-24 16:11:03 311

c++ event示例

If you want to create a C++ class that calls clients' functions (events), you can do that in two ways. The first way is to call a global function through a function pointer that is a private member of your class. The client has to set that function pointer if it wants to handle that event. So, your class has two constructors, one with a function pointer and the other without it. If the client wants to handle an event, it has to create an instance of your class with the constructor that has a function pointer as the argument. The second way is to call a class member function of the client class through the interface that is provided with your class package. The client has to inherit that interface and implement an event function if it wants to handle that event. So, your class has two constructors, one with an event interface pointer and the other without it. If the client wants to handle an event, it has to create an instance of your class with the constructor that has a function pointer as the argument; for example, "CEvent(this)". Here is the code for both ways。

2014-11-28

空空如也

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

TA关注的人

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