自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 问答 (1)
  • 收藏
  • 关注

原创 git初学教程

git 拉取指定分功能。

2022-05-18 09:25:37 154 1

原创 smart_point practice

#include <iostream>#include <memory>using namespace std;int main(){ auto p = make_unique<int>(5) ; auto p1 = make_unique<int>() ; p1 = move(p) ; cout << *(p1) ;// cout << *(p) ; auto p_t = .

2022-01-10 09:18:43 402 1

原创 迭代法括号问题leecode21

1.终止程序条件(if)2.迭代每一层内容(for , if )#include <QCoreApplication>#include <QDebug>#include <QVector>#include <QString>QVector<QString> vec ;void back(QString str ,int n , int left_t ,int right_t){ if (left_t == n &a

2022-01-03 14:42:17 232

原创 leecode 合并连表

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next.

2022-01-03 09:47:58 401

原创 凑硬币问题

硬币不限量版,这个不限量有点像背包问题。#include <QCoreApplication>#include <QDebug>int minsum(int *coins , int sum){ if (sum == 0 ) return 0 ; if (sum < 0) return -1 ; int ans = 1000 ; for (int i =0 ; i < 3 ; i++)

2021-12-19 21:27:27 115

原创 链表新体验

总是看别人些链表,今天自己尝试点简单的链表程序,简单的链表的增删查改#include <QCoreApplication>#include <QDebug>struct node{ int value ; node *next ;} ;void printf(node *root){ while (root!= nullptr) { qDebug() << root->value ;

2021-12-16 14:12:31 631

原创 微分控制器

经典PID常用的控制包括P,PI、PD、PID。若系统偏差输入中包含有噪声(一般默认认为高频的信号多为噪声,因此需要需要加入一阶系统):1/(1+RCS)其中RC为截至频率。那么滤波器应该放在什么位置呢?系统可分为完全PID控制器,与不然全微分控制器。两个存在一定的差异在于滤波器所在的位置,完全pid控制是把一阶微分滤波器放在PID控制器加和后,而不完全微分控制器,是把一阶低通滤波器放在微分器后。为什么执意将一阶微分控制器放在微分环节?原因在于PID带有一部分预测功能,预测的方法是通过K

2021-05-08 14:33:56 883

原创 leecode 66

题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/plus-one著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明..

2021-05-08 09:19:04 80

原创 leecode 1486

给你两个整数,n 和 start 。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。请返回 nums 中所有元素按位异或(XOR)后得到的结果。示例 1:输入:n = 5, start = 0输出:8解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。 "^" 为按位异或 XOR 运算符。来源:力扣(LeetCode)链接:..

2021-05-07 15:15:20 67

原创 leecode 5

题目:给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解答:class Solution {public: string longestP.

2021-05-07 15:11:46 64

原创 leecode 1720

1720. 解码异或后的数组未知 整数数组 arr 由 n 个非负整数组成。经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。给你编码后的数组 encoded 和原数组 arr 的第一个元素 first(arr[0])。请解码返回原数组 arr 。可以证明答案存在并且是唯一的。 示例 1:输入:e.

2021-05-06 09:27:06 98

原创 leecode 740

给你一个整数数组nums,你可以对它进行一些操作。每次操作中,选择任意一个nums[i],删除它并获得nums[i]的点数。之后,你必须删除每个等于nums[i] - 1或nums[i] + 1的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入:nums = [3,4,2]输出:6解释:删除 4 获得 4 个点数,因此 3 也被删除。之后,删除 2 获得 2 个点数。总共获得 6 个点数。来源:力扣(LeetCode)...

2021-05-05 11:03:13 115

原创 Leecode 9

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true提示:-231 <= x <= 231 - 1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-number著作权归领扣网络所有。商业转载请联系官方授权..

2021-05-04 14:14:31 75

原创 Leecode3

题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题解:clas...

2021-05-04 13:49:02 81

原创 2. 两数相加

给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。输入:l1 = [2,4,3], l2 = [5,6,...

2021-05-03 11:07:01 82

原创 Leecode 7

刚请完探亲假回来上班,打开电脑发现代码能力一塌糊涂,因此想刷刷leecode 这个月目的是刷30道简单与三十道中等难度的leecode给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231, 231− 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-intege...

2021-05-03 09:34:37 69

原创 find_package

最近想把apollo里面的lqr移植到公司的车上跑跑算法,由于里面涉及很多矩阵形式的变量,因此需要加载eigen库。在网上很多人都如此在cmake中引用eigen库:find_package(Eigen3 REQUIRED)include_directories(${EIGEN3_INCLUDE_DIRECTORIES})然而我在qt上面却频频提示不能找到eigen.cmake,问题来了,find_package如何查找库文件的。针对该问题,在https://zhuanlan.zhihu

2021-04-10 16:30:45 1112

原创 最优二次型小节

最优二次型与MPC很相似。有着相同的损失函数,唯一不是十分相同的就是在最优二次型的里面不含有硬约束。当然如果控制步长为一,并且带有一段预瞄距离,则LQR转变成了单步的模型预测控制。废话不说,我发行除了求解LQR比较麻烦以外,这LQR就没有什么复杂的(这里必须要吐槽一下自动控制原理第六版,因为里面求解的K矩阵与目前Apollo代码,相差较大无奈之下,只能按照泛函去推导,推导过后仍发现不一样,最终我妥协了,我还是按照matlab官方文档去求解反馈矩阵)实际上LQR就一个公式:X(K+1) =

2021-04-09 18:31:21 189

原创 离散抛砖

最近一直在瞎看,顺便拣了拣自动控制原理的东西,今天看代码突然对出现离散化的东西很迷茫,特此记录一下。z变换,就是离散化的形式,为什么要将s域转换成z域呢?为什么要将t时域呢?拉普拉斯变换与z变换原理类似,t时域中求导不便于求解微分方程,而在离散化过程,可认为离散化就是信号采集与信号保持的过程,在信号采集过程由于积分会导致出现e^st形式,这种具有s的超参形式难以计算,故将其z变化。这里的难以计算是指:不能转换成对变量加减乘除的形式。从理想角度来看,还是加减乘除的形式更方便计算。类似与空间转换

2021-04-08 20:37:57 192

原创 离散pid系统

前一阵交流,议会一个增量pid,一会一个位置pid,搞得我头都晕了。最近有时间查看了一下。U(k+1) = kpe(k)+ sum(e(i) 其中i=0...k) + kd(e(k)-e(k-1))这个表示的就是增量式pid,因为一直会对过去的积分进行相加,需要一直对其进行维护,现在有:U(k) = kpe(k-1)+ sum(e(i) 其中i=0...k-1) + kd(e(k-1)-e(k-2))令U(K+1)-U(k) ,可以得到:dU= kp(e(k)-e(k...

2021-04-03 14:31:32 511 2

原创 pid浅谈

pid实际真的用的很多,但是真的没有从原理层面进行学习,最近看了一部分自动控制原理,pid是在矫正位置讲解的。针对其中的,p、i、d、pi、pd、pid三个环节大致的记录下来。p环节:影响系统增益,不影响相位,提高p可以减小稳态误差,但是会降低系统稳定性。i环节:一般写成ki(1/s),可以提高系统的稳态性能,但是由于s存在与分母上,相当于信号会有一个90度滞后,并且多了一个开环极点。d环节:只对动态过程起作用,对稳态无影响。并且对系统噪声很敏感,所以不能直接单独与被控对象串联使用。pi

2021-04-03 14:08:31 1601

原创 样条推倒

五次样条究竟是什么?就是用一条曲线将路径上各个点连接起来,并保证车辆的一阶,二阶,三阶微分可导并连续。他与polifit 有着本质区别。polfit利用的是最小二乘形式来求解系数,即不能保证生成曲线能通过所有的点。路径规划上面经常会用到该方法生成路径。那么今天来讨论其两种形式:1。基于时间生成曲线其中xy分别为大地坐标西下的横纵向坐标。[x y ] = at^5+bt^4+ct^3+dt^2+et+f ;其中可令Kx = [ax,bx,cx,dx,ex,fx] ;Ky..

2021-04-02 16:49:34 100

原创 推演

执行器的时间延时是个必不可免的东西,那么如何去消除时间延时带来的系统影响呢?大林控制法 与 史密斯预估器这是正向并联形式的,实际上史密斯预估器是个观测器,其等价形式如下图所示:其中Gm是我们建立的模型,我们通过自己建立模型,推倒出了延时系统与非延时系统的偏差,将该偏差补偿至实际参考与实际反馈得到的偏差之和。...

2021-04-01 14:55:03 122

原创 自动控制原理--随感

究竟为什么会存在拉式变换自动控制原理,传递函数:输出的拉式变换比输入的拉式变换。那拉式变换究竟是什么?正常我们列的控制量的等式都是基于轴的,控制的最终目的也是在最短时间将目标控制好,即所谓的稳准快。那么问题来了,由于复杂系统中经常存在对时间求导与积分,譬如经典的自动控制原理中,电容、电感、电阻的电路的微分方程,就存在对时间的导、积分。由于从难易程度可以默认的将四则运算难易程度低于积分微分的难易程度。因此就有了拉式变换。拉式变换可以说就是为了求解微分方程。拉式变换的用处终值定理:

2021-03-27 15:21:28 476

原创 动态调参过程遇到的问题

在写的ros 的 package中,编译总是出现callback函数非静态的问题,不知道什么地方出现了问题。boost::bind 分两种情况这个帖子说的较为详细:https://blog.csdn.net/su_787910081/article/details/41479073第一种是调用类里面的函数,第二种是调用非类里面的函数。一般boost::bind() 函数的调用,第一个参数是绑定函数指针,第二个参数是指定这个函数所属的类对象指针。后面开始是这个函数所需要的参数,顺序给出即.

2021-03-26 09:54:27 98

原创 ROS 动态调参

最近开始ROS的学习及应用。背景:车辆控制算法在实际车上调试,一定需要经常调整参数,包括PID系数,MPC权重矩阵,LQR权重矩阵,在仿真或者实车上调参数实际上真的真的非常麻烦,每次修改参数,还需要编译,一个大的工程,编译一次真的需要很多时间。结果:经查找发现了动态调参。ROS 动态调参官方文档 :http://wiki.ros.org/dynamic_reconfigure/TutorialsHow to Write Your First .cfg Filecatkin_creat.

2021-03-25 18:39:00 975

原创 轨迹跟踪

基于纯几何算法或者汽车运动学的轨迹跟踪算法,楼主所看到过的有三种:persuit,单点预瞄,stanley三者存在相识之处,一般都是忽略车辆动力学。persuit :根据几何可知:车辆转向集合图形如下:若后轮在车轨迹上,此时向前预瞄一段距离Ld,道路曲率R ,则:此时解出了Ld,R与a的关系。将R带入上面的式子,可以解出...

2019-12-05 20:09:05 3344 8

原创 MATLAB ROS public message

为了matlab与ros通信,如果仅仅是监听的话,那就显得鸡肋了,为此希望在simulink下面能够实现发送topic的功能。首先需要建立空白的message模块该模块的作用是创建一个希望发送格式的空白消息,在这里可以选择topic与message的格式,创建完了message格式后,需要的是对bus进行赋值,再将bus传递给message发送模块。将blank_messag...

2019-12-01 10:38:25 269

原创 matlab ros custom message

ROS下面如果创建了相应的自定义的message,在matlab命令行中,rostopic echo /topic名称此时会出现错误,类似于说这个custom message在matlab里面没有定义,因此需要在matlab 里面自己顶一下,实际上在matlab文档中已经有很详细的的关于custom的说明。首先将你在ros下面的package复制出来,不复制也是可以的,但是自己写的过程,...

2019-11-25 15:28:09 722

原创 ROS 个人定义msg

在ros中如果想用自己定义的message,ok,那你就需要按照ROS官方教程去做了。在qt下创建msg还是比较容易的,在qt创建msg文件,这里有坑,一定要先创建一个msg的文件夹,在该文件夹下面创建.msg文件,并且你会发现之前在创建package时候的依赖项都写在一个标签中,我们需要将它改写依赖项包含在多个标签中,每个标签里面仅仅含有一个依赖项,在msg文件中,并不像网上和官网说的用H...

2019-11-25 15:14:36 321

翻译 qt ros

用命令行去写ros实在是太麻烦了,最后在网上看打了ros-qtc-plugin的软件https://ros-qtc-plugin.readthedocs.io/en/latest/里面有详细的安装qt的流程。安装完了可以创建一个简单的一发一收节点,定义一个topic,https://www.cnblogs.com/dzqiu/p/9519485.html这篇博文说的较为详细,...

2019-11-19 22:45:50 119

原创 matlab ros 通信

通信过程如果设置不当会出现,rosnode list下面可以看到matlab 的节点,但是从ros中发出的消息却不能读出data如果rostopic echo topic名称 在ros下能输出,但是在matlab下面无法输出,则可以定位为通信问题,既然可以看到matlab的节点说明matlab 与ros是可以通信的,此时应该反向思考,ros与matlab通信应该存在问题。https://w...

2019-11-19 22:32:23 844

原创 然而沼跃鱼早就看穿了一切

fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句子中的沼跃鱼(“marshtomp”,不区分大小写)。为了使句子不缺少成分,统一换成 “fjxmlhx” 。输入输入包括多行。每行是一个字符串,长度不超过200。一行的末尾与下一行的开头没有关系。输出输出包含多行,为输入按照描述中变换的结果。样例输入The Marshtomp has...

2019-11-07 11:40:36 354

原创 ROS学习

ROS对于我这种菜鸟而言就是一个通信端,实际上ROS是通过NODE来发布与订阅信息的。在ubuntu下大多数人直接用qt对ROS编写,这里笔者推荐用https://blog.csdn.net/forrest_z/article/details/52931093这个博客里面的去安装ros-qt-plug的工具,这样开发起来方便很多。至于收发https://blog.csdn.net/qq_2...

2019-10-23 16:08:29 123

原创 水路距离问题

原文衔接:https://hihocoder.com/contest/hiho236/problem/1以下是我的代码:#include &lt;iostream&gt;#include &lt;string&gt;#include &lt;vector&gt;#include &lt;algorithm&gt;#include &lt;stdlib.h&gt;using n...

2019-01-06 11:05:29 416

原创 string char 型相符转换

string 转成char 的方法有很多种,比较常用的就两种string::data()的方法和string::c_ str()的方法。但是注意这两种方法返回都是const char *类型的如果想要转换成普通的char *类型,只需要对数据进行强转在变换数据前面加上(char *);#include &lt;iostream&gt;#include &lt;string.h&gt...

2018-07-21 09:31:47 134

转载 gcc lower

(1). 下载gcc/g++ 4.8$ sudo apt-get install -y gcc-4.8$ sudo apt-get install -y g++-4$ cd /usr/bin$ sudo rm gcc$ sudo ln -s gcc-4.8 gcc$ sudo rm g++$ sudo ln -s g++-4.8 g++. 链接gcc/g++实现降...

2018-07-10 17:14:06 122

原创 将文件夹下面的文件定向输出至文件中

#!/bin/bashfor dir in $(ls $HOME/code/20180709/zed/photo)do echo $dir &gt;&gt; $HOME/code/20180709/zed/test.txtdone

2018-07-09 16:00:06 365

转载 ubuntu 安装flash

sudo     apt-get     install     flashplugin-installer

2018-06-21 19:14:02 3824

转载 ORBSLAM2 ROS跑单目摄像头

首先按照github上将依赖库安装好,摄像头我用的是罗技的具体型号不清楚,按照博客:https://blog.csdn.net/xmy306538517/article/details/59501718 所说的做。创建一个新的ros...

2018-06-21 16:42:25 1272

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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