petercorkerobotics-toolbox-python简介
剧情简介:这个⼯具箱为Python带来了机器⼈特有的功能,并充分利⽤了Python的可移植性、普遍性和⽀持的优势,以及线性代数(numpy, scipy)、图形(matplotlib, three)的开源⽣态系统的能⼒。交互式开发(jupyter,jupyterlab, )和⽂档(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 = dels.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 = ajectory.jtraj(robot.qz, q_pickup, 50)
robot.plot(qt.q, movie='panda1.gif')
第六步:绘制⼀个动态实体机器⼈
它使⽤默认的matplotlib后端。灰⾊箭头表⽰关节轴,彩⾊边框表⽰末端姿势。现在让我们加载同⼀机器⼈的URDF模型。运动学表⽰不再基于DenavitHartenberg参数,它现在是⼀个刚体树。
robot = dels.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循环,机器⼈就会动起来。
tool工具箱for qk in qt.q: # for each joint configuration on trajectory
robot.q = qk # update the robot state
env.step() # update visualization
就是编制matlab机器⼈⼯具箱的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论