![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
智能机器人和无人机
文章平均质量分 63
Smart Robot and UAV
梧桐雪
I am MetaWu from a magicverse where Models are all wrong, some of which are useful.
展开
-
根据经纬度来计算旋转矩阵
在C.M.Gosslin的《Development and Experimentation of a Fast 3-DOF Camera-Orienting Device》一文中,作者给出了通过相机视角的经度、纬度、扭转来得到相机相对于固定坐标系的旋转矩阵Q0\mathbf{Q_0}Q0的表达式如下:利用三角函数恒等式sin2ν+cos2ν=1\sin^2\nu+\cos^2\nu=1sin2ν+cos2ν=1这个恒等式,该式等价于以下表达式:Q0=[(cos(ν)−1)cos2(μ)+1(原创 2021-08-23 16:10:49 · 1042 阅读 · 0 评论 -
关于转动的一些专业英语名词
除了pitch/roll/yaw,参考常用无人机RPY坐标系涉及概念总结之外,我们还会在摄像头的运动中看到其他一些关于转动的专业英语名词,如下进行一波解释:Tilt:绕着水平轴进行旋转,参考人的点头动作,本质上和pitch是同一类转动。Pan:整个头绕着竖直轴旋转,参考人的摇头动作,本质上是yaw的子类。Vergence:两只眼球绕着各自的垂直轴旋转不同的角度,产生不同的视差,参考斗鸡眼的动作,本质上也是yaw的子。Version:两只眼睛绕着各自垂直轴旋转相同的角度,维持相同的视差,参考微信表情包原创 2021-08-17 15:30:10 · 860 阅读 · 0 评论 -
使用GF集进行构型综合的方法之总结
文章目录第一步:数综合第二步:GF分解第三步:支链设计第四步:部件组装第一步:数综合输入参数:9组运动维度移动维度转动维度冗余驱动数支链约束数范围支链数被动支链数过约束数支链驱动数范围输出参数:2组支链约束数分配(约束分配解)支链驱动数分配(驱动分配解)第二步:GF分解输入参数:约束分配解输出参数:支链的GF集第三步:支链设计输入参数:支链的GF集输出参数:支链的运动副组合第四步:部件组装按照集合条件将第三步的支链装配起来即可整个过程可以通过软件自动完成原创 2021-08-12 12:03:48 · 641 阅读 · 0 评论 -
多段路径规划的轨迹生成:带有抛物线过渡的线性函数
为了让机器人的轨迹能满足平滑的需求,我们需要做轨迹规划,在许多场合,我们需要使用直线轨迹,然而纯粹直线轨迹是会带来一个无穷大的加速度,这在真实的场景下是无法实现的,因此我们可以引入抛物线(二次函数)来进行平滑的过渡。《机器人学导论》(John J. Craig, 贠超. 机器人学导论[M]. 机械工业出版社, 2006.)一书中的第七章给出了方法,但是其中的一些符号定义的不是很清楚,台大林沛群老师的机器人学(台大机器人学之运动学——林沛群(含课件+书籍))讲的比较清楚,在这里做一个总结。一、基本思路将原创 2021-08-02 21:27:30 · 2543 阅读 · 5 评论 -
为什么北半球的旋涡都是逆时针的
我们在地理课或者理论物理课程中学到过一下的知识点:北半球的旋涡都是逆时针的。比如台风的旋涡、水槽里面流水的旋涡等等。那么这是为什么呢?原因在于地球并非是一个惯性系,因为地球本身在自转,因此以地球为参考系观察,这个系统中的物体将收到一个惯性力,这个惯性力我们定义为科里奥利力FcF_cFc,这个力的大小和方向可以由以下公式来决定:F⃗c=−2mω⃗×v⃗\vec F_c=-2m\vec\omega×\vec vFc=−2mω×v根据矢量叉乘的法则,我们得到以下结论:北半球物体运动时统一受到向右的地转偏向原创 2021-07-30 14:38:46 · 5248 阅读 · 0 评论 -
刚体的相对运动与机器人连杆的运动
在机器人学中,我们使用以下公式来对如图所示进行不同参考系中运动描述的变换:AVQ=AVBORG+BARBVQ+AΩB×BARBPQ{ }^{A} V_{Q}={ }^{A} V_{B O R G}+{ }_{B}^{A} R{ }^{B} V_{Q}+{ }^{A} \Omega_{B} \times{ }_{B}^{A} R^{B} P_{Q}AVQ=AVBORG+BARBVQ+AΩB×BARBPQ其中AVQ^{A} V_QAVQ表示运动物体QQQ相对于参考物体AAA的运动在参考系{A原创 2021-07-29 16:06:01 · 865 阅读 · 1 评论 -
坐标变换中旋转矩阵的前乘和后乘
我在旋转矩阵的两种用法一文中提出了关于RRR的两个基本变换关系:旧坐标=R∗新坐标(坐标转换公式)旧坐标=R*新坐标(坐标转换公式)旧坐标=R∗新坐标(坐标转换公式)新向量=R∗旧向量(向量转移公式)新向量=R*旧向量(向量转移公式)新向量=R∗旧向量(向量转移公式)这两个公式便于记忆,但是不够严谨,严谨地用数学公式表示,我们可以写成:[0x,0y,0z]T=R∗[1x,1y,1z]T[^0x,^0y,^0z]^T = R*[^1x,^1y,^1z]^T[0x,0y,0z]T=R∗[1x,1y,1z]T[i原创 2021-07-18 22:25:55 · 3154 阅读 · 0 评论 -
对流形(Manifold)的最简单快速的理解
文章目录引言:流形的初步概念流形的性质之一:连续性流形的性质之二:局部坐标转移性流形的性质之三: 可微性一些流形的例子1.闭合曲面2.克莱因瓶3.射影平面4.射影空间PnP^nPn5.Grassmann流形引言:流形的初步概念在学习李群的时候,我们会听到的第一句话就是“李群是群,同时也是流形(Manifold)”。第一次听到流形的时候,感觉这个名字很fashion,但是又非常疑惑,到底什么东西才是流形呢?带着这样的疑惑,我参考不少教材、书本、论文以及视频,都么有得到一个快速而准确的解释。直到看到了下面这原创 2021-06-23 12:19:57 · 19688 阅读 · 5 评论 -
使用有限位移旋量矩阵N实现刚体位移的计算
本博客使用numpy模块来实现戴建生《机构学与机器人学的几何基础与旋量代数》一书5.9节《有限位移旋量表示的Chasles运动分解》第一部分“实现缸体位移的伴随作用”中例5.3的全过程。对应的代码如下:import numpy as npfrom numpy import cos,sin,pi#已知变换前的刚体上某条线的位姿旋量L,过原点旋转轴的方向s和转角theta,以及刚体的平移向量d#求变换之后刚体上直线的位姿旋量LpL = [0.707,0.5,0.5,0.5,-1,0.293]原创 2021-06-18 12:12:47 · 712 阅读 · 1 评论 -
力学中的约束分类
一、几何约束v.s.微分约束这两种约束的核心区别在于几何约束(geometric constraint)仅仅是对物体的位置坐标进行了约束,而微分约束则引入了速度维度,约束方程中包含了位置对时间的导数的项。所以我们看到一个约束方程中包含速度项x˙\dot{x}x˙,那么这个约束就升级为了微分约束(differential constraint)。二、可积分约束v.s.不可积分约束对于微分约束,如果满足可积性条件,能够表示成等价的积分形式,则称为可积约束(Integrable constraint),可积原创 2021-05-19 12:28:37 · 10287 阅读 · 2 评论 -
标准椭圆和任意椭圆方程之间的变换公式推导
我们在高中数学中就学习过标准的椭圆方程如下:x2a2+y2b2=1\frac{x^2}{a^2}+\frac{y^2}{b^2}=1a2x2+b2y2=1这个方程表示一个中心在坐标原点、长轴延xxx轴长度为aaa,短轴沿yyy轴长度为bbb的正椭圆(a>b>0的条件下a>b>0的条件下a>b>0的条件下),如下图所示:一般来说,椭圆可以以任何一点为中心,也可以有与坐标轴不平行的轴。这样的椭圆总是可以从标准位置的椭圆开始,然后进行旋转和/或平移得到。对于一般性的公式原创 2021-04-26 21:23:46 · 31765 阅读 · 7 评论 -
对角速度的深入理解
在学习机器人学的时候,角速度是一个基本的概念,但是越深入看,约发现不少公式无法理解,后来才发现,我对角速度的理解还停留在高中生水平(也就是角速度是转动角度对时间的变化率),这样的认知是没法解释很多深入的内容的,比如螺旋理论、比如机器人运动求解等等。庆幸的是有清华大神对角速度的话题展开了深入的研究,并且发表了文章关于刚体角速度的认识与思考,我看了之后真是拨云见日,相见甚晚,感慨这不愧是清华学者的杰作!文章指出,我们从中学就开始了解和学习角速度这个物理量.认知也从中学的标量,到大学物理中的矢量。文章通过分析刚原创 2021-04-16 21:27:56 · 1844 阅读 · 0 评论 -
【机械常识】螺栓、螺钉、螺柱、螺杆、螺母的区别和归类
在学习机械基础入门的时候,经常会看到这些非常相似的名词,如螺栓、螺钉、螺柱、螺杆、螺母等,那么,这些螺字辈的东西,到底有什么异同点呢,下面我们就来分析一下:一、螺柱(Stud)螺柱顾名思义就是带有螺纹的柱子,可以简单理解是对一根金属圆柱进行攻丝之后得到的产物。螺柱的两端均外带螺纹的一类紧固件。连接时,它的一端必须旋入带有内螺纹孔的零件中,另一端穿过带有通孔的零件中,然后旋上螺母,使这两个零件紧固连接成一件整体。这种连接形式称为螺柱连接,也是属于可拆卸连接。主要用于被连接零件之一厚度较大、要求结构紧凑,或原创 2021-04-12 14:03:59 · 41897 阅读 · 1 评论 -
使用python绘制Ball给出的拟圆柱面
对于二系螺旋,也就是两个相互独立的螺旋进行线性组合,我们可以得到一个新的螺旋,而对于这个新螺旋具有一定的性质,比如其的轴一定与原来两个螺旋的公法线相交。我们假设交点为ZZZ,并且新螺旋的轴方向与x轴的夹角为θ\thetaθ,那么我们可以得到ZZZ是关于θ\thetaθ的函数,具体的表达式如下:Z=−12(hα−hβ)sin(2θ)Z=-\frac{1}{2}(h_{\alpha}-h_{\beta})sin(2\theta)Z=−21(hα−hβ)sin(2θ)注意我们在这里假设图形是对称分布的,也就原创 2021-03-31 19:18:23 · 612 阅读 · 1 评论 -
直线的矢量方程之疑:一条直线到底由几个独立参数决定?
黄真教授主编的《高等机构学》中在介绍旋量理论的时候提出了直线矢量方程,最后得出结论“直线方程取决于两失量S和r的5个独立的参数”,然而在黄真教授主编的另外一本专著《Theory of Parallel Mechanisms》中,相同的前提条件下,得出的结论却是“Therefore only four of the six scalars (L, M, N; P, Q, R) are independent”(即在S和r中的6个参数中,只有4个是变量的),显然两处存在一定的矛盾,具体的文章截图如下:原创 2021-03-30 14:59:26 · 1724 阅读 · 0 评论 -
对力螺旋(wrench)的理解
今天在学习旋量理论的时候发现对力螺旋的概念不是很清晰,主要是因为理论力学没系统学,复习了一下,参考哈工大出版社的《理论力学I》教材,可以在b站找到视频【国家精品】理论力学_哈尔滨工业大学_孙毅教授。然后明白了,其实任何力系,都是用一个力螺旋来表示;如同任何运动,都可以用一个运动螺旋表示一样。螺旋统一了力和运动,真实一种非常伟大的数学表示方法!首先我们要理解什么叫力系,所谓力系就是一群力,这些力作用于刚体,会产生力的作用和力矩的作用从而来改变刚体的运动状态。比如飞机,受到重力、推力、阻力等多个里的作用,然而原创 2021-03-26 20:09:17 · 7606 阅读 · 3 评论 -
刚体的瞬时螺旋运动
对于瞬时运动,刚体的角速度可以认为是绕着它的瞬心进行了转动,或者相对于定轴进行了转动,我们可以使用一个线矢量来表示这个定轴;对于平动,我们可以使用一个偶量来表示,偶部与平动的方向平行即可,可以使用一个方向矢量来进行表示。我们把转动和运动相加,可以得到一个螺旋来表示一般性的运动,这个螺旋的原部表示转动轴,偶部表示刚体上与原点重合的那个点的线速度。反过来,一个螺旋可以分解成一个纯转动螺旋和一个纯移动螺旋之和,我们可以通过“原偶原方”公式来计算这个螺旋的节距,从而计算出纯转动的线矢量及其轴线矢量方程和纯移动的偶原创 2021-03-25 00:58:28 · 1050 阅读 · 0 评论 -
理解同步和异步通信:以ROS的3中典型通信机制为例
一、ROS中的几种通信机制在ROS中,不同的进程可以可以被视为不同的节点,节点之间的数据传输需要通过消息通信来完成,常见的消息通信类型有话题、服务、动作、参数等,我们可以用下面这张表来说明。二、不同通信机制的特点我们从上面可以简单看出不同通信机制的特点:其中单向消息发送/接收方式的话题(topic);双向消息请求/响应方式的服务(service);双向消息目标(goal)/结果(result)/反馈(feedback)方式的动作(action)。另外,节点中使用的参数可以从外部进行修改。这在大的框架原创 2020-12-20 00:13:17 · 2675 阅读 · 3 评论 -
YOLO踩坑:编译darknet_ros报错no matching function for call to ‘_IplImage::_IplImage(cv::Mat&)’的解决方案
前几天按照YOLO_v4的教程,想在ROS环境下运行YOLO算法,结果在编译的环节报错了,如下图所示。百度搜索无果,后来用bing搜索终于找到了可行的参考解决方案,因为opCV版本的问题,我们需要在编译的时候加上一些额外的参数如下:catkin build darknet_ros --cmake-args -DCMAKE_CXX_FLAGS=-DCV__ENABLE_C_API_CTORS具体的原因在链接中解释的比较明白了:I think I found the way to fix the p原创 2020-12-19 12:37:08 · 5032 阅读 · 7 评论 -
ROS中的catkin之前世今生
ros中有一个catkin命令,刚看到的时候非常奇怪这是个什么东西,后来查了一下才知道这其实是一种花,图片如下所示。因为ROS早期的创始实验室叫做Willow Garage,而柳树(Willow)的花就属于catkin这种花序,所就使用了这个花的名字命名了ROS的编译系统。widi百科的官方说明如下:catkin is the official build system of ROS and the successor to the original ROS build system, rosbui原创 2020-11-26 11:35:33 · 859 阅读 · 0 评论 -
图解无人机试飞准备:QGroundControl的配置
无人机试飞之前,我们需要对飞控进行配置,在我们的实验中,我们使用了PixHawk作为飞控的硬件,使用QGroundControl地面站完成了无人机飞控配置,包括飞控固件的烧录、传感器的校准、遥控器的校准、电池电调校准、飞行模式的设置等操作。需要注意的事项在下图中进行了图解...原创 2020-10-26 11:26:11 · 2442 阅读 · 0 评论 -
张氏标定法求相机模型中的内参(Intrinsics)
张正友2000年在《A Flexible New Technique for Camera Calibration》一文中提出了一种灵活的新技术来方便地校准相机。它只需要相机观察在几个(至少两个)不同方向显示的平面图案。无论是相机还是平面图案都可以自由移动。运动是不需要知道的。对径向透镜畸变进行了建模。所提出的程序包括一个封闭形式的解决方案,然后是基于最大似然准则的非线性细化。通过计算机仿真和实测数据对该方法进行了验证,取得了良好的效果。与传统的使用两正交平面或三正交平面等昂贵设备的技术相比,该技术使用方便原创 2020-09-03 23:48:10 · 1458 阅读 · 2 评论 -
SLAMBook踩坑记之CH5:相机与图像
/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory原创 2020-09-02 00:25:53 · 1115 阅读 · 0 评论 -
Ubuntu18.04下Kdevelop报错“Failed to specify program to start:”解决方法
今天在使用Kdevelop的时候遇到了以下报错:*** Failed to specify program to start: ***查了一个小时才发现问题在于Current Launch Configuration配置出错了。解决方案是依次点击Run-Current Launch Configuration,然后选择cpp程序的文件名而不是New compiled Binary Laucher...原创 2020-08-27 15:56:10 · 1295 阅读 · 1 评论 -
旋转矩阵的两种用法
我们在研究机器人或者计算机视觉的时候经常需要用到旋转矩阵,常用R\textbf{R}R来表示一个旋转操作,它的组成可以简单的认为是原来坐标系的两组正交基ex\textbf{e}_xex和ey\textbf{e}_yey,在旋转后在世界坐标系中的新坐标wex′^w\textbf{e}_x'wex′和wey′^w\textbf{e}_y'wey′,如下图所示。看似简单,但是其实这个矩阵有着丰富的含义,至少有以下两种意义,如果不仔细的话,很容易就搞混淆了,下面就总结一下旋转举证的这两个作用。一、动态点原创 2020-08-25 22:28:49 · 8418 阅读 · 1 评论 -
旋转矩阵罗德里格斯公式(Rodriguez formula)的理解证明
罗德里格斯公式(Rodriguez formula)是计算机视觉中的一大经典公式,在描述相机位姿的过程中很常用,其形式如下:我们假设v⃗\vec{v}v向量绕n⃗\vec{n}n轴转了θ\thetaθ角度,得到了v⃗′\vec{v}'v′向量,R\bf{R}R为旋转矩阵,我们由旋转矩阵的概念可以知道,他们的关系如下:v⃗′=Rv⃗\vec{v}'=\textbf{R} \vec{v}v′=Rv也就是说旋转前的向量坐标乘以旋转矩阵,等于旋转后的向量坐标,以下是这个公式的推导过程(该推导及下图来自于you原创 2020-08-24 21:21:10 · 4991 阅读 · 0 评论 -
Ubuntu18.04下运行ORB-SLAM2踩坑记
今天做了一下高翔SLAM十四讲的作业如下,文档讲的已经比较详细了,但是还是会遇到一些坑,在此记录。比较完整的参考链接(不过有些坑他也没有提到),特别是版本问题,这个日新月异,很难保证今天能用的版本或者版本名,明天就失效了,随缘随缘。坑一:usleep问题(error: ‘usleep’ was not declared in this scope)重点参考这篇博客(写的还不错),在以下文件中加入一行代码即可:#include <unistd.h>Examples/Monocu原创 2020-08-15 00:31:20 · 2709 阅读 · 1 评论 -
图解C++工程的编译原理
高翔SLAM理论与实践公开课中介绍了一个族简单C++工程(HelloSLAM)的编译过程,我把这个过程整理成为了一张图片如下,并且在后面附上注释。总的来说一个C++工程的编译和执行分成以下几个步骤预处理:也就是对#include等带#符号的头文件等进行处理,这里需要编写.h文件来把模块中定义的函数名及其使用方法(也就是接口)定义清楚,以便于在主程序中进行调用。编译,这个过程就是把.cpp编译成.o文件(机器码文件)的过程,当然只有主程序mail.cpp才会编译成可执行文件,其他的模块文件只会根据配原创 2020-08-11 15:24:49 · 735 阅读 · 0 评论 -
制作ubuntu18.04镜像并且在Vmware虚拟机中运行
需求:已经在工控板T4001A中安装了Ubuntu18.04系统,并且安装了RealSense、ROS等驱动,现在需要制作一个镜像,使得下一次在新的主机上安装系统的时候免去驱动安装的烦恼,因为镜像比较大,因此普通的方法可能会遇到4GB容量上限的问题,因此需要额外的步骤来解决,具体的参考步骤如下:第一步:制作sblive镜像参考如何制作ubuntu系统镜像一文操作即可:#1.如果你已经添加过PPA,请先删除(否则忽略此步):sudo add-apt-repository --remove ppa:ne原创 2020-08-10 18:02:45 · 2843 阅读 · 5 评论 -
DJI-F450无人机硬件部分装配
根据以下框图,今天进行了大疆F450无人机硬件部分的组装,全过程参考了:图文并茂详细教程之–用pixhawk飞控组装一台F450四轴无人机一、焊接电调与电源接口注意事项:电调与底板之间的焊点不能虚焊。飞行器启动后电流比较大,虚焊会导致发热严重并脱落,造成飞行中的严重事故!前后四个焊点(上图)不能太大,否则会阻挡以后电池的安装。焊点要光滑饱满,焊锡覆盖整个焊点和接线。焊接好以后用手拖拽测试是否牢固。焊接效果:二、电机香蕉头焊接和套上热缩管很多电机出厂都没有焊接香蕉头,需要自己焊接。香蕉原创 2020-08-07 23:36:24 · 16664 阅读 · 1 评论 -
ROS系统安装复盘:在Ubuntu18.04系统中安装Melodic版本
项目需要今天在TX2平台上安装ROS操作系统驱动Realsense摄像头,参考ROS官方Ubuntu install of ROS Melodic文档,安装了ROS操作系统,运行了经典的turtlesim程序验证了安装的成功。原创 2020-07-15 21:05:11 · 393 阅读 · 0 评论 -
开环和闭环的最通俗理解
开环:设定好输入的参数无视输出的单向系统。有点像黑市商店,买家卖出了商品之后就不再管卖家了。闭环:输入的参数需要根据输出的反馈来进行调节。有点像天猫商城,买家卖出商品之后还需要根据买家的反馈来进行售后服务。这样理解不知道对不对哈哈。...原创 2020-05-15 21:07:20 · 7281 阅读 · 2 评论 -
对卷积公式的形象理解
被棒打了会觉得疼,一直被打一直疼。今天看了Dr.CAN在B站上传关于卷积的教学视频理解卷积的含义结合他上课举的例子,我想到了一种使用被棒子击打之后的疼痛值来形象来理解以下卷积公式的美妙方法:f(t)∗h(t)=∫0tf(τ)h(t−τ)dτf(t)*h(t)=\int_0^t{f(\tau)h(t-\tau)d\tau}f(t)∗h(t)=∫0tf(τ)h(t−τ)dτ我们假设h(t)h(...原创 2020-05-03 23:38:58 · 682 阅读 · 1 评论 -
控制系统极点和稳定性之间的关系
理解控制系统的稳定性,我们需要深刻理解极点和微分方程的关系。解微分方程本质上为了得到某个变量随时间的变化量。微分方程的解往往和指数函数有关系,而指数函数又和周期变化联系在一起,因为欧拉告诉我们,在复平面上的指数函数其实就是周期函数。所以,如果极点在左半平面,震荡将是收敛的,系统会稳定,而在有半平面,震荡是发散的,系统将是不稳定的。不知道这么理解对不对,有不对的地方欢迎拍砖指正。...原创 2020-05-03 10:37:40 · 7625 阅读 · 2 评论 -
DH坐标系、副、连杆编号之间的对应关系
下面以Puma机器人为例,说明坐标系、副、连杆之间编号的对应关系在这个机器人中我们认为n=6,表示所包含副(pair)的数量,也就是关节(joint)的数量,同时刚好等于实体连杆的数量(不包括地面)这个机器人一共有6+1个连杆(6个实体连杆+地面作为0号连杆)、7个坐标系(分别与7个连杆对应),其中第i个坐标系以第i个副的轴作为Z轴,第7个坐标系的轴是自由定义的,我们通常把它定义为与第6个副的...原创 2019-12-30 11:22:52 · 834 阅读 · 0 评论 -
机构分析全流程
一、正运动学二、逆运动学三、正雅各比四、逆雅各比五、加速度矩阵六、奇异点分析七、灵巧性分析八、工作空间分析九、刚度分析原创 2019-12-24 13:03:22 · 304 阅读 · 0 评论 -
常用无人机RPY坐标系涉及概念总结
一、地面坐标系(地轴系)地面坐标系是与地面固定的坐标系,用于描述飞行器相对于地面的运动特征及重力分析,如确定飞行器的姿态、航向、相对起飞点的空间位置等具体参数,我们也将其称为地轴系,并且作为参考坐标系。定义原点O:飞行器起飞时的几何中心点;定义地轴系x轴方向:飞行器起飞时的初始前进方向,x位于水平面内(与法向量n=[0,0,1]’或重力方向g=[0,0,-1]’垂直);我们约定用ex=[1,...原创 2019-12-21 17:48:09 · 3899 阅读 · 0 评论