Sympybotics机器人动力学符号推导工具箱

https://github.com/cdsousa/SymPyBoticshttps://github.com/cdsousa/SymPyBoticsSympybotic是一款机器人运动学和动力学的符号推导工具包.

其主要依赖于两个工具包:

SymPy是用于符号数学的Python库。 它旨在组建功能齐全的计算机代数系统(CAS),同时保持代码尽可能的简单,以使其易于理解和易于扩展。 SymPy完全用Python编写。

安装方式具体如下所示

git clone https://github.com/cdsousa/SymPyBotics.git
cd sympybotics
python setup.py install

测试例子1:

#!/usr/bin/python3import sympy
import numpy
import sympybotics
# 建立机器人模型
rbtdef = sympybotics.RobotDef('Example Robot', # robot name[('0', 0, 0.29, 'q'),  # list of tuples with Denavit-Hartenberg parameters( 'pi/2', 0, 0, 'q'),('0',0.32,0,'q'),('-pi/2',0,0.42,'q'),('pi/2',0,0,'q'),('-pi/2',0,0.18,'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)
# 转换为C代码
tau_str = sympybotics.robotcodegen.robot_code_to_func('C', rbt.invdyn_code, 'tau_out', 'tau', rbtdef)
print(tau_str) #打印
#计算并显示动力学模型的回归观测矩阵,转换为C代码
rbt.calc_base_parms()
rbt.dyn.baseparms
print(rbt.dyn.baseparms)# 打印最小参数集P
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
#把动力学全参数模型,关节力矩模型,观测矩阵和最小惯性参数集结果保存为txt
data=open("D:\data.txt",'w+')
print(rbt.dyn.dynparms,tau_str,Yr,rbt.dyn.baseparms,file=data)
data.close()

测试2:

>>> import sympy
>>> import sympybotics
>>> rbtdef = sympybotics.RobotDef('Example Robot', # robot name
...                               [('-pi/2', 0, 0, 'q+pi/2'),  # list of tuples with Denavit-Hartenberg parameters
...                                ( 'pi/2', 0, 0, 'q-pi/2')], # (alpha, a, d, theta)
...                               dh_convention='standard' # either 'standard' or 'modified'
...                              )
>>> rbtdef.frictionmodel = {'Coulomb', 'viscous'} # options are None or a combination of 'Coulomb', 'viscous' and 'offset'
>>> rbtdef.gravityacc = sympy.Matrix([0.0, 0.0, -9.81]) # optional, this is the default valuerbt = sympybotics.RobotDynCode(rbtdef, verbose=True)
donerbt = sympybotics.RobotDynCode(rbtdef, verbose=True)
generating geometric model
generating kinematic model
generating inverse dynamics code
generating gravity term code
generating coriolis term code
generating coriolis matrix code
generating inertia matrix code
generating regressor matrix code
generating friction term code
done>>> rbt.geo.T[-1]
Matrix([
[-sin(q1)*sin(q2), -cos(q1),  sin(q1)*cos(q2), 0],
[ sin(q2)*cos(q1), -sin(q1), -cos(q1)*cos(q2), 0],
[         cos(q2),        0,          sin(q2), 0],
[               0,        0,                0, 1]])>>> tau_str = sympybotics.robotcodegen.robot_code_to_func('C', rbt.invdyn_code, 'tau_out', 'tau', rbtdef)Doing print(tau_str), function code will be output:
void tau( double* tau_out, const double* parms, const double* q, const double* dq, const double* ddq )
{double x0 = sin(q[1]);double x1 = -dq[0];double x2 = -x1;double x3 = x0*x2;double x4 = cos(q[1]);double x5 = x2*x4;double x6 = parms[13]*x5 + parms[15]*dq[1] + parms[16]*x3;double x7 = parms[14]*x5 + parms[16]*dq[1] + parms[17]*x3;double x8 = -ddq[0];double x9 = -x4;double x10 = dq[1]*x1;double x11 = x0*x10 + x8*x9;double x12 = -x0*x8 - x10*x4;double x13 = 9.81*x0;double x14 = 9.81*x4;double x15 = parms[12]*x5 + parms[13]*dq[1] + parms[14]*x3;tau_out[0] = -parms[3]*x8 + x0*(parms[14]*x11 + parms[16]*ddq[1] + parms[17]*x12 - dq[1]*x15 - parms[19]*x14 + x5*x6) - x9*(parms[12]*x11 + parms[13]*ddq[1] + parms[14]*x12 + dq[1]*x7 + parms[19]*x13 - x3*x6);tau_out[1] = parms[13]*x11 + parms[15]*ddq[1] + parms[16]*x12 - parms[18]*x13 + parms[20]*x14 + x15*x3 - x5*x7;return;
}Dynamic base parameters:
>>> rbt.calc_base_parms()
>>> rbt.dyn.baseparms
Matrix([
[L_1yy + L_2zz],
[         fv_1],
[         fc_1],
[L_2xx - L_2zz],
[        L_2xy],
[        L_2xz],
[        L_2yy],
[        L_2yz],
[         l_2x],
[         l_2z],
[         fv_2],
[         fc_2]])

python 机器人工具——Sympybotics相关推荐

  1. python机器人库(robotics-toolbox-python)的运用

    python机器人库(robotics-toolbox-python)的运用 Python 机器人库的运用 文章目录 python机器人库(robotics-toolbox-python)的运用 前言 ...

  2. python的主流开发工具排名,最常用的python开发工具

    有哪些值得推荐的 Python 开发工具? 第一款:最强终端 Upterm它是一个全平台的终端,可以说是终端里的IDE,有着强大的自动补全功能,之前的名字叫做:BlackWindow. 有人跟他说这个 ...

  3. python 机器人运动仿真_使用RoboDK对工业机器人与传送带进行动态仿真

    在工业机器人应用中,使用机器人代替人力取放物件是最常见的任务类型之一,这类型的自动化任务经常需要使用到传送带.而给机器人编程时,传送带的动态变量给编程与仿真带来复杂性,因此机器人传送带的仿真往往很有挑 ...

  4. 推荐七个Python效率工具!

    为了提高效率,我们在平时工作中常会用到一些Python的效率工具,Python作为比较老的编程语言,它可以实现日常工作的各种自动化.为了更便利的开发项目,这里给大家推荐几个Python的效率工具. 1 ...

  5. 真香 用这七大Python效率工具

    原文链接:http://dwz-9.cn/1mhV_ 为了提高效率,我们在平时工作中常会用到一些Python的效率工具,Python作为比较老的编程语言,它可以实现日常工作的各种自动化.为了更便利的开 ...

  6. python 机器人聊天_使用python构建您的第一个聊天机器人并将其集成到电报中

    python 机器人聊天 Did you know? 你知道吗? "Chatbots can cut operational costs by up to 30%. eCommerce ch ...

  7. python机器人视觉编程——入门篇(下)

    目录 1 全篇概要 2 图像的读取与运算基础 2.1图像的读取 2.1.1 从磁盘的图像(.jpg,.npg,.gif等等)读取 2.1.2 从摄像头里读取图像 2.2图像的运算 2.2.1 图像的数 ...

  8. python 神经网络工具_python神经网络工具箱

    盘点·GitHub最著名的20个Python机器学习项目 我们分析了GitHub上的前20名Python机器学习项目,发现scikit-Learn,PyLearn2和NuPic是贡献最积极的项目.让我 ...

  9. python机器人编程——垃圾自动分类,在VREP环境中,UARM与摄像头联动,实现基于视觉识别的自动抓取(下)

    目录 前言 非绝对垂直摄像头图像的坐标变换 物体的识别和坐标确定 (1)物体的识别 (2)坐标的确定 机械臂执行动作逻辑实现 python源码 前言 本篇我们在<python机器人编程--VRE ...

最新文章

  1. LabVIEW彩色图像分割(基础篇—14)
  2. iSCSI的基础实验
  3. 并行机调度问题matlab,顺序依赖并行机调度问题介绍
  4. java memorycache原理_JVM代码缓存区CodeCache原理及用法解析
  5. yum仓库、源以及编译安装笔记
  6. mysql2012更改表名_T-SQL入門攻略之13-修改数据表
  7. 图灵成立七周年——经典回顾
  8. 横向导出excel_万能转换:R图和统计表转成发表级的Word、PPT、Excel、HTML、Latex、矢量图等...
  9. asp跟JAVA语言有关系吗_asp程序员如何转行为J2EE之java基础上(11)
  10. vsftpd系统用户配置详解
  11. 最近在职场的一些感悟
  12. mysql 几个超时参数(timeout)解释
  13. 漫画小程序源码全开源商业版
  14. 软件逆向工程的前世今生
  15. 初识Tracepro及基本操作说明
  16. 企业微信如何做社群运营?企业微信群运营新玩法(可复用)
  17. 电脑桌面显示不全设置方法
  18. python 中文转Unicode编码 Unicode编码转中文
  19. pytorch保存模型pth_浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
  20. what is AOP

热门文章

  1. Windows 命令使用之 type 命令
  2. 用树莓派制造一支敲击乐队
  3. 超级大乐透中奖小算法
  4. File Zilla服务器回应不可路由的地址。被动模式失败。 -- 解决方案
  5. 我的世界lua脚本改保湿度源码
  6. mac配置chromedriver
  7. 这所与阿里巴巴有关的大学,计算机专业课也变了!
  8. ubuntu16.4版本安装docker-ce提示Package ‘docker-ce‘ has no installation candidate解决的办法
  9. 『金融帝国实验室』(Capitalism Lab)〔优秀教程②〕《了解供应链中供求关系》(作者:CapitalismLabStory)
  10. Activity生命周期中onStart()和onResume()的区别