- 博客(58)
- 收藏
- 关注
原创 深度学习的经验
①由于时论文复现,暂时不考虑网络结构;②显存要大 8g③batchsize要适中,选择32或者64④善用pytoch的imageload 和 dataset 来进行预处理⑤训练时的结构:训练集与验证集同时出现。model.train() 开启BN 和Dropoutmodel.eval() 关闭BN 和Dropout,关闭后可以进行单张预测,不然就需要一个batchsize能预测成功for epoch in range(xxx): model.train()
2021-03-14 12:34:16
226
原创 未知
import numpydef cos(theta): return numpy.cos(theta)def sin(theta): return numpy.sin(theta)'''设置上面两个函数避免麻烦''''''变换矩阵的参数'''theta1=0#30/180*numpy.pitheta2=0#30/180*numpy.pitheta3=0#30/180*numpy.pitheta4=30/180*numpy.pitheta5=30/180*numpy.p
2021-03-01 22:36:52
284
原创 python_opencv颜色检测加自动跟踪
import cv2import numpy as np''''''tracker = cv2.TrackerKCF_create()video = cv2.VideoCapture(0)kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))''''''def roi_select(frame,): # 将图像转换到 HSV 空间 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV
2021-02-22 16:13:42
344
原创 python-opencv颜色识别,圆检测。
import cv2import numpy as npcap = cv2.VideoCapture(0)while(1): # Take each frame _, frame = cap.read() frame1=frame.copy() # 将图像转换到 HSV 空间 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 设置 HSV 阈值到蓝色范围。 lower_blue = np.arr
2021-02-10 23:09:25
1369
1
原创 基于pybullet的机械臂导纳控制实验
基于pybullet的机械臂导纳控制实验——根据知乎韩冰老师的文章谢谢韩冰老师的原创图:这副图大概的意思是:对机械臂的末端执行器搭载的外部六维力矩传感器施加一个力,导纳控制公式,得到一个(x…加速度),加速度通过积分,可以使用梯形公式等数值积分方法得到(x.)速度,再通过积分得到(x)位置。上面的加速度,速度,位置都是施加力引起的位移变化,所以要在原来的位置上加上这些变化。随着力的施加,位置会发生变化。当力释放时,这个也是计算过程,机械臂会弹回原来的位置。所以要给在计算时,要给时间它复原。下面
2020-12-09 14:41:27
2979
5
原创 不用matlab,不用ros,用pybullet,完成机械臂的轨迹规划
import pybulletfrom time import sleepimport pybullet_data,pybullet_envs,pybullet_robots,pybullet_utilsfrom circle import draw_cirlceimport numpy############physicsClient = pybullet.connect(pybullet.GUI) #物理连接pybullet.setAdditionalSearchPath(pybull
2020-12-03 12:12:37
2794
原创 强化学习基础代码 pytorchs手写
import torchimport torch.nn as nnimport torch.nn.functional as Fimport numpy as npimport gym# Hyper ParametersBATCH_SIZE = 32LR = 0.01 # learning rateEPSILON = 0.9 # greedy policyGAMMA = 0.9 # reward discountTARGET_REPLACE_ITER = 100 # target upd
2020-11-25 17:44:28
418
原创 利用pytorch 实现BP网络异或功能,基于cuda加速
import torch as torimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimimport numpy as npdef f_function(x): x=np.mat(x) data=1+2*x+np.multiply(x,x)+ np.random.uniform(0.0001,0.0002,(1,1)) #注意是这样调用 #data1=0
2020-11-18 10:42:31
388
原创 激活函数的作用
使用pytorch弄一个单层网络,但是激活函数选择线性函数,不然永远达不到要求,激活函数的作用,摘自知乎。f(*)称为激活函数或激励函数(Activation Function),激活函数的主要作用是完成数据的非线性变换,解决线性模型的表达、分类能力不足的问题;激活函数的主要作用是改变之前数据的线性关系,如果网络中全部是线性变换,则多层网络可以通过矩阵变换,直接转换成一层神经网络。所以激活函数的存在,使得神经网络的“多层”有了实际的意义,使网络更加强大,增加网络的能力,使它可以学习复杂的事物,复杂的数
2020-11-16 23:36:51
3861
原创 最速下降法——实例(有点小错误,帮忙修改一下)
import numpy as np#import matplotlib.pyplot as pltdef f_function(x): data=0.5*x+1.8+np.random.uniform(0.01,0.02,(1,1)) #注意是这样调用 return data###生成带噪音的数据的公式def use_function(): x=np.mat(np.linspace(0,100,num=1000)) y=np.mat(f_function(x))
2020-11-16 10:36:16
329
原创 逆向运动学的封闭形式解的解析法
在这里向大家分享基于改进D-H参数法的求解逆向运动的过程,一些教材上有详细的推算过程,在这里直接推送一个计算公式,以及是几种情况。
2020-10-25 20:03:57
2832
原创 ros机械臂末端添加一个六维力传感器
ros机械臂末端添加一个六维力传感器首先在ros中有rviz和gazebo,六维力传感器的这个插件是在gazebo上,所以仿佛在rviz中是无法展示它的topic的,这是第一注意的点然后呢我们做一个六维力传感器的模型,意思意思一下就ok,不用完全复刻出来,在之前,我们使用的是一个机械臂在soildswork导出其URDF,那么这次我们需要这个传感器装配起来,然后再导出URDF.最后就是在画soilds时,最好是从原点出发,这样子URDF的标签中的xyz,rpy会十分地简便,方便你可以直接在URDF或者
2020-08-21 16:22:56
3749
9
原创 moveit概述以及python接口
MOVEIT——移动它用户可以通过以下三种方式之一访问move_group提供的操作和服务:①在C ++中 -使用move_group_interface软件包,该软件包为move_group提供易于设置的C ++接口②在Python中 -使用moveit_commander包③通过GUI-使用Movi的Rviz插件(ROS可视化工具)可以使用ROS参数服务器配置move_group,从该服务器还将获取机器人的URDF和SRDF。组态move_group是ROS节点。它使用ROS para
2020-08-19 21:17:04
5066
原创 ros中机器人逆向运动学的四元数求解
四元数q=[w.x,y,z]=[q0,q1,q3,q4]欧拉角angle=[row,pitch,yaw]=[r1,r2,r3]旋转矩阵R=[r11 r12 r13 r21 r22 r23 r31 r32 r33]旋转矩阵转为四元数q0=0.5*(1+r11+r12+r13)^0.5q1=(r32-r23)/4q0q2=(r13-r31)/4q0q3=(r21-r12)/4q0旋转矩阵转为欧拉角四元数转旋转矩阵公式:欧拉角转四元数公式:四元数转欧拉角公式:
2020-08-19 12:05:40
1594
1
原创 python的记录
①unicode与utf-8由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存 到磁盘上,就需要把str变为以字节为单位的bytes。从网页上获取的数据大多是utf-8类型。服务器上存储着网页的数据,使用的是unicode编码。输出在使用者面前,可阅读的则是utf-8编码。如果我们从网络上获取的数据是属于bytes类型的,这个时候需要将其转换为str类型。使用decode()函数 b'\xe4\xb8\xad\xe6\x96\
2020-08-12 14:18:41
133
原创 正则表达式的学习
正则表达式正则表达式是对字符串操作的一种逻辑方式,就是用实现定义好的特定字符和这些特定字符的组合组成一个规则字符串,这个规则字符窜用来表达对字符窜一种过滤逻辑。match方法re.match(pattern,string,flags=0)其中:pattern是正则表达式,包含一些特殊的字符,使用者需要的字符string为要待匹配的字符串flags用来控制正则表达式,如区分大小写,多行匹配等import rem=re.match('abc','abcdefg') #pattern 为
2020-08-11 15:31:22
126
原创 python3的初认识
name = "ada lovelace" print(name.title())作用:首字母大写print(name.upper()) print(name.lower())作用:全部字母大写/小写first_name = "ada"last_name = "lovelace"full_name = first_name + " " + last_nameprint(full_name)作用:合并字母print("\tPython")print("Languages:\nPy
2020-08-05 19:46:47
220
原创 反馈神经网络
前面的总结单层感知器,线性神经网络,BP网络与径向基网络都属于前向神经网络。在这种网络中,各层神经元节点接收前一层输入的数据,经过处理输出到下一层,数据正向流动,没有反馈连接。前向网络的输出仅由当前的输入和网络经过多次训练后得到的最终的权值决定的。反馈神经网络典型的反馈神经网络有:Hopfield网络,Elman网络,CG网络模型,盒中脑(BSB)模型和双向联想记忆(BAM)等。在这个阶段我学习的是前两个模型。Hopfield网络Hopfield网络分为离散型和连续型两种模式,DHNN 和CHNN
2020-07-27 14:48:44
5491
原创 径向基函数网络初认识
一种结构简单,收敛速度快,能够逼近任意非线性函数的网络——径向基网络(RBF).径向基网络可以分为正则化网络和广义网络,其中广义网络在工程实践中被广泛应用,它可以由正则化网络稍加变化得到。径向基网络径向基网络记为:其中||x||指欧几里得范数。径向基函数必须满足:如果||x1||=||x2||,则范数的概念:范数是对函数,向量和矩阵定义的一种度量形式,任何对象的范数都是一个非负的实数,若满足一下三条范数公理,即可成为一种范数:非负性,即||x||>0绝对齐性,即||ax||=|a||
2020-07-25 11:31:20
1750
原创 神经网络初认识——BP神经网络(7月18,再次认识)
BP神经网络——Error back PropagtionBP网络属于多层前向神经网络,BP网络是前向神经网络的核心部分,也是整个人工神经网络体系的精华,广泛应用在分类识别,逼近,回归,压缩等领域。BP神经网络的结构BP神经网络一般是多层的额,与之相关的另一个概念是多层感知器(MLP)。也就是说BP神经网络具有多个隐含层,BP网络采用误差反向传播的学习算法。特点网络由多层构成,层与层之间全连接,同一层之间的神经元无连接。BP函数的传递函数必须可微。因此感知器的传递函数——二值函数在这里并没有用
2020-07-14 15:00:42
2657
原创 线性神经网络(7月13)
初认识线性神经网络最经典的例子是自适应线性元件,主要用途是通过线性逼近一个函数式而进行模式联想以及信号滤波,预测,模式识别和控制。线性神经网络的输出是可以任何值,其传输函数是线性函数。采用widrow-hoff学习规则,即LMS算法来调整网络的权值和偏置。线性神经网络的机构线性神经网络在结构上与感知网络非常相似,只是神经元的传输函数不一样:即与感知器后面的二值阙值元件不一样,里面的内容换成线性传输函数。假设输入是一个N维向量x=[x1,x2,x3,…xn],然后也可以得到在神经元的输出:v=x
2020-07-13 14:16:46
689
原创 神经网络的初认识——单层感知器(7月11,12)
单层感知器属于单层前向网络,及除输入层和输出层外,只拥有一层神经元节点。输入数据从输入层向输出层逐层传播,相邻两层的神经元之间相互连接,同一层神经元之间没有连接。可以说在隐含层上有两个元件,一个是线性组合器,一个是二值阙值元件。输入是一个N维向量X=[x1 x2 x3 ,…XN],其中的每一个分量都对应与一个权值wi,隐含层的线性组合器可以得到一个值(标量):然后在二值阙值元件中得到的V值进行判断,产生二值输出:单层感知器可以将输入数据分为两类:L1或L2。当y=1时,输入数据为L1,当y=
2020-07-11 17:14:23
2144
原创 Matlab神经网络工具箱的认识(一)
神经网络创建函数 cascadeforwardnet - Cascade-forward neural network. 创建多层前馈BP网络 competlayer - Competitive neural layer. 创建竞争层 distdelaynet - Distributed delay neural network. 创建延时网络 elmannet - Elman neural net
2020-07-11 13:48:09
2054
1
原创 PID模糊控制设计(7.9笔记)
结构图PID调节器的控制规律为:其中kp为比例系数,Ki为积分系数,kd为微分系数。e(K)为误差, ec(K)为误差变化,我们习惯将它写成[e(k)-e(k-1)];调节规则:根据实际经验,在不同的e和ec下自调整要满足如下调整原则: 当e中等大小的时候,为减小系统的超调量,保证一定的响应速度,kp应适当减小;在这种情况下,kd的取值对系统的影响较大,应取得较小些,ki的取值大小要适中;根据上面的经验,我们可以得到相应的规则Kp的模糊控制规则表Ki的模糊控制规则表Kd的
2020-07-09 20:22:19
14950
3
原创 Matlab Fuzzy Toolbox 的认识与使用(7月6 ,7,8)
模糊控制器的设计在模糊控制的设计中,利用matlab的中的模糊控制工具可以很方便地进行输入以及输出的变量的定义,云烟变量隶属函数的定义,模糊控制规则的定义及输入输出预览。它集成了FIS编辑器,隶属函数编辑器,模糊规则控制器,骨折浏览器和输出预览器的可视化工具。FIS编辑器FIS编辑器的界面入上图所示,设计这在该编辑器中设置模糊控制器的模糊算子,输入输出变量的个数,模糊变量的名称及解模糊化的方法。隶属函数编辑器输入模糊子集E的隶属函数输入模糊子集Ec的隶属函数输出模糊子集U的隶属函数隶
2020-07-06 21:06:04
6690
原创 模糊控制器基础知识的学习(7.5第一遍,7.6第二遍)
模糊控制器设计模糊化接口①在模糊化系统中,通常取系统的误差值e和误差变化率ec为模糊控制器的两个输入,则e上定义语言变量“误差E",在ec上定义语言变量”误差变化ec"; 误差和误差变化之间存在和关系,即需要考虑两者对系统的影响。②定义各语言的论域。通常都设置为X=Y={-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6};③设置各语言的语言值。通常设为{正大 正中 正小 零 负小 负中 负大}={PB PM PositiveSmall ZO NS NM NB}④各语言变量上
2020-07-05 22:05:12
11378
1
原创 对机器人结构的认识
之前的学习中并没有对另外去了解机器人的结构,那么今天就记录一下所有有关机器人结构的名词;①构件-link:机械系统中能够进行独立运动的单元体,有刚性构建和柔性构建之分。②运动副-kinematic pair:是指两个构件既保持接触又有相对运动的活动连接,又称为关节和铰链。转动副-R-具有一个旋转自由度;移动副-P-具有一个平移自由度;圆柱副-c-具有一个旋转自由度和一个平移自由度,是上面运动副的结合;虎克铰-U-具有两个旋转轴线相互垂直的自由度;球面副-S-具有三维旋转自由度,属于空间运动
2020-07-01 16:38:13
1188
原创 研究的伊始
研究——观后感对于一个从事科研学习和工作的普通人,也需要拥有像伟大科学家一样的学习和工作态度,那算是妄想吗,我觉得不用全部都学习上,可以将他们将自己的生活和学习的实际情况集合结合在一起,打造属于自己的态度。对于伟大的科学家,他们都拥有以下的品质。做大事的想法:我想对于我自己来说,就是做一件事,就是在求学路途中,将自己所学习到所有知识都利用起来,研究出专利,或者是完成质量超高的,认可度高的论文。在以后的研发工作时,产品是高效,安全而且是富有创新色彩的。运气是留给有准备的人 运气是有条件的:这两句我是这
2020-06-29 12:43:51
169
原创 一款机械臂转动模式的学习
学习资料是华数机器人操作与编程说明书1.首先得拥有一台工业机器人以及配套的机械臂,实验室买了一台和QQ差不多的贵得到工业机器人,配了详细的资料和一个可爱的示教器,我们今天就来了解一下,以及学习如何使用示教器。1.对资料的学习之前的文章已经对机械臂构建过D-H参数模型,里面的参数和资料上是一致,包括正负旋转方向,结构参数。关节2 ,3 ,5低头为正,抬头为负 关于D-H参数中的α的值为-90 0 -90 90 -90 0关节1,4 ,6符合右手定则,大拇指所指的方向为转动轴的正方向,四指所指方向
2020-06-27 15:22:51
2966
原创 六自由度串联机械臂奇异位研究
听说用并联的方式,也可以让机械臂达到六自由度,而且还能避免奇异情况的产生。但现在还是研究串联机器人的奇异情况吧。一是 极限奇异二是内部奇异工具——雅可比矩阵。判断方法:雅可比矩阵(6X6)的秩小于其自由度的个数,即矩阵的行列式为0。也就是说,出现奇异的原因是因为在旋转和平移的过程中出现自由度重合导致的减少的情况。串联式拟人化的机械臂多出现这种情况。极限位置奇异:各个关节的运动范围有限制,在这些范围边界就会产生极限位置奇异。这里可以想像一下。内部奇异:考虑肩部,肘部,腕部三种情况。通过计算行
2020-06-26 17:01:02
2324
原创 机械臂控制——雅可比矩阵
前面提到过,雅可比矩阵表示的关节速度和末端笛卡尔速度微分运动的关系,运动包括旋转和平移,微分运动的话就是对应线速度和角速度。更进一步理解就是基坐标系的微分运动和末端坐标系的微分运动。内容接着上一篇文章。我们已经清楚地求出了基坐标系和末端坐标系的微分关系,是一个6x6的矩阵(与6-DOF无关,是因为有六个矢量。前面的等式中,对于 n o a p 的值我们是可以当作已知量。暂时未知的就是关节的平移微量和旋转微量,若我们事先知道了。一旦我们知道这些数据,我们就能求出这两个坐标系之间的关系。利用这样的关系
2020-06-24 13:57:40
12995
5
原创 机械臂的微分变换以及雅可比矩阵(一)
微分变换——机械臂的基座坐标系或者是末端执行器的坐标系发生微小的旋转和平移运动导致的末端执行器的位姿发生微小变换。1.1基座坐标系下的变换1.2末端执行器坐标系的变换1.3微分运动的等价变换1.1基座坐标系下的变换基座坐标系下的微分变换,是指相对于基座坐标系的微小平移或者旋转运动从而导致机械臂末端执行器的位姿发生变化。T+dt=trans(dx,dy,dz)Rot(f,dθ)T末端位姿为T trans(dx,dy,dz)表示微分平移,Rot(f,dθ)表示微分旋转,由于是参照的是基座坐标系
2020-06-21 17:29:28
5708
1
原创 机械臂逆解——合适以及最优
首先一个六自由度的符合后三个轴相交的机械臂,有八组关于关节角度数值的逆解。这八组的逆解会发生不同的姿势:左右手 肘上下 腕翻转的选择。而且在验证逆向运动学公式的时候,是需要对应起来的,不然会发生错误(就是说其实是没有这组解的)。而且有的时候,机械臂的关节角度是有限定的,某些解是无法实现的。合适的逆解肯定会有,可能有几个。但是在生产过程中,是需要有取舍的。这里主要是基于关节可达空间,旋转幅度,逆解组号来选择最小的转动幅度,达到最省功率的效果。步骤一:将计算出的8组,按列存入6X8数组,列号为逆
2020-06-20 11:35:44
5749
6
原创 机械臂的改进D-H参数及其变换矩阵
引用网路上的一张图,这张图描述的便是改进D-H参数。与标准D—H参数法做出比较,我个人举得这种方法比标准D-H参数法在变换过程中,更为直观,思考过程仿佛合理一点(大家一起讨论)。蔡自兴教授编写的机器人基础 里面介绍的就是这种方法,我想以后就在这个基础上学习。变换过程是按照X——Z的变换顺序进行的,根据链式法则,也是使用矩阵右乘,来求出末端执行器的[x,y,z,1]T。书上的介绍我个人的理解是这样,依据上图,假设有两个坐标系i和j,先绕坐标系i的X轴旋转αi度,机械臂一般都是90度,使得Zi与Zj.
2020-06-15 15:26:11
4407
1
原创 机械臂的正向运动学(标准D-H参数的变换矩阵)
研究机械臂的正向运动学需要从机械臂的变换矩阵开始。变换矩阵可以说有两种形式,一种产生了标准D-H参数,另一种产生了改进D-H参数表。标准D-H参数——变换矩阵引用一些博客的图片,以及我多次的试验,在这里记下来。在此之前,需要重点强调的是,都是相对于当前的运动坐标系的,根据机械臂的左乘和右乘的链式法则,这是都是使用矩阵右乘。标准D-H参数法的变换矩阵的顺序是,比如有两个坐标系,一个是坐标i,一个是坐标系j。按照Z-X的顺序:先绕坐标系i的Z轴旋转θ角,该值便为θ1。使得Xi轴与Xj轴平行。在沿
2020-06-14 21:59:23
10482
1
原创 实际的机械臂绘制标准D-H参数表
之前在solidworks 创建的机械臂模型的数据十分清晰,我们利用这个模型绘制机械臂的标准D-H参数表。第一步数据十分清晰,方便我们绘制标准D-H参数表。第二步-绘制以及编写标准D-H参数表设定横向的Z轴都垂直于纸面向外。这副图和表经过多次的验证,应该不会出错,起始角度依次为{0 90 0 0 0 0 }。第三步——matlab工具箱验证下面是程序 ,仅供参考L1 = Link([0 348.5 0 pi/2 ],‘standard’);%1 2 这
2020-06-10 22:39:22
3977
2
原创 制作udrf文件(二)
接下来我们便进入最重要的一个环节第一步就是设置每个关节的对应的坐标系和参考轴。比如设置机械臂的基坐标系就如上图所选。同时机构部分也要选择正确。我把每个关节的详细信息都通过图片一一展示,最后一个末端执行器的坐标情况特殊,需要额外注意,多次的实验发现,这样子设置是正确的。第二步便是需要设置机械臂的关节的运动范围,关节力矩和额定速度,以及设定一下摩擦力和阻尼的大小(由于没有详细的资料,所以设计了一些较小的数值。到此便生成了标准的udrf文件,是对学习机械臂的准备。如果使用的效果差强人意,可
2020-06-06 21:55:09
453
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人