python机器人库(robotics-toolbox-python)的运用
Python 机器人库的运用
前言
找了半天发现网上关于python机器人库的资料很少,而目前我的项目要用到相关的东西,查询官网过后总结一下。
一、相关概要
这个工具箱为 Python 带来了机器人特定的功能,并利用 Python 的可移植性、普遍性和支持性的优势,以及线性代数(numpy、scipy)、图形(matplotlib、three.js、WebGL)的开源生态系统的能力,交互式开发(jupyter、jupyterlab、mybinder.org)和文档(sphinx)。
工具箱提供了用于表示串行链接机械手的运动学和动力学的工具 - 您可以轻松地以 Denavit-Hartenberg 形式创建自己的工具,导入 URDF 文件,或使用来自 Franka-Emika 的 30 多种提供的知名当代机器人模型, Kinova、Universal Robotics、Rethink 以及 Puma 560 和 Stanford arm 等经典机器人。
该工具箱还将支持具有机器人运动模型(独轮车、自行车)、路径规划算法(bug、距离变换、D*、PRM)、运动动力学规划(晶格、RRT)、定位(EKF、粒子滤波器)等功能的移动机器人,地图构建 (EKF) 和同时定位和映射 (EKF)。
工具箱提供:
成熟的代码,为相同算法的其他实现提供一个比较点;
例程通常以简单明了的方式编写,易于理解,但可能以牺牲计算效率为代价;
可供学习和教学阅读的源代码;
与 Robotics Toolbox for MATLAB 的向后兼容性
该工具箱利用Python 的空间数学工具箱来提供对 SO(n) 和 SE(n) 矩阵、四元数、扭曲和空间向量等数据类型的支持
二、必要的库的安装
- 需要 Python >= 3.6
- spatialmath-python
- numpy
- numpy-stl
- vpython(这个库确实不知道怎么安装,但是安装不上也不影响后续,如果有知道到的可以,一起交流)
- python机器人工具箱
% git clone https://github.com/petercorke/robotics-toolbox-python.git
% cd robotics-toolbox-python
% pip install -e .
1.创建机械臂模型
步骤一:在模型库里面创建一个名为’MYROBOT.py’的文件,其中MYROBOT是机器人的描述性名称,它是一个有效的文件名和Python类名。
E:\pyproject\defecate\robotics-toolbox-python\roboticstoolbox\models\DH\MYROBOT.py这是我的地址
步骤二:加载库
from math import pi
import numpy as np
from roboticstoolbox import DHRobot, RevoluteDH, PrismaticDH, RevoluteMDH, PrismaticMDH
最后一行很重要,它定义了所有可能的类的可能。不会全部使用它们,为了保持整洁,你可以删除那些你不用的。这就是他们的目的;
‘RevoluteDH’用于使用标准DH参数的转动关节
‘PrismaticDH’用于使用标准DH参数的移动关节
‘RevoluteMDH’用于使用MDH参数的转动关节
‘PrismaticMDH’用于使用MDH参数的移动关节
步骤三:描述机械臂,记录下使用的单位、DH参数以及对模型来源的引用。
class MYROBOT(DHRobot):
"""
Create model of MYROBOT manipulator
KR5()是一个用标准DH约定对Kuka KR5机器人建模并描述其运动学特征的类。
.
定义的关节构型为:
qk1,公称工作位置1
qk2,公称工作位置2
qk3,公称工作位置3.
:notes:
.使用国际计量单位米
.包括一个11.5厘米的工具在z方向
.
:references:
.
.
.
"""
步骤四:在’init_’,通过创建适当的链接类的实例来定义一组链接变量
def __init__(self):
deg = pi/180
L0 = RevoluteDH(
d=0, # link length (Dennavit-Hartenberg notation)
a=0, # link offset (Dennavit-Hartenberg notation)
alpha=pi/2, # link twist (Dennavit-Hartenberg notation)
I=[0, 0.35, 0, 0, 0, 0], # inertia tensor of link with respect to
# center of mass I = [L_xx, L_yy, L_zz,
# L_xy, L_yz, L_xz]
r=[0, 0, 0], # distance of ith origin to center of mass [x,y,z]
# in link reference frame
m=0, # mass of link
Jm=200e-6, # actuator inertia
G=-62.6111, # gear ratio
B=1.48e-3, # actuator viscous friction coefficient (measured
# at the motor)