yolov5学习
安装yolov5:下载地址 https://github.com/ultralytics/yolov5.git进入anaconda虚拟环境并在yolov5文件夹下键入命令下载依赖:pip install -r requirements.txt检验:打开yolov5文件夹,键入python detect.py或直接运行detect.py当终端打印Result saved to runs/detect/exp时进入对应文件夹寻找图片,如果成功识别位置、物体和置信度则安装成功。
python detect.py —source data/images/bus.jpg
大目标中目标小目标
使用自己的训练集:在datasets下创建自己的训练集文件夹xxx,在xxx中再创建子文件夹images和labels其中images中存放图片,labels中存放标签(包括1个种类+4个矩形位置)在环境下安装labelImg,这是一个打标签的工具。使用pip install labelImg安装后键入labelImg打开。
首先找到左下角最后一个Change Save Format到YOLO然后点击Open ...
OpenCV学习
ubuntu+opencv+vscode+cmakelists:1.下载opencv4压缩包:https://opencv.org/releases/的.zip文件2.生成opencv4文件:解压完发现opencv是一个cmake工程,里面有CMakeList.txt,因此需要cmake生成Makefile。建一个build文件夹并进去使用cmake ..,而后使用make或者make -j4,make -j8 , make -12,来编译,j后面这个数字时调用多线程进行编译。此时opencv便被安装到了/usr/local/include/opencv4,对应库文件的路径则为/usr/local/lib。此时opencv4便被安装好了,使用pkg-config opencv —modversion可以检验是否安装成功。3.配置vscode:需要修改c_cpp_properties.json,tasks.json和launch.json1>按下ctrl+shift+p搜索Edit Configuration进入编辑配置(JSON),在includePath中新增opencv4的路 ...
最优控制理论
最优控制的目标:对于一个状态空间方程表示的系统,在满足约束条件的前提下,将系统状态从起始步x[0]转移到目标步xd的最优控制策略,其中最优控制的评判标准是代价函数J的最小值。
代价函数J由两部分组成,分别是用hd表示的末端代价,即终止步x[N](N表示状态转移的总步长)与目标值xd的差距;以及用gd表示的运行代价,其又分为两部分,分别是系统在运行的每个状态转移步x[k]下与对应状态下的目标步xd[k]的差距,以及每个状态转移所需要输入的能耗u[k]的代价。以下面这个离散系统的为例,可以看到随着步进,x[N]实际上是一个关于x[0],u[0],u[1]…u[N-1]的函数,也就是随着输入的进行,将系统状态从起始步x[0]转移到目标步xd的过程,而我们的目标就是找到最优的一系列输入u[0],u[1]…u*[N-1]使系统完成转移的同时代价函数最小。
最优控制的基本策略是动态规划和逆向分级,其数学原理是贝尔曼最优原理。以下面这个简单的离散系统为例,步长N=2,初始步x[0]=1,目标步xd=0,代价函数如下:
要设计每步的输入u[k]使代价函数最小,即为最优的控制策略,定义*为最优策略符。由 ...
非线性控制理论
函数的正定与负定:V为李雅普诺夫函数,对于非线性系统[dotX]=f([X])而言,dotV的求解公式如下:
以一个单摆系统为例,其状态方程如下:
那么怎么确定V呢?技巧是从能量角度入手:
如果给系统加上摩擦,那么状态空间方程将变为:
可以看到从物理上看,无摩擦的系统是非渐进稳定的,而有摩擦的系统是渐进稳定的但是从数学角度上看,我们只证明了两个系统均是稳定的,但对是否渐进稳定无法判定于是我们引入不变性原理来判断系统的渐进稳定性:一个系统是渐进稳定的,意味着其存在一个V,满足:V为正定,范围内dotV为半负定,dotV仅在[X]=0时值为0
确切地说,第三个条件是指dotV沿任意不过零点的轨迹移动值都不为0
于是我们分析有摩擦的系统,可以发现其前两条条件满足,对于第三个条件:当dotV=0时仅有x2=0,因而能使dotV=0仅在x2=0这条轨迹上可能成立,故对于所有的时间t来说,dotx2都等于0,故可以求得此时仅可能x1=x2=0,因而条件三也成立,系统渐进稳定
同理对于无摩擦系统而言,条件三并不满足,故系统不是渐进稳定的。
非线性系统稳定性设计:目的是设计输入u=f(x)使新的闭环系 ...
现代控制理论
数学基础:1.特征值λ与特征向量v:(已知A为nn,则v为n1,λ为1*1)
2.矩阵与坐标变换:原直角系下(-1,2)的向量,将i向量变换为(3,1),j向量变换为(1,2)后的变换向量在原直角系下的值即为以下矩阵求解出来的值。
Z为状态,U为输入,Y为输出
对于n状态m输入k输出的系统而言:[A]为nn的矩阵,[B]为nm的矩阵,[C]为kn的矩阵,[D]为km的矩阵[X]和[dotX]为n1的向量,[U]为m1的向量,[Y]为k*1的向量所谓开环系统,即无输入[U]=0的系统求解状态空间方程的解:
状态转移矩阵 卷积
利用状态空间方程判断系统的稳定性:平衡点的确定:怎么判断系统最终会趋向于一个怎样的平衡位置呢?只需令所有的[dotX]均为0,则此时系统处于平衡状态,利用状态空间方程即可求出对应的[X]值
λ其实就是经典控制理论中的极点
连续系统离散化:由连续系统下状态空间方程的解可得:
系统的可控性判据:离散型证明:
只有一个系统是可控的,它才可能在控制中做文章,比如改变其稳定性
李雅普诺夫 ...
ROS学习
使用vscode创建并应用一个ros项目:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 1.使用命令行创建工作空间: mkdir -p 工作空间名称/src(必须得有 src) cd 工作空间名称 catkin_make(编译) 2.进入工作空间,启动vscode: cd 工作空间名称 code . 3.vscode中编译ros: ctrl + shift + B 调用编译,选择:catkin_make:build,并点击右侧齿轮自动创建tasks.json文件,修改.vscode/tasks.json 文件如下: { // 有关 tasks.json 格式的文档,请参见 // https://go.microsoft.com/fwlink/?LinkId=733558 "version": "2.0.0", "tasks&quo ...