<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[天才樱木]]></title><description><![CDATA[专注嵌入式和人工智能]]></description><link>https://blog.youkuaiyun.com/datase</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; datase]]></copyright><item><title><![CDATA[cmake中add_definitions的用法]]></title><link>https://blog.youkuaiyun.com/datase/article/details/126642879</link><guid>https://blog.youkuaiyun.com/datase/article/details/126642879</guid><author>datase</author><pubDate>Thu, 01 Sep 2022 14:44:16 +0800</pubDate><description><![CDATA[cmake中add_definitions的用法]]></description><category></category></item><item><title><![CDATA[rviz 显示Laserscan 数据 缓冲之前数据显示.]]></title><link>https://blog.youkuaiyun.com/datase/article/details/121038593</link><guid>https://blog.youkuaiyun.com/datase/article/details/121038593</guid><author>datase</author><pubDate>Fri, 29 Oct 2021 17:01:15 +0800</pubDate><description><![CDATA[这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Markdown编辑器
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar]]></description><category></category></item><item><title><![CDATA[2021-09-02 inline函数和一般的函数有什么不同]]></title><link>https://blog.youkuaiyun.com/datase/article/details/120058232</link><guid>https://blog.youkuaiyun.com/datase/article/details/120058232</guid><author>datase</author><pubDate>Thu, 02 Sep 2021 11:55:47 +0800</pubDate><description><![CDATA[inline函数和一般的函数有什么不同 


比如：
1 int g(int x) 
2 { 
3     return x + x; 
4 } 
5 
6 int f() 
7 { 
8     return g(); 
9 } 


这样f会调用g，然后g返回x + x给f，然后f继续把那个值返回给调用者。 

如果g是inline的话。f会被直接编译成。 
1 int f() 
2 { 
3     return x + x; 
4 } 

相当于把g执行的操作直接融合到f里。这样减少了调用g消耗的时]]></description><category></category></item><item><title><![CDATA[python  2.7  import cv2 导入问题报错]]></title><link>https://blog.youkuaiyun.com/datase/article/details/117565084</link><guid>https://blog.youkuaiyun.com/datase/article/details/117565084</guid><author>datase</author><pubDate>Fri, 04 Jun 2021 16:21:57 +0800</pubDate><description><![CDATA[通过anaconda3 pip2 install opencv-python

Log如下错误:

Collecting opencv-python
 Using cached opencv-python-4.3.0.38.tar.gz (88.0 MB)
 Installing build dependencies ... done
 Getting requirements to build wheel ... error
 ERROR: Command errored out with exi...]]></description><category></category></item><item><title><![CDATA[lower_bound( )和upper_bound( )的常见用法]]></title><link>https://blog.youkuaiyun.com/datase/article/details/116021694</link><guid>https://blog.youkuaiyun.com/datase/article/details/116021694</guid><author>datase</author><pubDate>Thu, 22 Apr 2021 17:13:55 +0800</pubDate><description><![CDATA[lower_bound() 和 upper_bound 二分查找有序数列内数据(数据可以是重复出现,所以出现上下边界)

lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。

在从小到大的排序数组中，

lower_bound( begin,end,num)：从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字，找到返回该数字的地址，不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

.]]></description><category></category></item><item><title><![CDATA[错切变换]]></title><link>https://blog.youkuaiyun.com/datase/article/details/115549140</link><guid>https://blog.youkuaiyun.com/datase/article/details/115549140</guid><author>datase</author><pubDate>Fri, 09 Apr 2021 14:07:48 +0800</pubDate><description><![CDATA[错切变换



水平方向



仿射矩阵为





反方向类似，可应用在车牌倾斜校正中，首先进行旋转校正，再进行错切校正。

垂直方向

仿射矩阵为



坐标变换等式为




]]></description><category></category></item><item><title><![CDATA[四元数的表示形式Hamilton & JPL定义]]></title><link>https://blog.youkuaiyun.com/datase/article/details/114283464</link><guid>https://blog.youkuaiyun.com/datase/article/details/114283464</guid><author>datase</author><pubDate>Tue, 02 Mar 2021 13:57:50 +0800</pubDate><description><![CDATA[文章目录

目录

1.引言

2.JPL定义

1.引言

Quaternion（四元数）是一种三维空间旋转的表示方法，四元数由一个实部和三个虚部构成，写如



其中 i, j, k 为虚部的三个基:



不是所有的四元数对于基的关系的定义都是一致的，下文描述两种定义形式：Hamilton &amp; JPL，它们的区别及影响。

2.Hamiltion定义



ijk=−1

四元数转换为旋转矩阵MatJPL



左四元数 - 乘积矩阵(left-quaternion-product matri]]></description><category></category></item><item><title><![CDATA[C++11多线程中的detach()、join()、joinable()]]></title><link>https://blog.youkuaiyun.com/datase/article/details/111595362</link><guid>https://blog.youkuaiyun.com/datase/article/details/111595362</guid><author>datase</author><pubDate>Wed, 23 Dec 2020 17:49:37 +0800</pubDate><description><![CDATA[一.传统多线程编写:
一般来说,我们在主线程中开辟出一些子线程来完成我们的任务,正常情况下,需要在主线程的最后调用join(),用于阻塞主线程,避免主线程先于其他子线程执行完毕,退出,然后导致整个进程的异常.


join():阻塞主线程,主线程等待其他子线程执行完毕,一起退出.


二.非传统多线程编写: 引入detach()
有人说,我们创建多个线程完成一些任务,不过需要主线程最后等待所有的子线程完毕才能退出,这样不好，主线程不自由.
所以,detach()应运而生,希望主线程可以正常的退出, 子线程被]]></description><category></category></item><item><title><![CDATA[C++ 互斥量std::mutex简单介绍]]></title><link>https://blog.youkuaiyun.com/datase/article/details/111594499</link><guid>https://blog.youkuaiyun.com/datase/article/details/111594499</guid><author>datase</author><pubDate>Wed, 23 Dec 2020 17:19:54 +0800</pubDate><description><![CDATA[std::mutex

互斥量是一个可以处于两态之一的变量:解锁和加锁。这样，只需要一个二进制位表示它，不过实际上，常常使用一个整型量，0表示解锁，而其他所有的值则表示加锁。互斥量使用两个过程。当一个线程(或进程)需要访问临界资源的临界区时，它调用mutex_lock。如果该互斥量当前是解锁的(即临界区可用)，此调用成功，调用线程可以自由进入该临界区。


#include &lt;iostream&gt;

#include &lt;vector&gt;

#include &lt;thread&gt;.]]></description><category></category></item><item><title><![CDATA[C++列表初始化和在函数体内初始化的区别]]></title><link>https://blog.youkuaiyun.com/datase/article/details/110376418</link><guid>https://blog.youkuaiyun.com/datase/article/details/110376418</guid><author>datase</author><pubDate>Mon, 30 Nov 2020 10:41:15 +0800</pubDate><description><![CDATA[在列表初始化中才算是真正的初始化，而在函数体内的实际上是赋值操作，给成员变量分配内存是在列表初始化中完成的。
明白了这点就可以明白两点：
1.const变量的初始化只能在列表初始化中完成，因为在函数体内是赋值操作，我们不能对const变量进行赋值操作。
2.含有类对象的最好在列表初始化中完成，如果在函数体内进行赋值，实际上是在列表初始化中先调用了类对象默认构造函数，然后在函数体内调用了operator=赋值运算符。另外，若一个函数没有默认构造函数，并且不在列表初始化，那么就会不能通过编译。
...]]></description><category></category></item><item><title><![CDATA[Quaternion和AxisAngle的互相转换]]></title><link>https://blog.youkuaiyun.com/datase/article/details/108149531</link><guid>https://blog.youkuaiyun.com/datase/article/details/108149531</guid><author>datase</author><pubDate>Fri, 21 Aug 2020 16:15:57 +0800</pubDate><description><![CDATA[四元参数和轴角的互相, 即Quaternion和AxisAngle的互相转换.

1. 旋转轴和旋转角到四元参数

旋转轴(ax,ay,az), 旋转角angle
计算四元参数:


qx = ax * sin(angle/2)
qy = ay * sin(angle/2)
qz = az * sin(angle/2)
qw = cos(angle/2)

2. 四元参数到旋转轴和旋转角


angle = 2 * acos(qw)
x = qx / sqrt(1-qw*qw)
y = qy / sqrt(]]></description><category></category></item><item><title><![CDATA[Ubuntu 系统绑定设备串口名称]]></title><link>https://blog.youkuaiyun.com/datase/article/details/108054900</link><guid>https://blog.youkuaiyun.com/datase/article/details/108054900</guid><author>datase</author><pubDate>Mon, 17 Aug 2020 14:17:31 +0800</pubDate><description><![CDATA[Ubuntu 下绑定串口名称

步骤如下：
一、插上设备，使用lsusb命令查看设备的ID号 形式如ID 1a86:7523
二、在文件夹/etc/udev/rules.d下新建一个文件为xxx.rules
三、在该文件下写上
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", SYMLINK+="hexapod"

注意：二三步需要用权限sudo 最好用命令行输入

四、运行sudo ude]]></description><category></category></item><item><title><![CDATA[SLAM后端优化的简要描述]]></title><link>https://blog.youkuaiyun.com/datase/article/details/107710167</link><guid>https://blog.youkuaiyun.com/datase/article/details/107710167</guid><author>datase</author><pubDate>Fri, 31 Jul 2020 11:47:50 +0800</pubDate><description><![CDATA[1.图优化理论中，本质还是优化理论，主要涉及最小均方二次优化方法。这里的图与组合数学的图论还是有些区别，这里的图只是一个形象的比喻，本质是优化理论。



2.激光雷达扫描位置从P0开始，沿着P1，P2，……，一直到Pn-1，Pn。结束点Pn在起始点P0附近。Pn的坐标位置可以通Pn-1获得，当然也可以通过P0获得。显然由于误差存在问题，Pn分别从Pn-1和P0获得的坐标不一样。如通过Scan to scan，Pn通过P0获得的坐标准确点，通过Pn-1获得的坐标误差大点，因为累计误差较大；如果把所有测量看做]]></description><category></category></item><item><title><![CDATA[SLAM系统性能评估：绝对轨迹误差(ATE)和相对位姿误差(RPE)]]></title><link>https://blog.youkuaiyun.com/datase/article/details/107709808</link><guid>https://blog.youkuaiyun.com/datase/article/details/107709808</guid><author>datase</author><pubDate>Fri, 31 Jul 2020 11:39:03 +0800</pubDate><description><![CDATA[绝对轨迹误差

直接计算相机位姿的真实值与SLAM系统的估计值之间的差，程序首先根据位姿的时间戳将真实值和估计值进行对齐， 然后计算每对位姿之间的差值， 并最终以图表的形式输出， 该标准非常适合于评估视觉 SLAM 系统的性能。

白话：找参考和参考做差

相对位姿误差

用于计算相同两个时间戳上的位姿变化量的差， 同样， 在用时间戳对齐之后， 真实位姿和估计位姿均每隔一段相同时间计算位姿的变化量， 然后对该变化量做差， 以获得相对位姿误差， 该标准适合于估计系统的漂移

白话：找参考 在一定时间间断内对比]]></description><category></category></item><item><title><![CDATA[RVIZ 显示 urdf 模型命令]]></title><link>https://blog.youkuaiyun.com/datase/article/details/106809436</link><guid>https://blog.youkuaiyun.com/datase/article/details/106809436</guid><author>datase</author><pubDate>Wed, 17 Jun 2020 15:33:14 +0800</pubDate><description><![CDATA[roslaunch urdf_tutorial display.launch model:=
]]></description><category></category></item><item><title><![CDATA[Tcp/ip 报文解析简要介绍]]></title><link>https://blog.youkuaiyun.com/datase/article/details/105999665</link><guid>https://blog.youkuaiyun.com/datase/article/details/105999665</guid><author>datase</author><pubDate>Fri, 08 May 2020 16:14:08 +0800</pubDate><description><![CDATA[在编写网络程序时，常使用TCP协议。那么一个tcp包到底由哪些东西构成的呢？其实一个TCP包，首先需要通过IP协议承载，而IP报文，又需要通过以太网传送。下面我们来看看几种协议头的构成。

一 .Ethernet头

以太帧分好几种类型，常见的以太帧为Ethernet II

下面就是一个典型的Ethernet II帧



这里的数据段为TCP 、IP段数据

Ethernet II类型以太网帧...]]></description><category></category></item><item><title><![CDATA[Ubuntu 16.04 快捷键截图]]></title><link>https://blog.youkuaiyun.com/datase/article/details/105194004</link><guid>https://blog.youkuaiyun.com/datase/article/details/105194004</guid><author>datase</author><pubDate>Mon, 30 Mar 2020 10:55:07 +0800</pubDate><description><![CDATA[进入系统设置：

Setting-&gt;Keyboard-&gt;Shortcurts-&gt;Custom Shortcuts-&gt; + 号

然后：



Name: 你喜欢的

Command: gnome-screenshot -a

Next: Apply



鼠标点击后面Disabled

在键盘输入： Ctrl +Alt +A 三个键



不用退出，直接调用Ctrl+Al...]]></description><category></category></item><item><title><![CDATA[TF 在ROS基本作用和简单介绍]]></title><link>https://blog.youkuaiyun.com/datase/article/details/97761304</link><guid>https://blog.youkuaiyun.com/datase/article/details/97761304</guid><author>datase</author><pubDate>Tue, 30 Jul 2019 10:55:09 +0800</pubDate><description><![CDATA[TF库的目的是实现系统中任一个点在所有坐标系之间的坐标变换，也就是说，只要给定一个坐标系下的一个点的坐标，就能获得这个点在其他坐标系的坐标.

使用tf功能包，a.监听tf变换：接收并缓存系统中发布的所有参考系变换，并从中查询所需要的参考系变换。

            b.广播 tf变换:向系统中广播参考系之间的坐标变换关系。系统中更可能会存在多个不同部分的t...]]></description><category></category></item><item><title><![CDATA[Google Abseil基础库的简单介绍]]></title><link>https://blog.youkuaiyun.com/datase/article/details/90513450</link><guid>https://blog.youkuaiyun.com/datase/article/details/90513450</guid><author>datase</author><pubDate>Fri, 24 May 2019 11:27:50 +0800</pubDate><description><![CDATA[概述：Abseil已在Google历经十多年的开发，它的目的是为Google编程人员在各种项目上的工作需求提供支持，这些项目包括Protocol Buffers、gRPC和TensorFlow等。


Google公开了其项目内部使用的一系列C++库，随后还会公开其Python库。


Abseil已在Google历经十多年的开发，它的目的是为Google编程人员在各种项目上的工作需求提供支持，...]]></description><category></category></item><item><title><![CDATA[Cartographe纯雷达计算位姿的前后端总结]]></title><link>https://blog.youkuaiyun.com/datase/article/details/90024567</link><guid>https://blog.youkuaiyun.com/datase/article/details/90024567</guid><author>datase</author><pubDate>Thu, 09 May 2019 11:12:28 +0800</pubDate><description><![CDATA[转载@梦凝小筑

本人的研究方向为激光SLAM，因此对于Google Cartographer 的经典算法十分感兴趣，但是苦于该算法的论文是英文写作，且该论文有着公式多，解释少的特点。因此在看了原论文和网上的各种论文解读，都没有能够完全把这块硬骨头吃下去。

机缘巧合，本人研究生课程高等运筹学大作业需要运用和Google Cartographer 中的闭环检测 相同的方法，结合Cart...]]></description><category></category></item></channel></rss>