<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hanmingjunv5的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hanmingjunv5</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hanmingjunv5]]></copyright><item><title><![CDATA[CMake: set 普通变量、全局变量]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/144614901</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/144614901</guid><author>hanmingjunv5</author><pubDate>Fri, 20 Dec 2024 16:51:59 +0800</pubDate><description><![CDATA[之后将CmakeLists.txt中需要删除的Cache变量删除，再执行Cmake-gui,此变量就不会在gui中显示了。后，想删掉，直接删除CmakeCache.txt文件是不行的，在cmake-gui中仍然会有缓存。]]></description><category></category></item><item><title><![CDATA[C++内存泄漏--**关于“异常0xc0000005 读取的位置 0xDDDDDDDD时发生冲突”]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/141353551</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/141353551</guid><author>hanmingjunv5</author><pubDate>Tue, 20 Aug 2024 11:23:08 +0800</pubDate><description><![CDATA[运行上述程序，会发生内存泄漏。删除内存的操作很规范为什么还会泄漏呢？根本原因是，调用checkPtr(RefClass* ref_class_, int*& p_n_)函数时，传入的是指向ref_class_->pInt内存的另一个指针_p_n，正确的用法是，将_p_n声明为 _pRefClass->pInt的引用，即。]]></description><category></category></item><item><title><![CDATA[ubuntu 进行SD卡分区]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/130297526</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/130297526</guid><author>hanmingjunv5</author><pubDate>Fri, 21 Apr 2023 21:41:03 +0800</pubDate><description><![CDATA[查看当前分区，dev/sdb1 /dev/sdb2就是SD卡上的两个分区。将分区1设置为FAT32格式。重命名sdb1并格式化。重命名sdb2并格式化。生成100M的分区1。]]></description><category></category></item><item><title><![CDATA[ubuntu18.04安装Tensorflow2.x+CUDA 教程]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/122808334</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/122808334</guid><author>hanmingjunv5</author><pubDate>Mon, 07 Feb 2022 14:25:07 +0800</pubDate><description><![CDATA[一、查看硬件
lspci | grep VGA
01:00.0 VGA compatible controller: NVIDIA Corporation GM206 [GeForce GTX 960] (rev a1)

我的电脑上是GTX960显卡 （Low~~~~）
uname -a
Linux 5.4.0-97-generic #110~18.04.1-Ubuntu SMP Mon Jan 17 20:50:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

系统]]></description><category></category></item><item><title><![CDATA[CarSim2020 安装和操作001]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/122469426</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/122469426</guid><author>hanmingjunv5</author><pubDate>Thu, 13 Jan 2022 11:07:16 +0800</pubDate><description><![CDATA[破解过程
①解压crack文件夹

②将 programs文件夹 和 dll文件 复制替换 至安装根目录

③右击  SSQ.exe 文件  管理员权限运行  生成  MSCLIC_SSQ.lic 文件  之后 窗口提示 All done，Enjoys!

④MSCLIC_SSQ.lic 文件  进行两个替换

     1）将所有的  2016.2  替换为  2020.0

     2）打开根目录下CarSim2020.0_Prog\Programs中的HostID.exe文件  复制任一 Host ]]></description><category></category></item><item><title><![CDATA[Ubuntu18.04 编译 RT Kernel]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/117353381</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/117353381</guid><author>hanmingjunv5</author><pubDate>Fri, 28 May 2021 10:01:28 +0800</pubDate><description><![CDATA[Ubuntu18.04 编译 RT Kernel
机器：ThinkPad T14  CPU i5-10210U
系统：Ubuntu 18.04 内核：Linux-5.4.0
下载内核及实时补丁
http://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/
http://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.4/older/
我下载的内核版本是：linux-5.4.19
解压&amp;打补丁
]]></description><category></category></item><item><title><![CDATA[机器人学之轴角]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/114090617</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/114090617</guid><author>hanmingjunv5</author><pubDate>Thu, 25 Feb 2021 16:37:17 +0800</pubDate><description><![CDATA[旋转矩阵可以表示两个坐标系之间转换关系，但是，旋转矩阵存在以下缺陷：
1.参数过多，存在数据冗余
2.比较抽象，观察旋转矩阵时很难在脑海中勾勒出具体的旋转过程
轴角
轴角由两部分构成：旋转轴和绕旋转轴旋转角度

如图，r表示旋转轴，Θ表示需要旋转的角度，因此轴角由4歌变量组成：
r = (rx, ry, rz), θ = Θ ，优点是：
1，很直观的描述了旋转发生的过程
2，数据相较于旋转矩阵有很大的精简
轴角和旋转矩阵的转换
设旋转矩阵为：

轴角转旋转矩阵：

旋转矩阵转轴角：

注意到，上式中，sin]]></description><category></category></item><item><title><![CDATA[机器人学之旋转矩阵]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/114088553</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/114088553</guid><author>hanmingjunv5</author><pubDate>Thu, 25 Feb 2021 16:09:43 +0800</pubDate><description><![CDATA[旋转矩阵
一、旋转矩阵
如图，绕z轴旋转，

可以表示为矩阵：

式中，每一个列向量都表示O‘ 坐标系的坐标轴相对于O坐标系的方向向量。
同理，绕y,x轴的旋转矩阵表示为：

机器人学中，使用旋转矩阵表示两个坐标系的旋转。坐标系转换方式有以下两种：
1.绕固定坐标系旋转
顾名思义，旋转过程始终以一个固定的坐标系为参考：

此时，应按照矩阵依次左乘的方式计算旋转后的矩阵，例如依次绕x旋转x’,绕y旋转y’，绕z旋转z’，
则得到转换后的矩阵为：
​	R‘ = rot(z’)*rot(y’)*rot(x’)
2]]></description><category></category></item><item><title><![CDATA[git 用法总结]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/111051820</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/111051820</guid><author>hanmingjunv5</author><pubDate>Fri, 11 Dec 2020 19:15:43 +0800</pubDate><description><![CDATA[git 用法总结
最近入职了新公司，使用git来进行代码管理，总结一下使用方法，以免忘记。
生成身份标识
git使用key来获取用户权限。
配置用户名：
git config --global  user.name "xxx"
git config --global user.email "my@example.com"
生成公钥：
ssh-keygen -t rsa -C "my@example.com"
之后按三次回车键（默认不需要密码）

会在.ssh目录下生成如下文件：
id_rsa      私钥]]></description><category></category></item><item><title><![CDATA[Acontis Ec-Master主站编译&调试方法]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/110450559</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/110450559</guid><author>hanmingjunv5</author><pubDate>Tue, 01 Dec 2020 20:17:45 +0800</pubDate><description><![CDATA[1.开发包目录
Bin
   --Linux\x64
   		--EcMasterDemoDc :编译好的测试程序
   		--libemllRTL8169.so :运行主站时需要加载的网卡驱动
Doc
	--EC-Master_ClassA/B:主站功能介绍
	--EC-Master_QuickStart_Guide:快速开始文档
Examples
	--示例
SDK:开发包
	--INC:开发程序所需头文件
	--LIB\Linux\x64:编译用户程序时需要链接的库
		--libAtemRasS]]></description><category></category></item><item><title><![CDATA[WINDOWS：OPEN62541服务器编程]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/108486576</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/108486576</guid><author>hanmingjunv5</author><pubDate>Wed, 09 Sep 2020 11:54:16 +0800</pubDate><description><![CDATA[WINDOWS：OPEN62541服务器编程
创建工程
编译环境  windows 10 + Visual Studio 2019 Community
新建工程，将cmake编译生成的open62541.h/.c加载进入工程
添加必要的库
OPEN62541需要额外加载两个库：wsock32.lib ws2_32.lib，在程序开头添加：
#pragma comment(lib, “wsock32.lib”)
#pragma comment(lib, “ws2_32.lib”)
或者在工程属性中添加相应的库]]></description><category></category></item><item><title><![CDATA[WINDOWS：OPEN62541编译]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/108486016</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/108486016</guid><author>hanmingjunv5</author><pubDate>Wed, 09 Sep 2020 11:33:15 +0800</pubDate><description><![CDATA[WINDOWS：OPEN62541编译
编译时的配置
windows 10
Visual Studio 2019 Community
CMake 3.15.0
source code: open62541-1.1.2
CMake
第一步，配置源码和编译目录

选择编译选项：UA_ENABLE_AMALGAMATION=ON
第二步，打开工程，编译生成open62541.c/.h

完成

...]]></description><category></category></item><item><title><![CDATA[使用Xenomai创建动态链接库]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107729827</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107729827</guid><author>hanmingjunv5</author><pubDate>Sat, 01 Aug 2020 13:45:09 +0800</pubDate><description><![CDATA[使用Xenomai创建动态链接库
项目中需要Xenomai创建实时周期的任务，并封装为动态链接库，这里记录下遇到的问题。
按照  QT编译xenomai用户层程序 中的步骤设置，建立好动态库工程之后。
编译，会发生如下错误：
:-1: error: /usr/xenomai/lib/xenomai/bootstrap.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; ]]></description><category></category></item><item><title><![CDATA[QT编译xenomai用户层程序]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107692395</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107692395</guid><author>hanmingjunv5</author><pubDate>Thu, 30 Jul 2020 16:02:05 +0800</pubDate><description><![CDATA[QT编译xenomai用户层程序
在.pro文件中添加：
XENO_DIR = /usr/xenomai
XENO_CONFIG = $$XENO_DIR/bin/xeno-config
XCFLAGS = $(shell $$XENO_CONFIG --skin=alchemy  --cflags)
XLDFLAGS = $(shell $$XENO_CONFIG --skin=alchemy --ldflags)
QMAKE_CXXFLAGS += $$XCFLAGS
LIBS += $$XLDFLAG]]></description><category></category></item><item><title><![CDATA[xenomai安装及程序编译]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107673712</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107673712</guid><author>hanmingjunv5</author><pubDate>Wed, 29 Jul 2020 19:51:58 +0800</pubDate><description><![CDATA[安装xenomai实时补丁
参考网页： https://rtt-lwr.readthedocs.io/en/latest/rtpc/xenomai3.html
安装后的目录在 /usr/xenomai

编译用户程序
参考altency.c文件，编写一个周期任务程序：
demo_periodic_thread_posix.c
#include &lt;stdio.h&gt;
#include &lt;signal.h&gt;
#include &lt;unistd.h&gt;
#include &lt;sy]]></description><category></category></item><item><title><![CDATA[三角函数柔性加减速算法]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107520538</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107520538</guid><author>hanmingjunv5</author><pubDate>Wed, 22 Jul 2020 18:59:08 +0800</pubDate><description><![CDATA[公式推导
&nbsp;
三段速度公式为
&nbsp;
{v(t)=(vs+vm)/2−(vm−vs)cost′/2t′=(t/t1)π(1)v(t)=vmv(t)=(ve+vm)/2−(ve−vm)cost′/2t′=(t/t2)πt1为加速时间，t2为减速时间
\begin{cases}
v(t)=(v_s+v_m)/2-(v_m-v_s)cost{'}/2 \quad t^{'}=(t/t_1)\pi \quad (1)\\
v(t)=v_m \\    
v(t)=(v_e+v_m)/2-(v_e-v]]></description><category></category></item><item><title><![CDATA[点到指定Bezier曲线的最短距离]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107415941</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107415941</guid><author>hanmingjunv5</author><pubDate>Fri, 17 Jul 2020 19:20:08 +0800</pubDate><description><![CDATA[点到指定Bezier曲线的最短距离
&nbsp;
Bezier曲线本质上是一个多项式。
&nbsp;
三次曲线Q：
Q(u)=(1−u)3P0+3(1−u)2uP1+3(1−u)u2P2+u3P3=nu3+ru2+su+v
\begin{aligned}
Q(u) &amp;= (1-u)^3P_0+3(1-u)^2uP_1+3(1-u)u^2P_2+u^3P_3\\
&amp;=nu^3+ru^2+su+v
\end{aligned}
Q(u)​=(1−u)3P0​+3(1−u)2uP1​+3(1−u)u]]></description><category></category></item><item><title><![CDATA[B-spline反求控制顶点]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107320623</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107320623</guid><author>hanmingjunv5</author><pubDate>Mon, 13 Jul 2020 17:00:02 +0800</pubDate><description><![CDATA[B-spline反求控制顶点
&nbsp;
B样条曲线拟合时（https://blog.youkuaiyun.com/hanmingjunv5/article/details/106137002），曲线是不通过数据点的，这样对于曲线的插补来说，是不合理的。因此，需要根据给定的数据点来求解控制顶点，使拟合的曲线通过全部数据点。
&nbsp;
推导
曲线定义：
C(u)=∑i=0nNi,p(u)Pi(1)
C(u)=\sum^n_{i=0}N_{i,p}(u)P_i \quad \quad \quad (1)
C(u)=i]]></description><category></category></item><item><title><![CDATA[Bezier曲线反求控制点]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107250303</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107250303</guid><author>hanmingjunv5</author><pubDate>Fri, 10 Jul 2020 14:35:28 +0800</pubDate><description><![CDATA[Bezier曲线反求控制点
做曲线拟合的时候，往往希望拟合的曲线通过数据点，这个推导一下Bezier曲线控制点的计算过程.
曲线公式
曲线：C(u)=∑i=0nBn,i(u)Pi基函数：Bn,i=n!i!(n−i)!ui(1−u)n−i
曲线：C(u) = \sum^n_{i=0}B_{n,i}(u)P_i\\
基函数：B_{n,i}=\frac{n!}{i!(n-i)!}u^i(1-u)^{n-i}
曲线：C(u)=i=0∑n​Bn,i​(u)Pi​基函数：Bn,i​=i!(n−i)!n!​ui(1−u)]]></description><category></category></item><item><title><![CDATA[Bezier曲线构造]]></title><link>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107248404</link><guid>https://blog.youkuaiyun.com/hanmingjunv5/article/details/107248404</guid><author>hanmingjunv5</author><pubDate>Fri, 10 Jul 2020 12:44:19 +0800</pubDate><description><![CDATA[Bezier曲线构造
曲线公式
曲线：C(u)=∑i=0nBn,i(u)Pi基函数：Bn,i=n!i!(n−i)!ui(1−u)n−i
曲线：C(u) = \sum^n_{i=0}B_{n,i}(u)P_i\\
基函数：B_{n,i}=\frac{n!}{i!(n-i)!}u^i(1-u)^{n-i}
曲线：C(u)=i=0∑n​Bn,i​(u)Pi​基函数：Bn,i​=i!(n−i)!n!​ui(1−u)n−i
曲线性质
1.Bezir曲线的阶数由控制点个数决定，n+1个控制点，则对应阶数为n. 例如3次]]></description><category></category></item></channel></rss>