赞
踩
动力学参数辨识的关键是动力学模型的求解与线性化,动力学模型求解较为简单,然而动力学模型线性化较为困难。借助sympybotics机器人工具箱将有效实现动力学模型的线性化从而获得观测矩阵Y和最小待辨识参数集P。
如此好用的工具箱是Pyhton环境下使用的,不过使用,要先配置一下相关的环境
首先要安装Pyhton和GIT,相关的安装方法不咋赘述;
安装sympybotics
在python和windows系统的命令窗口下复制以下命令:
- git clone https://github.com/cdsousa/SymPyBotics.git
- cd sympybotics
- python setup.py install
运行sympybotics还需要安装sysmpy 和numpy
安装命令为;
- pip list #查看python已安装的工具包
- pip install 需要安装的工具包
- #symbotics需要安装的工具包
- pip install sympy==0.7.5 #必须是0.7.5否则会报错
- pip install numpy
安装完成以后运行例:
- import sympy
- import numpy
- import sympybotics
- # 建立机器人模型
- rbtdef = sympybotics.RobotDef('Example Robot', # robot name
- [('0', 0, 0.400, 'q'), # list of tuples with Denavit-Hartenberg parameters
- ('-pi/2', 0, 0, 'q'),
- ('0', 0.360, 0, 'q'),
- ('-pi/2', 0.050, 0.360, 'q'),
- ('pi/2', 0, 0, 'q'),
- ('-pi/2', 0, 0.090, 'q')], # (alpha, a, d, theta)
- dh_convention='modified' # either 'standard' or 'modified'
- )
- # 设定重力加速度的值(沿z轴负方向)
- rbtdef.gravityacc=sympy.Matrix([0.0, 0.0, -9.81])
- # 设定摩擦力 库伦摩擦与粘滞摩擦
- rbtdef.frictionmodel = {'Coulomb', 'viscous'}
- # 显示动力学全参数
- print(rbtdef.dynparms())
- # 构建机器人动力学模型
- rbt = sympybotics.RobotDynCode(rbtdef, verbose=True)
- # 计算最小参数
- rbt.calc_base_parms()
- rbt.dyn.baseparms
- # 打印最小参数集P
- print(rbt.dyn.baseparms)
- rbt.Hb_code
- print(rbt.Hb_code)#打印观测矩阵
- Yr = sympybotics.robotcodegen.robot_code_to_func('C', rbt.Hb_code, 'H', 'Hb_code', rbtdef)
- print(Yr) #打印显示转换为C代码后的观测矩阵Yr
- #输出观测矩阵
- ob_Yr=open("H.txt","w+")
- print(Yr,file=ob_Yr)
- ob_Yr.close()
- #输出最小参数集
- min_inertia=open("P.txt",'w+')
- print(rbt.dyn.baseparms,file=min_inertia)
- min_inertia.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。