精华内容
下载资源
问答
  • 计算VaR的两种常用方法:参数法(正态VaR和对数正态VaR)和非参数法(历史模拟法),主要使用的函数是scipy.stats的求特定分布分位点的函数ppf,以及np.percentile求样本中的分位数。

    参数法

      正态VaR:假设资产组合的收益率服从正态分布,那么VaR也服从正态分布,VaR=-(μ-Z·σ)×P0,算出来的是loss,如果为负则为收益。μ为资产组合的期望收益率,用往年平均收益率替代;σ为组合收益率的波动率;Z=Φ-1( c )为正态分布的分位数(取正数);P0为组合的价值。证明如下:在这里插入图片描述
      对数正态VaR:假设资产组合的对数收益率服从正态分布,那么VaR服从对数正态分布,VaR=(1-eμ-Z·σ)×P0。可简单证明如下:受到冲击后的价格P=P0(eR),VaR=|P0-P|=|P0(1-eR)|,对数收益率R=ln(P/P0)服从正态分布,那么在此置信水平下的极端收益率为μ-z·σ,代入到R中即得VaR公式。

      注意如果要求%VaR,那么公式中就不用乘P。对数正态VaR的值会比正态VaR要小。

      假定某一投资组合在2018年12月28日(最后一个交易日)的投资组合市值为1亿元,组合中配置的5种金融资产配置为:贵州茅台股票15%,交通银行股票20%,嘉实增强信用基金50%,华夏恒生ETF基金5%,博时标普500ETF基金10%。管理层要求计算持有期分别为1天和10天、置信水平为99%情况下的VaR,同时假定整个投资组合收益率是服从正态分布或对数正态分布。

    data=pd.read_excel('C:/Users/lenovo/Desktop/投资组合.xlsx',index_col=0)
    data
    Out[7]: 
                贵州茅台  交通银行  嘉实增强信用基金  华夏恒生ETF  博时标普500ETF
    日期                                                     
    2015-01-05  202.52  7.05     1.071   1.0955      1.1205
    2015-01-06  197.83  6.90     1.073   1.0860      1.1105
    2015-01-07  192.94  6.76     1.074   1.0964      1.1239
    2015-01-08  191.76  6.53     1.074   1.1042      1.1446
    2015-01-09  190.31  6.50     1.075   1.1075      1.1346
               ...   ...       ...      ...         ...
    2018-12-24  568.00  5.61     1.285   1.4505      1.5116
    2018-12-25  565.79  5.63     1.286   1.4488      1.5116
    2018-12-26  560.08  5.68     1.286   1.4475      1.5814
    2018-12-27  563.00  5.72     1.286   1.4393      1.5963
    2018-12-28  590.01  5.79     1.287   1.4358      1.5885
    R=np.log(data/data.shift(1)).dropna()
    w=np.array([0.15,0.2,0.5,0.05,0.1])
    Rmean=R.mean();Rcov=R.cov()
    Rp=np.sum(R.mean()*w)
    volp=np.sqrt(w@Rcov@w.T)
    print('投资组合的μ={:.6f},σ={:.6f}'.format(Rp,volp))
    投资组合的μ=0.000268,σ=0.006427
    def VaR_norm(miu,sigma,x,P,n):#n参数为持有期,x为置信水平
    	import scipy.stats as st
    	z=abs(st.norm.ppf(q=1-x))#标准正态分布中1-x的概率对应的分位点
    	return -(miu-z*sigma)*P*np.sqrt(n)
    def VaR_lognorm(miu,sigma,x,P,n):
    	import scipy.stats as st
    	z=abs(st.norm.ppf(q=1-x))
    	return (1-np.exp(miu-z*sigma))*P*np.sqrt(n)
    print('99%置信水平下1天的normal VaR为{:.2f},lognormal VaR为{:.2f}'.format(\
    VaR_norm(Rp,volp,0.99,1e8,1),VaR_lognorm(Rp,volp,0.99,1e8,1)))
    99%置信水平下1天的normal VaR为1468366.22,lognormal VaR为1457638.30
    print('99%置信水平下10天的normal VaR为{:.2f},lognormal VaR为{:.2f}'.format(\
    VaR_norm(Rp,volp,0.99,1e8,10),VaR_lognorm(Rp,volp,0.99,1e8,10)))
    99%置信水平下10天的normal VaR为4643381.70,lognormal VaR为4609457.03
    

      以第二个结果为例,在99%的置信水平、持有期为10天的情况下,VaR达到了464.34万元,意味着从理论上来说未来的10个交易日内,有99%的把握认为1亿元的投资组合累计最大亏损不会超过464.34万元。

    非参数法(历史模拟法)

      历史模拟法的思路是将所有样本的收益率或收益额进行排序,根据置信水平找出对应分位数的值(数值小的一端),再取绝对值就是VaR。依然以上述案例为例,用历史模拟法计算持有期分别为1天和10天、置信水平为99%情况下的VaR。

      step1:生成投资组合的日收益序列:

    rp=pd.Series((1e8*R)@w,index=R.index)#投资组合的日收益额
    import matplotlib.pyplot as plt
    from pylab import mpl
    mpl.rcParams['font.sans-serif']=['SimHei']
    mpl.rcParams['axes.unicode_minus']=False
    plt.hist(rp,bins=40,edgecolor='k')
    plt.xlabel('投资组合日收益额')
    plt.ylabel('频数')
    plt.title('投资组合日收益额直方图')
    plt.grid()
    

    在这里插入图片描述
      step2:对投资组合的日收益额序列进行正态性检验,计算投资组合的VaR:

    st.normaltest(rp)
    Out[15]: NormaltestResult(statistic=192.37738470012968, pvalue=1.681828434884396e-42)
    #显然p<0.01,拒绝服从正态分布的原假设,因此用参数法计算VaR可能会产生偏差
    def VaR_daily(a,x):
    	#求a数列第(1-x)%分位的数值的绝对值,默认升序排序
    	return abs(np.percentile(a,(1-x)*100))
    print('99%置信水平下1天的VaR为{:.2f},10天的VaR为{:.2f}'.format(\
    VaR_daily(rp,0.99),VaR_daily(rp,0.99)*np.sqrt(10)))
    
    99%置信水平下1天的VaR为2135730.95,10天的VaR为6753774.29
    

      在99%的置信水平下历史模拟法计算出的10天VaR=675.38万元>正态VaR=464.34万元,可见在本案例中历史模拟法具有对尾部极端风险更强的捕捉能力。

      还有一种改进的参数法叫非参数密度估计(Non-parametric Density Estimation),将损失额直方图的每一根立柱的顶部中点进行连线,那么在线下的区域就可以当做该分布的概率密度函数,这样我们就能根据求出任意置信水平下的VaR,可以解决传统历史模拟法下n个样本最多只能有n个置信水平的问题。
    在这里插入图片描述

    展开全文
  • 改进DH参数法

    千次阅读 2020-10-04 22:17:49
    DH参数法是由Denavit和Hartenberg于1955年提出的一种描述串联式链路上连杆和关节的系统方法。1986年John J.Craig提出了一种改进的DH参数,在建立关节坐标系时将坐标系固结于该连杆的近端,而非远端,更符合直观理解...

    DH参数法是由Denavit和Hartenberg于1955年提出的一种描述串联式链路上连杆和关节的系统方法。1986年John J.Craig提出了一种改进的DH参数,在建立关节坐标系时将坐标系固结于该连杆的近端,而非远端,更符合直观理解。为了便于区分,这种方法成为改进DH(Modified DH),而将之前的方法称为标准DH(Standard DH)。

    两种方法都被广泛接受,不同教材、论文会使用不同的方法且很多时候不会明确说明,而通过DH参数表很容易区分两种方法:如果四个参数有相同的下标那么就是标准DH,反之则为改正DH。

    在这里插入图片描述
    影响

    对于树形结构或者闭链机构的机器人来说,按照SDH方法建立的连杆坐标系会产生歧义,因为SDH的建系原则是把连杆i的坐标系建立在连杆的远端,如图3(a)所示,这就导致连杆0上同时出现了两个坐标系。而MDH把连杆坐标系建立在每个连杆的近端,则不会坐标系重合的情况,如图3右图所示,这就克服了SDH方法建系的缺点。
    图3

    标准DH

    在这里插入图片描述
    标准DH

    d i {{\text{d}}_{i}} di : 沿着 Z i − 1 {{\text{Z}}_{i-1}} Zi1轴, 从 X i − 1 {{\text{X}}_{i-1}} Xi1移动到 X i {{\text{X}}_{i}} Xi的距离;
    θ i {{\theta }_{i}} θi : 绕着 Z i − 1 {{\text{Z}}_{i-1}} Zi1轴, 从 X i − 1 {{\text{X}}_{i-1}} Xi1旋转到 X i {{\text{X}}_{i}} Xi的角度;
    a i {{\text{a}}_{i}} ai :沿着 X i {{\text{X}}_{i}} Xi轴, 从 Z i − 1 {{\text{Z}}_{i-1}} Zi1移动到 Z i {{\text{Z}}_{i}} Zi的距离;
    α i {{\alpha }_{i}} αi :绕着 X i {{\text{X}}_{i}} Xi轴, 从 Z i − 1 {{\text{Z}}_{i-1}} Zi1旋转到 Z i {{\text{Z}}_{i}} Zi的角度;

    ![在

    改进DH

    在这里插入图片描述
    改进DH
    a i − 1 {{\text{a}}_{i-1}} ai1 :沿着 X i − 1 {{\text{X}}_{i-1}} Xi1轴, 从 Z i − 1 {{\text{Z}}_{i-1}} Zi1移动到 Z i {{\text{Z}}_{i}} Zi的距离;
    α i − 1 {{\alpha }_{i-1}} αi1 :绕着 X i − 1 {{\text{X}}_{i-1}} Xi1轴, 从 Z i − 1 {{\text{Z}}_{i-1}} Zi1旋转到 Z i {{\text{Z}}_{i}} Zi的角度;
    d i {{\text{d}}_{i}} di : 沿着 Z i {{\text{Z}}_{i}} Zi轴, 从 X i − 1 {{\text{X}}_{i-1}} Xi1移动到 X i {{\text{X}}_{i}} Xi的距离;
    θ i {{\theta }_{i}} θi : 绕着 Z i {{\text{Z}}_{i}} Zi轴, 从 X i − 1 {{\text{X}}_{i-1}} Xi1旋转到 X i {{\text{X}}_{i}} Xi的角度;
    在这里插入图片描述

    SDH与MDH比较

    (1)固连坐标系不同

    SDH方法关节i上固连的是i-1坐标系,即坐标系建在连杆的输出端;MDH关节i上固连的是i坐标系,即坐标系建在连杆的输入端。

    (2)坐标系变换顺序不同

    SDH方法是ZX类变换:先绕着i-1坐标系的的Zi-1轴旋转和平移,再绕着坐标系i的Xi轴进行旋转和平移;MDH方法是XZ类变换:先绕着i坐标系的的Xi轴旋转和平移,再绕着坐标系i的Zi轴进行旋转和平移;

    展开全文
  • 机械臂D-H参数法分析

    万次阅读 多人点赞 2019-01-03 23:50:50
    文章目录前言连杆D-H参数法介绍坐标变换矩阵方法总结 前言 笔者在看D-H参数法的时候对此方法的适用性产生了好奇,并对手边的一只五自由度旋转舵机机械手进行了坐标系的建模。为了方便理解画了一个示意图,图省事...

    前言

    笔者在看D-H参数法的时候对此方法的适用性产生了好奇,通过个人构思推导得出传统D-H参数表有时不适用的原因,并相出一种简洁的判断方法,列在文章最末,原理十分简单,欢迎指点。

    本人对手边的一只五自由度旋转舵机机械手进行了坐标系的建模。为了方便理解画了一个示意图,图省事所以画成了圆柱形,各个旋转关节不影响理解即可。

    机械臂在底座上有四节连杆。第一节为相对于底座转动的连杆。第二节相对于第一节的连轴处旋转。第三节相对于第二节的连轴处旋转,第四节相对于第三节的连轴处旋转。第四节末端为机械手工作部件,抓取夹,绕第四节末端的轴转动,由于不关心夹子的开合角度,便简化为一个示意的形状。其中第四节的转轴距第四节形心轴向后偏了距离为h。

    为了看得更清楚,在建模软件中调整一下角度,可看出机械臂大致的运动姿态。

    下面进入正题,第一部分介绍推算D-H参数与坐标轴方向的方法;第二部分介绍一下根据D-H参数得到的坐标变换矩阵;第三部分为我在建模时遇到的问题和自己的分析;第四部分为我总结的步骤。

    连杆D-H参数法介绍

    建立连杆坐标系的基本原则如图所示。规定连杆 i i i的坐标系为 i i i,坐标系 i i i z i z_i zi轴与关节轴 i i i重合,坐标系 的原点位于连杆长度 a i a_i ai与关节轴线 i i i的交点处,坐标系 i i i x i x_i xi轴沿着 a i a_i ai由轴 i i i指向轴 i + 1 i+1 i+1,坐标系 i i i y i y_i yi由右手定则确定。

    如图所示,表示了机器人的两个连杆 i − 1 i-1 i1 i i i,图中的四个参数 α i − 1 \alpha_{i-1} αi1 a i − 1 a_{i-1} ai1 d i d_i di θ i \theta_i θi为连杆 i i i的D-H参数。

    根据蔡自兴老师的《机器人学》第三版第42页的Craig法则:可得出四个参数的计算方法。

    a i − 1 a_{i-1} ai1=沿 x i − 1 x_{i-1} xi1轴,从 z i − 1 z_{i-1} zi1移动到 z i z_i zi的距离。
    α i − 1 \alpha_{i-1} αi1=绕 x i − 1 x_{i-1} xi1轴,从 z i − 1 z_{i-1} zi1旋转到 z i z_i zi的转角。
    d i d_i di=沿 z i z_i zi轴,从 x i − 1 x_{i-1} xi1移动到 x i x_i xi的距离。
    θ i \theta_i θi=沿 z i z_i zi轴,从 x i − 1 x_{i-1} xi1旋转到 x i x_i xi的转角。

    D-H参数法的坐标变换矩阵

    建立相邻连杆的坐标系变换的一般形式,然后将这些变换联系起来,就可以求出最后一个连杆相对于基坐标系的位置和姿态,即运动学方程的矩阵表示,如图所示。连杆变换即坐标系 i − 1 i-1 i1向坐标系 i i i的变换。变换过程可以看成是坐标系 i − 1 i-1 i1经过4次子变换得到了坐标系 i i i,建立3个中间坐标系 R R R Q Q Q P P P。坐标系 i − 1 i-1 i1先绕坐标轴 x i − 1 x_{i-1} xi1旋转 α i − 1 \alpha_{i-1} αi1得到坐标系 R R R;坐标系 R R R沿着轴线 i − 1 i-1 i1和轴线 i i i的公垂线方向移动 a i − 1 a_{i-1} ai1,得到坐标系 Q Q Q;坐标系 Q Q Q绕坐标轴 z Q z_Q zQ旋转 θ i \theta_i θi,得到坐标系 P P P;坐标系 P P P沿着坐标轴 z P z_P zP方向移动 d i d_i di,得到坐标系 i i i

    由坐标系变换法则可知,这四个变换可以用四个齐次变换矩阵表示,分别是 R i − 1 T _{R}^{i-1} T Ri1T Q R T _{Q}^R T QRT P Q T _{P}^Q T PQT i P T _{i}^P T iPT,根据坐标变换的链式法则,坐标系 i − 1 i-1 i1到坐标系 i i i的变换矩阵可以写成
    i − 1 i T = R i − 1 T Q R T P Q T i P T = R o t ( x , α i − 1 ) T r a n s ( x , a i − 1 ) R o t ( z , θ i ) T r a n s ( z , d i ) = [ c o s θ i − s i n θ i 0 a i − 1 s i n θ i c o s α i − 1 c o s θ i c o s α i − 1 − s i n α i − 1 − d i s i n α i − 1 s i n θ i s i n α i − 1 c o s θ i s i n α i − 1 c o s α i − 1 d i c o s α i − 1 0 0 0 1 ] _{i-1}^i T=_{R}^{i-1} T_{Q}^R T_{P}^Q T_{i}^P T =Rot(x,\alpha_{i-1})Trans(x,a_{i-1})Rot(z,\theta_{i})Trans(z,d_i) =\begin{bmatrix} cos\theta_i&-sin\theta_i&0&a_{i-1}\\ sin\theta_icos\alpha_{i-1}&cos\theta_icos\alpha_{i-1}&-sin\alpha_{i-1}&-d_isin\alpha_{i-1}\\ sin\theta_isin\alpha_{i-1}&cos\theta_isin\alpha_{i-1}&cos\alpha_{i-1}&d_icos\alpha_{i-1}\\ 0&0&0&1 \end{bmatrix} i1iT=Ri1TQRTPQTiPT=Rot(x,αi1)Trans(x,ai1)Rot(z,θi)Trans(z,di)=cosθisinθicosαi1sinθisinαi10sinθicosθicosαi1cosθisinαi100sinαi1cosαi10ai1disinαi1dicosαi11

    其中, R o t ( x , α i − 1 ) Rot(x,\alpha_{i-1}) Rot(x,αi1)表示坐标系绕 x x x轴旋转 α i − 1 \alpha_{i-1} αi1 T r a n s ( x , a i − 1 ) Trans(x,a_{i-1}) Trans(x,ai1)表示沿着 x x x轴平移 a i − 1 a_{i-1} ai1

    在得到每个连杆变换后,通过链式法则就可以得到执行机构相对于基坐标系的位姿,即机械臂的运动学方程,可由齐次矩阵 0 5 T _0^5T 05T表示。
    5 0 T = 1 0 T 2 1 T 3 2 T 4 3 T 5 4 T = [ n x o x a x P x n y o y a y P y n z o z a z P z 0 0 0 1 ] _5^0T=_1^0T _2^1T _3^2T _4^3T _5^4T=\begin{bmatrix} n_x&o_x&a_x&P_x\\ n_y&o_y&a_y&P_y\\ n_z&o_z&a_z&P_z\\ 0&0&0&1\\ \end{bmatrix} 50T=10T21T32T43T54T=nxnynz0oxoyoz0axayaz0PxPyPz1

    特殊情况加实例分析

    上述方法中,转轴仅绕参考坐标系即上一个关节的 x x x轴与 z z z轴旋转,移动。其中绕 z z z轴的转角为关节舵机的主动转角,若舵机转角为0, θ \theta θ为0,即仅绕 x x x轴产生转动,转动后的新 x x x轴应当与原 x x x轴平行。

    从图中可以看出,这是一个五自由度的机械臂,所有关节均为转动关节。最底下为底座,将其圆心视为全局坐标系的 O O O点,竖直向上方向为全局坐标系的 z z z正方向,向前的方向为 x x x轴正方向。底座的高度为 l 0 l_0 l0

    在底座上有四节连杆。第一节为相对于底座转动的连杆,长度为 l 1 l_1 l1。第二节相对于第一节的连轴处旋转,长度为 l 2 l_2 l2。第三节相对于第二节的连轴处旋转,长度为 l 3 l_3 l3,第四节相对于第三节的连轴处旋转,长度为 l 4 l_4 l4。第四节末端为机械手工作部件,抓取夹,绕第四节末端的轴转动,其中此转轴距第四节形心轴向后偏了距离为 h h h,在此图中状态看为向全局坐标系x轴负方向偏了 h h h

    根据上述规则,将图中机械臂各关节坐标系一一标出。并得到D-H参数表。

    连杆关节角 θ i / ° \theta_i/° θi/°连杆偏移量 d i / m d_i/m di/m扭转角 α i − 1 / ° \alpha_{i-1}/° αi1/°连杆长度 a i − 1 / m a_{i-1}/m ai1/m
    10 l 0 l_0 l000
    20 l 1 l_1 l1 − 90 ° -90° 90°0
    3-90°00 l 2 l_2 l2
    4000 l 3 l_3 l3
    5-90°0 − 90 ° -90° 90°0

    其中前四个关节的D-H参数都依照规则较为简单地求出,但是第五关节比较奇怪。按照描述 a i − 1 a_{i-1} ai1为沿 x i − 1 x_{i-1} xi1轴,从 z i − 1 z_{i-1} zi1移动到 z i z_i zi的距离。 d i d_i di为沿 z i z_i zi轴,从 x i − 1 x_{i-1} xi1移动到 x i x_{i} xi的距离。

    z 4 z_4 z4移动到 z 5 z_5 z5的距离为h,但是在 x 4 x_4 x4上的分量为0; x 4 x_4 x4 x 5 x_5 x5相交,故 d d d也为 0 0 0
    但这很明显是不可能的,此关节的两个空间尺度 l 4 l_4 l4 h h h都没有用上,那这个关节岂不是变成质点了吗?

    于是我尝试了三种思路得到参数
    (1)不管轴方向的分量,强行将此二值代入,认为:

    连杆关节角 θ i / ° \theta_i/° θi/°连杆偏移量 d i / m d_i/m di/m扭转角 α i − 1 / ° \alpha_{i-1}/° αi1/°连杆长度 a i − 1 / m a_{i-1}/m ai1/m
    5 θ 5 \theta_5 θ5 l 4 l_4 l4 − 90 ° -90° 90° h h h

    并得到变换矩阵 5 4 T _5^4T 54T
    5 4 T = [ c o s θ 5 − s i n θ 5 0 h 0 0 1 l 4 − s i n θ 5 − c o s θ 5 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix} cos\theta_5&-sin\theta_5&0&h\\ 0&0&1&l_4\\ -sin\theta_5&-cos\theta_5&0&0\\ 0&0&0&1 \end{bmatrix} 54T=cosθ50sinθ50sinθ50cosθ500100hl401

    按照机械臂的初始状态, θ 5 = − 90 ° \theta_5=-90° θ5=90°,代入得
    5 4 T = [ 0 1 0 h 0 0 1 l 4 1 0 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix}0&1&0&h\\0&0&1&l_4\\1&0&0&0\\0&0&0&1\end{bmatrix} 54T=001010000100hl401,明显不对

    (2)考虑到坐标系 5 5 5的原点相对于坐标系 4 4 4 x x x方向位移为 l 4 l_4 l4 y y y方向为 − h -h h,猜测为

    连杆关节角 θ i / ° \theta_i/° θi/°连杆偏移量 d i / m d_i/m di/m扭转角 α i − 1 / ° \alpha_{i-1}/° αi1/°连杆长度 a i − 1 / m a_{i-1}/m ai1/m
    5 θ 5 \theta_5 θ5-h-90° l 4 l_4 l4

    可得坐标变换矩阵 5 4 T = [ 0 1 0 l 4 0 0 1 − h 1 0 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix}0&1&0&l_4\\0&0&1&-h\\1&0&0&0\\0&0&0&1\end{bmatrix} 54T=001010000100l4h01,坐标系 5 5 5的原点代入求该点在坐标系 4 4 4对应的坐标: [ 0 1 0 l 4 0 0 1 − h 1 0 0 0 0 0 0 1 ] [ 0 0 0 1 ] = [ l 4 − h 0 1 ] \begin{bmatrix}0&1&0&l_4\\0&0&1&-h\\1&0&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}0\\0\\0\\1\end{bmatrix}=\begin{bmatrix}l_4\\-h\\0\\1\end{bmatrix} 001010000100l4h010001=l4h01,这次好像对了,再将点(1,2,3)代入试试 [ 0 1 0 l 4 0 0 1 − h 1 0 0 0 0 0 0 1 ] [ 1 2 3 1 ] = [ 2 + l 4 3 − h 1 1 ] \begin{bmatrix}0&1&0&l_4\\0&0&1&-h\\1&0&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}1\\2\\3\\1\end{bmatrix}=\begin{bmatrix}2+l_4\\3-h\\1\\1\end{bmatrix} 001010000100l4h011231=2+l43h11,可观察出在坐标系4中应当为 ( 3 + l 4 , − 1 − h , − 2 ) (3+l_4,-1-h,-2) (3+l4,1h,2),所以此矩阵错误。

    (3) 这是为什么呢,我观察了下,现在它是 − 90 ° , -90°, 90°我把它转回去看看。即绕 z 5 z_5 z5轴正转 90 90 90度。

    可以看出 x 5 x_5 x5 x 4 x_4 x4并非平行,相反地, y 5 y_5 y5 y 4 y_4 y4是平行的。说明坐标系 5 5 5为绕 y y y轴转动了 90 90 90度,然后在 x x x y y y方向产生了位移。这个变换矩阵应当自行计算:
    5 4 T = T r a n s ( y , − h ) T r a n s ( x , l 4 ) R o t ( y , 90 ° ) R o t ( z , θ 5 ) = [ 1 0 0 l 4 0 1 0 − h 0 0 1 0 0 0 0 1 ] [ 0 0 1 0 0 1 0 0 − 1 0 0 0 0 0 0 1 ] [ c o s θ 5 − s i n θ 5 0 0 s i n θ 5 c o s θ 5 0 0 0 0 1 0 0 0 0 1 ] _5^4T=Trans(y,-h)Trans(x,l_4)Rot(y,90°)Rot(z,\theta_5) =\begin{bmatrix}1&0&0&l_4\\0&1&0&-h\\0&0&1&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}0&0&1&0\\0&1&0&0\\-1&0&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}cos\theta_5&-sin\theta_5&0&0\\sin\theta_5&cos\theta_5&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix} 54T=Trans(y,h)Trans(x,l4)Rot(y,90°)Rot(z,θ5)=100001000010l4h010010010010000001cosθ5sinθ500sinθ5cosθ50000100001

    = [ 0 0 1 l 4 s i n θ 5 c o s θ 5 0 − h − c o s θ 5 s i n θ 5 0 0 0 0 0 1 ] =\begin{bmatrix}0&0&1&l_4\\sin\theta_5&cos\theta_5&0&-h\\-cos\theta_5&sin\theta_5&0&0\\0&0&0&1\end{bmatrix} =0sinθ5cosθ500cosθ5sinθ501000l4h01

    θ = − 90 ° \theta=-90° θ=90°代入得 5 4 T = [ 0 0 1 l 4 − 1 0 0 − h 0 − 1 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix}0&0&1&l_4\\-1&0&0&-h\\0&-1&0&0\\0&0&0&1\end{bmatrix} 54T=010000101000l4h01,再将点 ( 1 , 2 , 3 ) (1,2,3) (1,2,3)代入试试 [ 0 0 1 l 4 − 1 0 0 − h 0 − 1 0 0 0 0 0 1 ] [ 1 2 3 1 ] = [ 3 + l 4 − 1 − h − 2 1 ] \begin{bmatrix}0&0&1&l_4\\-1&0&0&-h\\0&-1&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}1\\2\\3\\1\end{bmatrix}=\begin{bmatrix}3+l_4\\-1-h\\-2\\1\end{bmatrix} 010000101000l4h011231=3+l41h21,正确。

    反复验证,此种方法得到的矩阵应该不存在问题。

    方法总结

    于是就出现了问题,难道传统 D − H D-H DH参数法是错的?那肯定不是,之前的学者们肯定遇到了各种特殊情况,并且给出了解决方法,但我觉得书上描述的针对一般性问题的描述过于复杂,在此,我想出了一种比较快速的方法。

    根据前面的描述,若舵机转角为 0 0 0 θ \theta θ 0 0 0,即仅绕 x x x轴产生转动,转动后的新 x x x轴应当与原 x x x轴平行。

    故,看到机械臂关节后的建立坐标转换矩阵的步骤为:

    (1)根据 C r a i g Craig Craig规则,确定各原点以及 x i , y i , z i x_i,y_i,z_i xi,yi,zi 的方向。并根据规则算出此状态时的角度 θ i 0 \theta_{i0} θi0
    (2)将关节 i i i沿转轴 z i z_i zi旋转 − θ i 0 -\theta_{i0} θi0,得到关节 i i i相对于上一个转角为 0 0 0时的坐标系,观察此时的 x x x轴是否与上一个关节的 x x x轴平行,若平行,则满足前述规则,直接求出 D − H D-H DH参数,并代入矩阵

    [ c o s θ i − s i n θ i 0 a i − 1 s i n θ i c o s α i − 1 c o s θ i c o s α i − 1 − s i n α i − 1 − d i s i n α i − 1 s i n θ i s i n α i − 1 c o s θ i s i n α i − 1 c o s α i − 1 d i c o s α i − 1 0 0 0 1 ] \begin{bmatrix}cos\theta_i&-sin\theta_i&0&a_{i-1}\\ sin\theta_icos\alpha_{i-1}&cos\theta_icos\alpha_{i-1}&-sin\alpha_{i-1}&-d_isin\alpha_{i-1}\\ sin\theta_isin\alpha_{i-1}&cos\theta_isin\alpha_{i-1}&cos\alpha_{i-1}&d_icos\alpha_{i-1}\\ 0&0&0&1\\ \end{bmatrix} cosθisinθicosαi1sinθisinαi10sinθicosθicosαi1cosθisinαi100sinαi1cosαi10ai1disinαi1dicosαi11

    (3)若此时的 x x x轴与上一个关节的 x x x轴不平行,则必定有绕 y y y轴的转动,此时需要观察,另行推算出坐标变换矩阵。一般优先考虑转角,后考虑位移。一般情况下机械臂不会有很奇怪的角度,通过观察可得到沿 x x x y y y轴的转角。若同时具有 x x x y y y轴的转角并且角度不是 90 90 90的倍数,也可根据坐标轴之间的夹角求出转角。

    另:在上面那个机械臂的例子中 x 3 x_3 x3 x 4 x_4 x4也不是平行的,但考虑到此状态的 θ = − 90 ° \theta=-90° θ=90°,将 θ 3 \theta_3 θ3正转 90 ° 90° 90°后, x 3 x_3 x3 x 4 x_4 x4平行。

    2019-01-03 上海

    展开全文
  • 关于D-H参数法建模

    千次阅读 2020-08-30 20:03:43
    ​D-H参数法一般有两种定义方式,分别为标准D-H参数法和改进D-H参数法。初学D-H参数法,很容易被这两种定义方式搞晕,因为很多参考书中仅介绍了一种定义方式,而当我们查找资料时看到另一种定义方式时就会很困惑,不...

    关于D-H参数法建模

    ​D-H参数法一般有两种定义方式,分别为标准D-H参数法和改进D-H参数法。初学D-H参数法,很容易被这两种定义方式搞晕,因为很多参考书中仅介绍了一种定义方式,而当我们查找资料时看到另一种定义方式时就会很困惑,不知道哪种方式才是正确的。事实上,两种定义方式均可以解决问题,因此只要任选一种即可。下面就这两种方法介绍其建模方式。

    1.前言

    ​首先,需要明确的是坐标系是固连连杆上的,而不是关节上。两种D-H参数的定义方式的主要区别在于坐标系的建立位置不同,标准法建立在连杆后端,改进法建立在连杆前端。

    2.D-H参数法

    2.1.标准参数法(往前看)

    标准参数法

    ​标准D-H参数法的连杆坐标系定义连杆后端,如上图,对于描述连杆i-1的坐标系{i-1}建立在关节i的轴线上。从{i-1}变换到{i}的变换矩阵所需要D-H参数为:
    i i − 1 T : [ a i , α i , d i , θ i ] ^{i-1}_iT:[a_i,\alpha_i,d_i,\theta_i] ii1T:[ai,αi,di,θi]
    ​坐标系变换过程为:

    1. Z i − 1 Z_{i-1} Zi1轴旋转 θ i \theta_i θi度,使得 X i − 1 X_{i-1} Xi1轴旋转到 X i X_i Xi轴的角度;
    2. 沿 Z i − 1 Z_{i-1} Zi1轴移动 d i d_i di距离,使得 X i − 1 X_{i-1} Xi1轴移动到 X i X_i Xi轴的距离;
    3. X i X_{i} Xi轴旋转 α i \alpha_i αi度,使得 Z i − 1 Z_{i-1} Zi1轴旋转到 Z i Z_i Zi轴的角度;
    4. 沿 X i X_{i} Xi轴移动 a i a_i ai距离,使得 Z i − 1 Z_{i-1} Zi1轴移动到 Z i Z_i Zi轴的距离;

    2.2.改进参数法(往后看)

    在这里插入图片描述

    ​改进D-H参数法的连杆坐标系定义连杆前端,如上图,对于描述连杆i-1的坐标系{i-1}建立在关节i-1的轴线上。从{i-1}变换到{i}的变换矩阵所需要D-H参数为:
    i i − 1 T : [ a i − 1 , α i − 1 , d i , θ i ] ^{i-1}_iT:[a_{i-1},\alpha_{i-1},d_i,\theta_i] ii1T:[ai1,αi1,di,θi]
    ​坐标系变换过程为:

    1. X i − 1 X_{i-1} Xi1轴旋转 α i − 1 \alpha_{i-1} αi1度,使得 Z i − 1 Z_{i-1} Zi1轴旋转到 Z i Z_i Zi轴的角度;
    2. 沿 X i − 1 X_{i-1} Xi1轴移动 a i − 1 a_{i-1} ai1距离,使得 Z i − 1 Z_{i-1} Zi1轴移动到 Z i Z_i Zi轴的距离;
    3. Z i Z_i Zi轴旋转 θ i \theta_i θi度,使得 X i − 1 X_{i-1} Xi1轴旋转到 X i X_i Xi轴的角度;
    4. 沿 Z i Z_i Zi轴移动 d i d_i di距离,使得 X i − 1 X_{i-1} Xi1轴移动到 X i X_i Xi轴的距离.

    3.建立坐标系

    ​在建立整个机械臂坐标系时,应该先建立中间坐标系{i},最后建立两端坐标系{0}、{n}。对于建立中间坐标系{i},应按照以下步骤进行:

    1. 根据各个关节轴线,确定所有的 Z Z Z轴方向,关节轴线与坐标系的对应关系如下所示;
      在这里插入图片描述

    2. 确定坐标原点 O i O_i Oi位置和 X i X_i Xi轴方向。根据两条关节i与i+1轴线的位置关系,有以下三种情况:

      • 两者相交:坐标原点 O i O_i Oi为两者轴线的交点, X i X_i Xi轴方向应垂直这两条轴线组成的平面;
      • 两者异面:坐标原点 O i O_i Oi为关节i的轴线与这两者的公垂线的交点, X i X_i Xi轴方向为公垂线方向;
      • 两者平行:由于两者平行,因此公垂线有无数条,应选择坐标原点 O i O_i Oi使对下一连杆(上一连杆亦可)的偏移为0,即应选择经过下一坐标原点(上一坐标原点)的公垂线。 X i X_i Xi轴方向为公垂线方向。

    ​应该注意的是,关节与坐标系的编号不一定相同。若采用标准D-H参数法的定义,坐标系编号比关节编号小1;若采用改进D-H参数法的定义,坐标系编号与关节编号相同。
    最后,我要说的是,由于选择原点位置和X轴方向有很大的自由性,因此即使都采用D-H参数法建立坐标系,最终得到的结果依然会有所差异。

    展开全文
  • 文档为原创,详细介绍主流GIS工具和非主流GIS工具使用四参数法处理坐标转换的方式、参数设置要点、优缺点等。作者使用了ArcGIS、FME、QGIS等工具分别做了处理示范,对大批量、高精度的四参数转换提供了建议。文档...
  • 随机四参数生成

    2017-07-16 01:21:46
    随机四参数生成MATLAB程序
  • 91卫图助手提供两种方法,将CAD DXF文件加载到地图中,分别是七参数法和四参数法,其中七参数法适用于我们明确知道CAD数据中央子午线的前提下,如果不知道中央子午线是多少,则可以使用四参数法。 如果是2000坐标系...
  • DH参数法建立机器人的运动学正解

    万次阅读 多人点赞 2016-04-21 23:32:21
    DH参数法建立机器人的运动学正解  运用DH参数法时坐标系建立的两个约定:  (1)x_i与z_(i-1)垂直  (2)x_i与z_(i-1)相交  坐标系i与坐标系i-1的其次变换矩阵为:  a为两z轴的距离,d为两x轴的距离。 ...
  • 如此来说,对于一个有n个连杆的机械臂,要描述每个连杆的位姿(位置+姿态)应该要6个参数才对,那么要描述整个机械臂就需要6n个参数,可为什么DH参数法里面每根连杆只用了四个就描述完全了? 这是因为我...
  • 参数法和模拟法计算VaR

    千次阅读 2012-01-16 15:24:00
    回顾VaR的定义,为未来收益的累计分布函数,那么 所以,VaR本质上为未来收益的分位点。要计算它,最重要的是... 第一个方向被称为参数法;后一个方向成为模拟法,在实际使用中,又可分为历史模拟法和蒙特卡洛模拟法...
  • 1 迭代 迭代的的设计思想是,开始时选择一个阈值作为初始估计值,然后按某种策略不断的改进这一估计值,直到满足给定的准则为止。在迭代过程中,关键之处在于选择什么样的阈值改进策略。好的改进策略应该具备两...
  • 91卫图助手提供两种方法,将CAD DXF文件加载到地图中,分别是七参数法和四参数法,其中七参数法适用于我们明确知道CAD数据中央子午线的前提下,如果不知道中央子午线是多少,则可以使用四参数法。本文将介绍四参数法...
  • 参数方法,半参数方法,非参数方法

    千次阅读 2018-09-13 17:28:53
    amp;amp;tid=2163476&page=1 参数方法,假定概率分布,只来估计少量参数。 半参数方法,对数据分组,每组采用一种概率分布的假设,最后使用混合概率分布。 非参数方...
  • Holt两参数指数平滑的R实现

    千次阅读 2019-06-25 13:44:48
    对于具有长期趋势的,但是没有季节效应的时间序列,就比较适合利用Holt两参数指数平滑来建模预测。 1.模型简介 Holton两参数指数平滑适用于对含有线性趋势的序列进行修匀。他的基本结构为: 2.建模步骤 (1)...
  • 1.数下的各种图形 import numpy as np import matplotlib.pyplot as plt #摆线 a = 1 #theta = np.arange(0, 4 * np.pi, np.pi / 180) theta = np.linspace(0, 2*np.pi, 1000) x = a * (theta - np.sin(theta)) ...
  • 基于临界比例度整定PID控制器参数的仿真研究 这篇的内容与上两篇是有一定联系的,也可以参考一下之前两篇加强理解: 用matlab的编程和游动鼠标求二阶传递函数的上升时间、峰值时间、超调量和调节时间 PID...
  • 机器人正向运动学和D-H参数方法

    千次阅读 2019-10-26 08:44:22
    2 D-H参数法进行正向运动学解算的过程 D-H参数法按照设定规则为每个连杆固连了一个坐标系,之后就可以方便的描述一个连杆坐标系到相邻的下一个连杆坐标系的转换关系。实质就是把相邻坐标系的转换分解为了若干个步骤...
  • ZN整定PID参数

    2011-12-22 22:46:43
    ZN整定PID参数,自动化专业的学生能有所帮助!
  • 参数方法,假定概率分布,只来估计少量参数。 半参数方法,对数据分组,每组采用一种概率分布的假设,最后使用混合概率分布。 非参数方法,不需要知道数据的概率分布,只需要假设:相似的输入具有相似的输出。因为...
  • DH参数介绍

    万次阅读 多人点赞 2018-05-25 09:39:07
    通常,每一个变换需要6个独立参数来描述坐标系i相对坐标系i-1的关系,3个用来描述位置另外3个用来描述方向。 在1995年,Jacques Denavit 和 Richard Hartenberg 提出了一种系统化的方法来解决这个...
  • summary(BRCA)
  • 单应性矩阵由配对的内点计算...光束平差:相机参数计算的基础 // 摄像测量学的基本原理 Bookmark http://www.cnblogs.com/libing64/archive/2012/02/12/2878731.html   //3Dreconstruction ...
  • DH参数的理解

    千次阅读 2020-03-05 15:01:48
    DH 参数一般使用四个参数: X轴旋转,一般使用α表示 X轴平移,一般使用a表示 Z轴旋转,一般使用θ表示 Z轴平移,一般使用d表示 根据轴的先后顺序分为标准DH参数和改进DH参数。 标准DH参数:两个连杆坐标系变换是先...
  • 参数估计参数估计中,我们会遇到两个主要问题:(1)如何去估计参数的value。(2)估计出参数的value之后,如何去计算新的observation的概率,即进行回归分析和预测。首先定义一些符号:数据集X中
  • 关注、星标公众号,不错过精彩内容直接来源:21ic电子网之前给大家分享过PID基础理论的文章:重温经典PID算法PID原理和参数调试今天进一步分享一些PID相关细节内容。在过程控制中,按...
  • 参数方法和非参数方法

    千次阅读 2017-07-04 09:01:37
    参数方法和非参数方法
  • 参数估计方法和非参数估计方法

    万次阅读 2018-09-04 14:10:13
    这类语言模型一般都是对文本的生成过程提出自己的概率图模型,然后利用观察到的语料数据对模型参数做估计。有了语言模型和相应的模型参数,我们可以有很多重要的应用,比如文本特征降维、文本主题分析等等。本文主要...
  • 参数估计方法——OLS、MLE、MAP

    千次阅读 2019-07-31 15:17:22
    文章目录1、前言2、最大似然估计 MLE3、最大后验估计 MAP4、贝叶斯估计5、其他的参数估计方法 1、前言 我们讨论的是有参的情况,在这种情况中,我们的目标是估计参数值(假设有可能确定真是参数),而不是函数值。...
  • PID控制器及其参数整定

    千次阅读 2019-05-22 22:54:57
    本文主要详细分析PIDPIDPID控制器各个环节的作用以及参数整定的一般方法。 PIDPIDPID控制器各环节的作用: PPP:误差的比例项(现在),比例项的引入,时域上来讲可以增加了系统的开环增益和自然频率,使控制系统的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 664,896
精华内容 265,958
关键字:

参数法