剧情简介:这个工具箱为Python带来了机器人特有的功能,并充分利用了Python的可移植性、普遍性和支持的优势,以及线性代数(numpy, scipy)、图形(matplotlib, three)的开源生态系统的能力。交互式开发(jupyter,jupyterlab, mybinder.org)和文档(sphinx)。工具箱提供了工具,代表串行连接运动学和动力学的操纵者,您可以轻松地创建自己的Denavit-Hartenberg形式,导入URDF文件,或使用超过30提供模型从Franka-Emika著名当代机器人,Kinova,万能机器人,反思以及古典机器人如彪马560年斯坦福大学的手臂。这个工具箱还将支持移动机器人的功能,包括机器人运动模型(独轮车、自行车)、路径规划算法(bug、距离变换、D*、PRM)、运动动态规划(lattice、RRT)、定位(EKF、粒子滤波)地图构建(EKF)和同步定位和映射(EKF)。工具箱提供了:成熟的代码,并为相同算法的其他实现提供一个比较点;例程通常以简单易懂的方式编写,便于理解,可能会牺牲计算效率;源代码,可以读为学习和教学与MATLAB的机器人工具箱向后兼容这个工具箱利用了Python的空间数学工具箱来提供对诸如SO(n)和SE(n)矩阵、四元数、扭转和空间向量等数据类型的支持。

第一步:安装这个包,通过pycharm安装,先建立一个工程,使用虚拟环境。然后在teminal里面通过pip3 install roboticstoolbox-python进行安装。

python 工业机器人识别 python机器人工具箱_官网

第二步:引用库并建立一个机器人变量,并进行打印和观察数据结构。


在Python console输入以下命令,查看建立的机器人的DH参数模型。右侧可以看到这个机器人变量的里面的具体内容。 import roboticstoolbox as rtb robot = rtb.models.DH.Panda() print(robot)


python 工业机器人识别 python机器人工具箱_Python_02

 

第三步:机器人的正运动学函数


输入机器人正向运动学并查看结果及相关变量结构

T = robot.fkine(robot.qz)  # forward kinematics
print(T)


python 工业机器人识别 python机器人工具箱_python 工业机器人识别_03

第四步:机器人的反运动学计算

我们可以很容易地解逆运动学。我们首先选择一个SE(3)位姿定义在位置和方向(末端执行器z轴向下(A=-Z)和手指方向平行于Y轴(0=+Y)。

官网上给第例子是下面的,不过ikine_unc函数好像没有,试了其他的也没有弄出来。


from spatialmath import SE3

T = SE3(0.8, 0.2, 0.1) * SE3.OA([0, 1, 0], [0, 0, -1])
sol = robot.ikine_unc(T)         # solve IK
print(sol.q)                    # display joint angles

	[-0.01044    7.876    1.557    -6.81    1.571    4.686   0.5169]

print(robot.fkine(sol.q))    # FK shows that desired end-effector pose was achieved

	Out[35]: 
	SE3:┏                                           ┓
		┃-1         -4e-08      0.000521   0.615    ┃
		┃ 2.79e-08   1          0.00013    0.154    ┃
		┃-0.000521   0.00013   -1          0.105    ┃
		┃ 0          0          0          1        ┃
		┗                                           ┛


python 工业机器人识别 python机器人工具箱_Python_04

第五步:绘制三维数据的机器人末端移动。

请注意,因为这个机器人是冗余的,我们没有任何控制手臂的姿势除了endeffector pose,即我们控制不了手肘。我们可以动画一个路径从垂直的qz配置到这个拾取的场景


q_pickup=[-0.01044,7.876,1.557,-6.81,1.571,4.686,0.5169]#官网的例子里面没有定义这个变量,我自己选了第四步的值。
qt = rtb.trajectory.jtraj(robot.qz, q_pickup, 50)
robot.plot(qt.q, movie='panda1.gif')


python 工业机器人识别 python机器人工具箱_3D_05

第六步:绘制一个动态实体机器人

它使用默认的matplotlib后端。灰色箭头表示关节轴,彩色边框表示末端姿势。现在让我们加载同一机器人的URDF模型。运动学表示不再基于DenavitHartenberg参数,它现在是一个刚体树。


robot = rtb.models.URDF.Panda()  # load URDF version of the Panda
print(robot)    # display the model


python 工业机器人识别 python机器人工具箱_3D_06

符号@表示该链接作为末端执行器,即riqbody树中的叶节点。我们可以在基于浏览器的3d模拟环境中实例化我们的机器人。


env = rtb.backends.Swift()  # instantiate 3D browser-based visualizer
env.launch()                # activate it
env.add(robot)              # add robot to the 3D scene
执行下面的for循环,机器人就会动起来。
for qk in qt.q:             # for each joint configuration on trajectory
      robot.q = qk          # update the robot state
      env.step()            # update visualization


 

python 工业机器人识别 python机器人工具箱_python 工业机器人识别_07

python 工业机器人识别 python机器人工具箱_python 工业机器人识别_08

总结:GitHub上还有其他的例子可以自己尝试。https://github.com/petercorke/robotics-toolbox-python.git

petercorke就是编制matlab机器人工具箱的

python 工业机器人识别 python机器人工具箱_官网_09