petercorke / robotics-toolbox-python简介

 

剧情简介:这个工具箱为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 console输入以下命令,查看建立的机器人的DH参数模型。右侧可以看到这个机器人变量的里面的具体内容。
import roboticstoolbox as rtb
robot = rtb.models.DH.Panda()
print(robot)

 

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

输入机器人正向运动学并查看结果及相关变量结构
T = robot.fkine(robot.qz)  # forward kinematics
print(T)

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

我们可以很容易地解逆运动学。我们首先选择一个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        ┃
		┗                                           ┛

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

请注意,因为这个机器人是冗余的,我们没有任何控制手臂的姿势除了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')

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

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

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

符号@表示该链接作为末端执行器,即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

 

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

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

  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leecheni

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值