- 博客(35)
- 收藏
- 关注
原创 XTDrone简明安装教程
本机讲解XTDrone安装方法和经验。XTDrone是基于PX4、ROS与Gazebo的无人机通用仿真平台。支持多旋翼飞行器(包含四轴和六轴)、固定翼飞行器、复合翼飞行器(包含quadplane,tailsitter和tiltrotor)与其他无人系统(如无人车、无人船与机械臂)。在XTDrone上验证过的算法,可以方便地部署到真实无人机上。
2022-10-10 10:59:12
6585
18
原创 【力扣刷题】动态规划问题的思考与总结
文章目录什么是动态规划解决动态规划问题的步骤基础递推算法子问题求和爬楼梯杨辉三角子问题最值最大子序和二维DP数组非最优子结构买卖股票(多状态递推)打家劫舍(分治算法)贪心算法背包问题(待补全)什么是动态规划动态规划(英语:Dynamic programming,简称 DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。什么样的题目需要用动态规划?动态规划要解决的都是一些问题的最优解,即从很多解决问题的方案中找到最优的一
2021-08-18 11:36:07
829
1
转载 C++ priority_queue 用法详解
不出所料,priority_queue 容器适配器定义了一个元素有序排列的队列。默认队列头部的元素优先级最高。因为它是一个队列,所以只能访问第一个元素,这也意味着优先级最高的元素总是第一个被处理。但是如何定义“优先级”完全取决于我们自己。如果一个优先级队列记录的是医院里等待接受急救的病人,那么病人病情的严重性就是优先级。如果队列元素是银行的借贷业务,那么借记可能会优先于信贷。priority_queue 模板有 3 个参数,其中两个有默认的参数;第一个参数是存储对象的类型,第二个参数是存储元素的底层容器
2021-08-01 19:47:29
2482
转载 迭代器是什么,C++ STL迭代器(iterator)用法详解
无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用“迭代器(iterator)”来实现。那么,迭代器到底是什么呢?我们知道,尽管不同容器的内部结构各异,但它们本质上都是用来存储大量数据的,换句话说,都是一串能存储多个数据的存储单元。因此,诸如数据的排序、查找、求和等需要对数据进行遍历的操作方法应该是类似的。既然类似,完全可以利用泛型技术,将它们设计成适用所有容器的通用算法,从而将容器和算法分离开。但实现此目的需要有一个类似中介的装置,它除了要具有对容器进
2021-07-14 21:22:11
4825
转载 C++ STL unordered_map容器用法详解
C++ STL 标准库中提供有 4 种无序关联式容器,本节先讲解 unordered_map 容器。unordered_map 容器,直译过来就是"无序 map 容器"的意思。所谓“无序”,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。对于已经学过 map 容器的读者,可以将 unordered_map
2021-07-14 21:10:02
1645
转载 C++ STL deque容器用法详解
deque 是 double-ended queue 的缩写,又称双端队列容器。前面章节中,我们已经系统学习了 vector 容器,值得一提的是,deque 容器和 vecotr 容器有很多相似之处,比如:deque 容器也擅长在序列尾部添加或删除元素(时间复杂度为O(1)),而不擅长在序列中间添加或删除元素。deque 容器也可以根据需要修改自身的容量和大小。和 vector 不同的是,deque 还擅长在序列头部添加或删除元素,所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是
2021-07-14 20:38:02
592
转载 C++ STL vector容器用法详解
vector 容器是 STL 中最常用的容器之一,它和 array 容器非常类似,都可以看做是对 C++ 普通数组的“升级版”。不同之处在于,array 实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预。vector 常被称为向量容器,因为该容器擅长在尾部插入或删除元素,在常量时间内就可以完成,时间复杂度为O(1);而对于在容器头部或者中部插入或删除元素,则花费时间要长一些(
2021-07-14 20:30:23
328
转载 C++ STL array容器用法详解
array 容器是 C++ 11 标准中新增的序列容器,简单地理解,它就是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。在使用上,它比普通数组更安全(原因后续会讲),且效率并没有因此变差。和其它容器不同,array 容器的大小是固定的,无法动态的扩展或收缩,这也就意味着,在使用该容器的过程无法借由增加或移除元素而改变其大小,它只允许访问或者替换存储的元素。STL 还提供有可动态扩展或收缩存储空间的 vector 容器,后续章节会对其做详细介绍。array 容器以类模板的形式定义在
2021-07-14 20:16:00
403
转载 C++ STL基本组成(6大组件+13个头文件)
C++ STL基本组成(6大组件+13个头文件)通常认为,STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的,它们各自的含义如表 1 所示。表 1 STL 组成结构STL的组成含义容器一些封装数据结构的模板类,例如 vector 向量容器、list 列表容器等。算法STL 提供了非常多(大约 100 个)的数据结构算法,它们都被设计成一个个的模板函数,这些算法在 std 命名空间中定义,其中大部
2021-07-14 17:48:54
530
原创 【论文笔记】有向平衡图分布式连续时间优化算法
文章目录写在前面分布式算法平衡图收敛性证明写在前面原论文:Distributed convex optimization via continuous-time coordination algorithms with discrete-time communication.上一篇博客:【论文笔记】标准正交基和投影在分布式凸优化中的应用本文还是Kia 20151这篇论文的笔记,之前写过一篇关于正交化的笔记,本以为不会再看这篇文章了,没想到有一天会继续填坑。最近在做有向图的分布式优化算法,所以把这篇又
2021-07-01 17:17:03
1122
2
原创 【论文笔记】无向图下的分布式时变二次优化(Quadratic Optimization)
文章目录写在前面问题描述分布式算法结论与证明写在前面原论文:Distributed Time-Varying Quadratic Optimization for Multiple Agents under Undirected Graphs1.由于个人喜好问题,本文只做原论文中的Problem 2,Section 3-C,Section 3-D相关笔记。问题描述优化问题minf(x,t)=∑i=1nfi(xi,t)s.t.Lx=0,x∈Ω(1)\begin{aligned}\min&am
2021-04-13 22:16:39
1027
原创 【论文笔记】多智能体加权质心跟踪(Weighted Centroid Tracking)的分布式观测控制器设计
文章目录写在前面问题描述状态观测器证明L+Π\boldsymbol L+\boldsymbol \PiL+Π正定性经典consensus算法加权质心跟踪算法闭环动力学收敛性分析MATLAB仿真写在前面原论文:A Decentralized Controller-Observer Scheme for Multi-Agent Weighted Centroid Tracking。本文是Antonelli 20131的总结,主要介绍了一种控制器和观测器结合的分布式加权质心跟踪方法,其中每一个智能体都通过观
2021-03-17 21:44:23
1252
原创 神经网络自适应反馈控制设计
文章目录写在前面问题描述自适应神经网络控制器RBF神经网络神经网络训练自适应律之一自适应律之二写在前面自适应神经网络控制器将自适应控制与神经网络相结合,通过神经网络系统辨识的方法达到自适应控制的目的。控制器针对系统模型参数未知的被控对象,基于系统的状态变量,通过神经网络辨识被控对象的未知参数,并将被控对象的模型信息提供给自适应反馈控制器。相对于传统的PID控制器,自适应神经网络控制器有更强的鲁棒性。问题描述考虑一个含有未知函数的非线性系统,其状态方程可表示为{x˙=f(x)+Puy=x(1)\
2021-02-23 22:46:59
7049
5
原创 【论文笔记】连续时间梯度跟踪算法收敛性分析
文章目录写在前面分布式优化问题问题描述和假设算法和变量定义收敛性分析速度递减梯度递减均值一致最优误差写在前面原论文:Convergence Analysis of a Continuous-Time Distributed Gradient Descent Algorithm本文是Zhang 20211的笔记,原论文将Qu 20182的梯度跟踪算法扩展到连续时间版本,并对收敛性进行分析。我感觉原文变量定义方式不太主流,可能有些错误的地方,因此证明部分自己又重新推导了一遍。欢迎读者检查本文推导部分,如果
2021-02-02 21:57:08
1428
3
原创 【论文笔记】利用平滑度加速分布式优化——梯度跟踪法(Gradient Tracking)
文章目录写在前面问题描述和算法收敛性证明写在前面原论文:Harnessing Smoothness to Accelerate Distributed Optimization.本文是Qu 20181的笔记,主要是对离散系统分布式梯度跟踪算法证明过程的总结。问题描述和算法问题描述minx∈Rdf(x)=1n∑i=1nfi(x)\min_{x\in\mathbb R^d} f(x)=\frac{1}{n}\sum_{i=1}^n f_i(x)x∈Rdminf(x)=n1i=1∑nfi
2021-01-06 14:49:35
3211
14
原创 精确分布式一阶优化方法(Exact Distributed First-Order Method)
文章目录写在前面问题描述分布式梯度下降(DGD)精确一阶算法(EXTRA)原始对偶算法分布式梯度跟踪(DGT)写在前面本文简单的对已有的分布式一阶优化方法做个综述。虽然原论文以及大部分引文提出的是离散时间系统分布式优化方法,但由于我本人研究的课题主要针对连续时间系统,所以本文所述的分布式优化方法主要以连续时间形式呈现。基于上述原因,本文中不再细述原论文关于离散时间系统的证明,主要是分享现有的分布式一阶优化方法,以及设计连续时间方法中我的一些想法和思考。问题描述考虑分布式优化问题minf(x)=
2020-12-27 19:01:46
3541
17
原创 多智能体一致性(Consensus)中的矩阵理论(Matrix Theory)
文章目录写在前面一致性算法连续时间离散时间一致性证明连续时间离散时间矩阵理论特征值和特征向量特征多项式代数重数几何重数总结写在前面最近在看一些分布式优化的文章,但是大部分文章都是用的离散时间算法。我之前一直研究的是连续时间一致性(consensus)控制问题,现在想把离散时间控制拾起来。这篇文章前半部分讲解连续和离散系统的一致性算法,互相做个对比,加深一下印象和理解;后半部分回顾在算法证明中会用到的矩阵理论的基本知识。下面进入文艺复兴环节,让我们回顾一下最经典的一致性算法和矩阵理论的基本知识吧。一
2020-12-18 16:05:38
11496
13
原创 用MATLAB仿真仿射队形变换(affine formation maneuver)
文章目录写在前面如何仿真静态编队控制构建stress matrixMATLAB求解LMI问题静态编队控制源代码如何仿真时变轨迹和队形变换轨迹生成时变leader控制律时变轨迹和队形变换源代码写在前面原论文标题:Affine Formation Maneuver Control of Multiagent Systems.之前的文章讲了赵世钰的仿射编队控制原理1,进行了相关理论分析,发出来之后有不少同学私信问我如何复现他的论文。于是我现在再写这篇文章填个坑,把如何用MATLAB复现的思路讲一下,给之前的
2020-11-25 22:29:10
7291
38
原创 用MATLAB和内点法实现带有时变不等式约束的分布式优化
文章目录问题描述内点法MATLAB实现仿真结果源代码问题描述考虑代价函数fi(xi,t)=∥xi−xi∗(t)∥2.f_i(x_i,t)=\|x_i-x_i^*(t)\|^2.fi(xi,t)=∥xi−xi∗(t)∥2.求解一个简单的优化问题实例:min12∑i=1nfi(xi,t)s.t.fi(xi,t)≤1xi−xj=0\begin{aligned}\min &\quad \frac{1}{2}\sum_{i=1}^n f_i(x_i,t)\\\operatorn
2020-11-10 22:03:12
2265
2
原创 【论文笔记】基于Control Barrier Function的二次规划(QP)控制
文章目录写在前面问题描述RBF1. Logarithmic2. Inverse-type3. ReciprocalZBF两者的联系CBF构建RCBFZCBFQP设计ES-CLFCLF-CBF QP写在前面原论文:Control Barrier Function Based Quadratic Programs for Safety Critical Systems.本文为近期阅读的论文(Ames 2017)1的笔记。该论文介绍了两种barrier function,即reciprocal barrie
2020-10-23 14:55:10
10854
29
原创 MATLAB App Designer生成独立GUI(可执行exe)并添加依赖项
文章目录写在前面生成步骤设置编译器编写GUI生成exe常踩的坑写在前面近期,由于朋友需求以及科研任务要求,我研究了一下MATLAB GUI设计,写了两个小程序。一个是读取excel部门名单生成excel排班表的排班生成器,另一个是用于机器人编队中的控制和优化算法仿真软件。程序在MATLAB上跑通很容易,麻烦的是如何将MATLAB GUI程序编译成独立可执行的程序?如何将编译好的独立可执行程序发布在没有安装MATLAB的电脑上?这篇文章讲一下生成exe的经验。生成步骤生成exe的过程下面将一步步实现
2020-10-16 18:11:54
15108
19
原创 【论文笔记】有向图下的分层仿射队形控制
文章目录写在前面预备基础分层拉普拉斯矩阵有向图下的仿射队形有向图下的仿射可操控条件leader和follower分层控制律写在前面原论文标题:Layered Affine Formation Control of Networked Uncertain Systems: A Fully Distributed Approach Over Directed Graphs本文为近期阅读的论文(Dong 2020)1的笔记。该论文研究欧拉-拉格朗日系统(以下称EL系统)有向图拓扑下的分布式仿射编队控制。论文
2020-10-09 16:24:58
1633
4
原创 【论文笔记】仿射队形控制原理与stress matrix的构建
文章目录写在前面预备基础线性相关和仿射相关Stress MatrixDistance RigidityAffine Formation Control的实现Affine Image和Stress Matrix的关系什么条件下Stress Matrix可行如何构建Stress Matrix奇异值分解的原理和应用特征值和特征向量奇异值分解常见应用写在前面原论文标题:Affine Formation Maneuver Control of Multiagent Systems.本文为近期阅读的论文(Zhao
2020-09-26 20:26:23
4773
原创 【论文笔记】具有反馈控制的自主优化
文章目录写在前面问题描述最优性分析稳定性分析LaSalle函数不变性原理严格极小值的渐进稳定性写在前面本文为近期阅读的论文(Hauswirth 2020)1和其前作(Menta 2018)2的笔记。该论文研究如图1所示互连反馈系统的稳定性,但实际上通过timescale separation假设,直接将物理系统的稳态代入了优化部分,优化部分相当于并未用到状态xxx的反馈。图1. 互连反馈系统问题描述这里以线性系统为例。考虑线性时不变(LTI)系统x˙=Ax+Bu+Qw(1)\begin{
2020-09-14 12:41:48
622
原创 【论文笔记】标准正交基和投影在分布式控制中的应用
文章目录写在前面正交基与投影高维投影和Gram-Schmidt过程三维空间四维及以上空间Gram-Schmidt过程构造标准正交基后记Section 4.1中的应用Section 5.2中的应用题外话两个定理微分方程求解写在前面之所以想要写这篇文章,是因为最近在看的一篇分布式优化论文(Kia 2015)1,其中有这么一个问题。令Πn=In−1n1n1nT\Pi_n=I_n-\frac{1}{n}1_n 1_n^TΠn=In−n11n1nT。为了简便表示,可以定义r∈Rnr\in\mathbb
2020-09-14 12:39:58
973
原创 机械臂协同搬运中的内力建模
文章目录写在前面virtual linkage模型内力的计算两个机械臂搬运实例源代码写在前面上一篇文章(机械臂协同搬运中的阻抗控制)有一点遗留部分没有讲,即内力FintF_{int}Fint应该如何建模。我们知道,FintF_{int}Fint在抓持矩阵GGG的零空间里,即GFint=0GF_{int}=0GFint=0。如何选取一个有实际物理意义的模型,同时能够满足前述等式约束呢?这篇文章就会介绍一个virtual linkage模型1来表示搬运物体的内力。virtual linkage模型
2020-09-05 08:53:08
1396
1
原创 机械臂协同搬运中的阻抗控制
文章目录阻抗模型物体阻抗分布阻抗Matlab和RTB仿真物体阻抗分布阻抗源代码阻抗模型阻抗控制的目的是将原有物体动力学修正为我们期望动力学。假设有一个弹簧,通过阻抗控制,可以使得它的刚度降低,实际推它时有可能感觉像一个海绵。阻抗模型期望动力学一般为线性二阶系统Md(X¨o−X¨od)+Kv(X˙o−X˙od)+Kp(Xo−Xod)=Fext,M_d(\ddot X_o-\ddot X_o^d)+K_v(\dot X_o-\dot X_o^d)+K_p(X_o-X_o^d)=F_{ext},Md
2020-08-26 11:25:10
2936
10
原创 飞桨深度学习从零实践(一):从房价预测看模型构建
文章目录写在前面模型构建基本流程飞桨重写房价预测模型1. 数据处理2. 模型设计3. 训练配置4. 训练过程5. 保存模型测试模型预测效果源代码写在前面本文源于百度AI平台飞桨学院《百度架构师手把手带你零基础实践深度学习》课程中我自己的心得和理解。本文旨在介绍使用飞桨框架构建神经网络过程,并从房价预测模型的理解和代码的构建角度来整理所学内容,不求详尽但求简洁明了。模型构建基本流程飞桨的模型覆盖计算机视觉、自然语言处理和推荐系统等主流应用场景,所有场景的代码结构完全一致,如图1所示。图1.
2020-08-16 15:51:09
667
原创 用matlab和RTB做二连杆机械臂动力学建模
文章目录写在前面2连杆机械臂RTB建模仿真与验证源代码写在前面本文使用的工具为matlab以及Peter Corke的RTB(Robotics Toolbox)。基于RTB 10.3.1版本,我写了RTE(Robotics Toolbox Extension),增加了一些移动机器人、机械臂以及路径规划相关代码。同时,RTE也修复了原RTB的一些小bug。听说最近RTB出了10.4,不知道bug修复完没有,有用过的同学可以谈谈感想。个人建议这篇文章最好用我GitHub里的RTE工具箱,下载点这里。安装方
2020-08-15 15:40:37
12412
15
原创 三维刚体运动与机械臂POE运动学建模
文章目录写在前面三维刚体运动SO(3)和李群SE(3)和螺旋理论机械臂运动学前向运动学POE和DH参数的关系写在前面不同于工程界常用的DH参数(Denavit-Hartenberg parameters),学术界比较常用的机械臂建模方法为指数乘积公式POE(The product of exponentials formula)。后者的优点是在运动学建模上比DH参数更简洁,可以和李群理论联系起来,方便扩展到动力学建模;缺点是建立的模型和实际机械臂数学上等效,但难以对应关节坐标系。由于该方法的相关介绍在网
2020-08-06 20:53:36
4965
原创 git使用的几个小tips分享
文章目录写在前面问题1:Github上面的项目太大怎么办?仅clone某个分支仅clone最新一次commit问题2:Github下载速度慢怎么办?更改host利用Gitee同步问题3:git如何同步代码多个远程仓库?命名方式同步配置方式同步查看远程库写在前面本文是我在使用git过程中总结出来的几个小经验,能够解决初学者在使用远程仓库,如GitHub、Gitee等,可能遇到的几个常见问题。由于本人也在不断探索中,有新的经验也会继续在这里不定期更新。问题1:Github上面的项目太大怎么办?初学者看到
2020-07-28 18:18:54
1332
原创 反馈线性化:具有柔性关节的单连杆操纵臂
文章目录写在前面机械臂模型输入-状态反馈线性化坐标变换和微分同胚输入-状态可反馈线性化的条件机械臂实例1输入-输出反馈线性化相对阶和李导数输入-输出可反馈线性化的条件跟踪控制器设计机械臂实例2写在前面通过反馈和坐标变化来消除系统非线性的控制方法,称为反馈线性化。反馈线性化(feedback linearization)是用来设计非线性系统(nonlinear systems)控制器的主要方法之一。本文由机械臂控制实例出发,介绍反馈线性化的基本概念。本文并不涉及模型不确定性(model uncer
2020-07-25 22:00:16
3087
1
转载 ndarray数组基本结构和操作
写在前面一、创建ndarray(四种)二、属性操作(六个)三、基本运算(七个)四、索引和切片1. 一维数组2. 多维数组3. 查找索引五、统计方法(七类)六、随机数np.random1. 创建随机ndarray数组2. 随机打乱ndarray数组3. 随机选取元素(一维)七、线性代数八、文件读写与保存1. 文本读取2. 文件保存九、Numpy应用举例1. 计算激活函数Sigmoid和ReLU2. 图像翻转和裁剪...
2020-07-24 18:34:43
2282
原创 世界冠军带你从零实践强化学习心得 (二)
世界冠军带你从零实践强化学习心得(二)基于神经网络方法求解RL神经网络近似Q函数DQN:入门deep RL代码构建与演示总结看前一部分(点击这里)基于神经网络方法求解RL选择(A)有限,而人生(S)无限。神经网络近似Q函数前面提到的悬崖问题,状态(S)总量很少,但实际生活中,很多常见问题的状态都是数量庞大的,如象棋、围棋等。即使用Q表格装下所有状态,表格可能占用极大内存,表格的查找也相当费时。我们就可以用带参数的Q函数来近似Q表格,比如可以用多项式函数或者神经网络,优势是只需要输出少量参数,同
2020-06-27 10:50:12
549
原创 世界冠军带你从零实践强化学习心得(一)
PARL框架从零入门强化学习(一)写在前面强化学习——从尝试到创造初识强化学习强化学习的分类和方法PRAL框架和GYM环境基于表格型方法求解RL序列决策的经典表达状态动作价值的求解Sarsa和Qlearning代码构建与演示写在前面不要重复造轮子,学会使用轮子。本文源于百度AI平台飞桨学院《世界冠军带你从零实践强化学习》课程的总结,感谢科科老师这几天精彩的讲解。本文旨在提供给读者PARL框架的使用方法,并从模型的理解和代码的构建角度来整理五次课所学内容,不求详尽但求简洁明了。我认为强化学习中对算法
2020-06-26 12:33:01
1043
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人