自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hi, Robotics

我的个人主页:https://liuqiangblog.github.io

原创 求解三维空间中两向量之间的夹角

问题描述:已知三维空间中的三个点P1P_1P1​,P2P_2P2​和P3P_3P3​,求向量P1P2→\overrightarrow{P_1P_2}P1​P2​​和P1P3→\overrightarrow{P_1P_3}P1​P3​​之间的夹角,要求必须能够计算出[0, 2π\piπ)之间的数值,...

2019-08-19 11:39:19 6302 1

原创 遨博Aubo-i10机器人正逆运动学公式推导及其C++编程实现

最近在项目中用到了Aubo-i10机器人,遨博机器人跟UR机器人有很多共同点,都是模块化的协作机器人,它们构形相同。但是这两家公司的机器人还是有区别的,比如Aubo机器人的第三个关节是反着转的,跟UR机器人不一样。网上有关于UR机器人的逆运动学推导过程,借鉴一番之后,自己尝试着推导Aubo-i10...

2019-07-23 09:11:33 1288 1

原创 机器人逆运动学公式推导中常用的方程求解

求方程:sin(θ)=asin(\theta)=asin(θ)=a 则有,cos(θ)=±1−a2cos(\theta)=\pm \sqrt{1-a^{2}}cos(θ)=±1−a2​ 故,θ=atan2(sin(θ),cos(θ))=atan2(a,±1−a2)\theta=atan2(si...

2019-07-22 21:05:04 902 0

原创 编译magnum-integration出现_ZGVZN5boost6system15system_categoryEvE24system_category_instance链接错误的解决方法

编译错误输出内容如下: [ 11%] Building CXX object src/Magnum/BulletIntegration/CMakeFiles/MagnumBulletIntegration.dir/DebugDraw.cpp.o [ 22%] Building CXX object...

2020-05-09 20:44:11 43 0

原创 C/C++中动态数组与静态数组之间的转换

在C/C++中,有时候会存在从C数组T array[N]转换到C++动态数组std::vector<T>的需求,此时我们可以使用如下的方式来实现: int arr[] = {1, 2, 3, 4, 5, 6}; std::vector<int> vec(arr, arr +...

2020-05-08 09:19:47 57 0

原创 RobWork框架编程(4):对机器人的当前状态进行碰撞检测

碰撞检测功能在机器人的运动规划技术中是必不可少的,毕竟机器人所处的真实环境是如此的复杂,而我们却要获取机器人无碰撞的运动轨迹。 运动规划算法通常比较流行的有两类:一类是基于采样的运动规划算法,如大名鼎鼎的OMPL运动规划库,另外一类就是各种基于优化的运动规划算法,如伯克利开源的TrajOpt算法等...

2020-05-05 21:01:29 68 0

原创 RobWork框架编程(3):给RobWorkStudio可视化仿真平台集成通讯功能

整个RobWork机器人框架(包括RobWorkStudio模块)都不提供进程间通讯的功能,导致与机器人应用相关的算法开发和调试很麻烦,毕竟对于一个功能比较完善的仿真软件来说,每一次的编译都是比较耗时的。而我们每次对代码的修改都是少量的。此时,可以考虑将RobWorkStudio仿真平台当作一个服...

2020-05-04 07:22:52 55 0

原创 RobWork框架编程(2):使用雅可比数值迭代算法对机器人进行逆运动学求解

在上一篇博客文章中,我们介绍了如何创建一个使用RobWork机器人框架的工程,以及如何加载机器人设备文件。 接下来,在本篇博客中,我们将讨论如何使用RobWork求解UR3机器人的运动学逆解,使用的方法是通用的雅可比数值迭代方法,数值迭代算法虽然没有封闭解(也叫解析解)算法计算的结果精确,求解的速...

2020-05-03 23:47:02 103 0

原创 RobWork框架编程(1):加载XML格式的UR3机器人设备文件

RobWork框架是一个非常成熟的开源机器人框架,其主要由南丹麦大学开发和维护,该框架的开发受到欧盟的经费支持,至今已有十多年历史,比大名鼎鼎的ROS的历史还要悠久。 RobWork的安装方法有两种,一种是通过PPA进行二进制安装,另一种是源码安装。通常,如果你只是想简单的体验一把,可以直接进行二...

2020-05-03 21:50:06 90 0

原创 VTK版本的HelloWorld,使用vtkNew创建对象

本篇博客介绍的是VTK版本的HelloWorld,没什么技术含量,目的是记录创建一个VTK项目的重复性操作,以及基本的VTK可视化渲染管线的基本知识。 VTK的可视化渲染一般都经历如下图所示的几个步骤: CMakeLists.txt cmake_minimum_required(VERSION ...

2020-04-22 11:28:56 73 0

原创 消息库zeromq的源码编译及其简单使用

作为一个致力于研究机器人仿真软件的机器人工程师,研究一下进程间通信是很有必要的。 当前机器人技术在各行各业的渗透处于快速上升阶段,诸多传统行业的公司都在转型升级中,尤其是今年(2020年)的新冠疫情,让我们看到了机器人和无人工厂的另外一个优势。我们会看到地产商成立了机器人公司,卖饮料的成立了机器人...

2020-04-19 23:22:12 100 0

原创 ubuntu16.04下gcc/g++多版本共存和切换(11/14/17/20),以及在CMake文件中的相关设置

今天发现GitHub的PCL点云库的1.10.0版本已经发布快一个月了,这刚好离我在家隔离快一个的时间差不多。果断下载其Release版本使用cmake配置编译选项并进行编译,结果发现问题怎么这么多。其实,如果不编译CUDA和GPU相关的模块的话,一般也不会存在什么问题。 结果当我我选择编译CUD...

2020-02-19 10:08:59 396 0

原创 Halcon的HObject和OpenCV的Mat之间数据的相互转换

之前,一直使用的是开源界久负盛名的开源计算机视觉算法库OpenCV,毕竟拥抱开源是时代的潮流,更何况OpenCV也确实香。不过,早就听说过商业应用领域的机器视觉工具Halcon,但是一直都没有去尝试使用,主要还是觉得不开源的东西无法看到算法的具体实现,只能根据官方的参考手册进行函数接口的调用,不过...

2020-02-10 20:48:58 172 0

原创 C++设计模式笔记

设计模式大体上可以分为如下的四大类: 创建型模式(主要用于创建对象): 简单工厂 工厂方法 抽象工厂 建造者 单例 原型 结构型模式(主要用于处理类或对象的组合): 适配器 桥接 组合 装饰 外观 享元 代理 行为型模式(主要用于描述对类或对象的交互和职责分配): 模板方法 责任链...

2020-02-09 12:06:04 94 0

原创 关于使用CMake构建C++项目时出现Missing variable is: CMAKE_FIND_LIBRARY_SUFFIXES错误的解决方法

  有一段时间没有更新自己的技术博客了,但是最近看到有更多的人关注了我的技术博客,也给了我继续更新博客的动力。最近几个月在一些杂七杂八的事情,现在终于有了更多的时间来更新自己的博客了。好了,废话少说,下面我们进入今天的正题。   众所周知,在21世纪20年代的今天,开源的热潮席卷而来。机器人领域...

2020-01-08 14:45:20 129 0

原创 Ubuntu下搭建OpenGL开发环境(GLFW_3.3.1 + GLM_0.9.9 + GLAD)

源码安装GLFW 3.3.1 git clone git@github.com:glfw/glfw.git cd glfw mkdir build && cd build cmake .. make -j4 sudo make install 直接命令二进制安装 sudo apt...

2019-10-28 20:37:08 403 0

原创 Eigen3实现对矩阵(数组)的掩码操作(过滤掉矩阵中满足特定条件的数据元素)

在机器人的运动学计算中,不可避免的使用到了矩阵运算。有时候为了开发算法,我们需要打印中间或者最终的计算结果,但是由于是数值计算,会使得矩阵元素中存在很多非常小的数值,但是其实这些数值就是0而已。很多时候,我就想打印出来的结果显示的就是0,而不是一系列非常小的数值,为此需要对原始矩阵的数据元素进行必...

2019-10-24 17:15:12 90 0

原创 OpenSceneGraph入门之01:加载场景数据并渲染

CMakeLists.txt cmake_minimum_required(VERSION 2.8) set(CMAKE_CXX_STANDARD 14) project(openscenegraph_demo) #set(CMAKE_MODULE_PATH "/home/liu...

2019-09-01 15:47:05 150 0

原创 解决miniconda3/lib/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9`错误

昨天晚上在编译ViSP库的过程中出现如下的错误。 ~/miniconda3/lib/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9' collect2: error: ld returned 1 e...

2019-08-20 09:02:47 1143 2

原创 QtCreator配置代码自动格式化

使用Artistic Style 点击此处下载 右键解压astyle_3.1_linux.tar.gz cd ~/astyle/build/gcc make 打开QtCreator 使能Beautifier插件:勾选Help > About Plugins... > C...

2019-07-22 20:59:12 1991 0

原创 编译pcl1.9.1中出现error: ‘class vtkDataSetMapper’ has no member named ‘ImmediateModeRenderingOff‘问题的解决方法

我在源码编译的过程中出现了 pcl_1.9.1/apps/modeler/src/surface_actor_item.cpp:87:11: error: ‘class vtkDataSetMapper’ has no member named ‘ImmediateModeRenderingOf...

2019-06-08 18:48:04 1420 0

原创 图片中的公式转Latex的实用工具Mathpix

Mathpix下载地址: https://mathpix.com/ 手动编辑公式是一个非常麻烦的体力活,MathPix就是为了一定程度上解决这个问题而存在的工具.它具有很好的跨平台特性,并且支持当前主流的Latex编辑器,甚至包括非常流行的用于编写Marddown文件的Typora和Macd...

2019-04-05 10:07:20 444 0

原创 在Typora的Markdown文件中插入本地视频

<video id="video" controls="" preload="none"> <source id="mp4" src="/home/liuqiang/Document...

2019-04-02 09:13:40 4365 2

原创 使用Rviz查看基于iai_kinect2的kinect2_bridge发布的实时点云和Octomap_server发布的实时octomap数据

第一步:安装Octomap及其在Rviz中的插件 sudo apt-get install ros-kinetic-octomap-ros sudo apt-get install ros-kinetic-octomap-msgs sudo apt-get install ros-kine...

2019-03-03 20:56:48 889 2

原创 QtCreator4.8.0设置C++代码语法检查警告级别

最近更新到Qt5.12.0以后,使用QtCreator4.8.0版本的IDE编写C++代码时,总会出现各种语法警告,很是烦人,虽然自己的代码确实写的不咋地,但是要想没有任何警告有时候是挺难的,警告严重敲代码影响心情。在这里,介绍如何设置代码检查级别,用户可以根据自己的喜好进行设置 Tools》Op...

2019-02-27 10:19:06 1589 2

原创 记录Ubuntu16.04下安装libfreenect2和iai_kinect2的安装过程

首先安装libfreenect2,这是一个开源跨平台的针对微软kinect v2体感相机的第三方驱动,可以获取RGB图和深度图,并对深度图和RGB图进行配准。 #下载libfreenect2源码 git clone git@github.com:OpenKinect/libfreenect2.gi...

2019-02-26 14:36:53 969 0

原创 解决Ubuntu16.04下将Anaconda3安装在/opt目录下无法使用pip直接安装软件包的问题

当anaconda安装在opt/目录下,因为权限的原因,导致通常情况下使用的: pip install ./pygame-1.9.4-cp37-cp37m-manylinux1_x86_64.whl 无法完成安装pygame软件包的安装 为此,需要新增–user -U参数来实现安装,其中–use...

2019-02-18 10:20:38 947 0

原创 解决TensorFlow因为protoc版本过低导致执行protoc object_detection/protos/*proto --python_out=.出错的问题

首先查看本机的protoc的版本 protoc --version 我的机器在安装之前输出的是2.6.1版本的protoc,那是我通过如下的命令安装的: sudo apt install protobuf-compiler 我的机器上出现因protoc版本过低导致如下的错误输出: (tf) l...

2019-01-09 13:11:42 2888 1

原创 离线安装Typora,并使用alias设置快速启动命令

使用在线安装的方式安装Typora,经常限于网速,很难安装成功。因此,为了不受网速的限制,采用离线安装的方式,下载离线安装后,解压即可,然后双击可执行文件就可以运行,但是离线安装有一个缺点,就是没有在线安装那样启动方便,每次打开都需要到指定的目录双击可执行文件。为此,我们通过创建快捷键的方式或者使...

2019-01-08 11:19:12 363 0

原创 Ubuntu16.04源码编译安装开源版的迅雷Xware Desktop

#打开终端,安装基础依赖 sudo apt-get install git build-essential devscripts git clone https://github.com/Xinkai/XwareDesktop.git cd XwareDesktop dpkg-checkb...

2019-01-08 11:06:42 907 2

原创 使用优启通安装最新原装纯净版Win10系统

第一步: 去IT天空的官网下载最新版本的优启通程序和万能驱动程序。 https://www.itsk.com/topic-software.html 当前的最新版本是:优启通 v3.3.2018.1128(2018.12.17 发布) 当前的最新版本是:万能驱动 v7.18.1122.2 正...

2018-12-31 22:05:50 33961 0

原创 实现对std::vector进行片段截取操作

废话少说,直接上代码: #include &amp;lt;iostream&amp;gt; #include &amp;lt;vector&amp;gt; int main() { std::vector&amp;lt;int&amp...

2018-12-19 15:41:56 13196 0

原创 使用破解补丁永久激活最新版本的Clion2018.3.2和PyCharm2018.3.2

首先,下载破解补丁: http://idea.lanyus.com/ 接着,将下载好的补丁放到解压出来的~/clion-2018.3.1/bin目录下 然后,修改~/clion-2018.3.1/bin目录下的clion.vmoptions文件和clion64.vmoptions,修改方式都是在各...

2018-12-17 20:44:43 4100 1

原创 使用QMessageBox自定义消息提示对话框

通常我们在开发界面的时候,如果涉及到用户需要谨慎操作的部分,我们需要开发弹出提示窗口,提示用户是否确定要执行该操作,此时,我们可以使用QMessageBox类来实现自定义的消息提示对话框。 void DataConfigureDialog::clearConfigTable() { QMe...

2018-12-13 14:35:48 3074 0

原创 解决QFileSystemModel结合QTreeView进行排序无效并且排序错乱等不可知问题

在之前的一个目录排序显示功能开发过程中,出现了排序错乱的问题,经过多次尝试,根本原因还是自己的无知操作导致的程序不可知问题: m_FileSystemModel-&amp;gt;setRootPath(m_DataLoadPath); m_TreeView-&amp;gt;se...

2018-12-12 15:14:47 416 0

原创 解决以QFileSystemModel为模型对QTreeView执行expandAll()操作不起作用的问题

要解决这个问题,我们首先需要明白一个问题,那就是QFileSystemModel这个Qt自带的标准控件比较特殊,目前已知的有两个特殊之处,一个是我们无法直接修改它的表头为中文,我们只能通过国际化的方式将表头文字进行翻译,但是也很别扭。另一个就是当前要讲的问题,直接展开QTreeView对象的所有节...

2018-12-12 13:24:42 493 1

原创 使用Qt5的QXmlStreamWriter和QXmlStreamReader实现xml文件的写入和读取

Qt中实现xml文件写入和读取操作的方法有多种,但是总体来说,还是接下来要介绍的方法更加的方便快捷。 下面基于我在实际项目中的一个小需求,通过编写一个小demo来介绍该内容。 第1步:使用QXmlStreamWriter实现xml文件的写入操作 void writeXML() { ...

2018-12-10 10:16:28 1402 0

原创 QtCreator 4.8.0配置Python开发环境开发PyQt5或者PySide2

步骤如下: 第1步,就是下载安装最新版的QtCreator4.8.0 第2步,执行sudo pip3 install python-language-server安装Language Server Protocol (LSP) 第3步,使能LanguageClient插件,帮助>关于插件>选...

2018-12-09 20:41:20 1760 0

原创 Qt使用QListWidget结合QScrollBar实现图像动态无限加载

任何事物,量变都会引起质变,在Qt界面开发中无不体现着这个道理,特别是在界面上加载数据量巨大的图片的时候,会显得非常的力不从心,比如:我想加载100000张图片到列表中,每一个列表项是一个自定义控件,自定义控件中包含了图像缩略图,图片名称等信息.我做过一个实验,按照普通的加载方式,一次性加载500...

2018-12-02 12:41:47 1230 2

原创 介绍一个非常nice的免费跨平台绘制uml和流程图工具

网站地址: https://www.draw.io/ 该工具不仅免费, 而且还有中文版,甚至还有离线版,另外一个特点是该工具本身不提供存储空间,用户可以选择文件存储在Google云或则微软云。 ...

2018-11-24 15:56:48 861 0

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