原始机器人运动学和碰撞检查。
acrobotics的Python项目详细描述
肢端肥大症
我们的目标是快速测试运动规划思想,Python似乎是快速原型设计的一种很好的语言。机器人仿真和相关任务有很多很好的库,但是安装这些库可能很麻烦,而且非常依赖于操作系统和python版本。 缺点是我必须自己写很多东西。我不确定这样做是否有用。但这会很有趣,我会学到很多东西。在
该库提供机器人运动学和串行运动链的碰撞检查。其思想是,这个库可以很容易地被另一个提供相同功能的库交换。在
acro部分来自比利时库鲁汶的一个机器人研究小组。在
安装
pip install acrobotics
还是为了发展
^{pr2}$暂时不支持Windows,因为不支持python-fcl。:( 将来我可能会切换到pybullet。同时,使用windows subsystem for linux。MacOS尚未测试。在
开始获取
(下面的示例代码:examples/getting_started.py)
这个图书馆有三大诀窍。在
机器人运动学
T = robot.fk(joint_values)
IKSolution = robot.ik(T)
正向运动学是在一个通用的RobotKinematics
类中实现的。在
importacroboticsasabrobot=ab.Kuka()joint_values=[0.1,0.2,0.3,0.4,0.5,0.6]T_fk=robot.fk(joint_values)
解析逆运动学仅适用于特定机器人:
ik_solution=robot.ik(T_fk)# T_fk is a numpy 4x4 arrayprint(f"Inverse kinematics successful? {ik_solution.success}")forqinik_solution.solutions:print(q)
Inverse kinematics successful? True [0.1 -1.0949727 2.84159265 2.87778828 0.79803563 -1.99992985][0.1 -1.0949727 2.84159265 -0.26380438 -0.79803563 1.1416628 ][0.1 0.2 0.3 0.4 0.5 0.6][0.1 0.2 0.3 -2.74159265 -0.5 -2.54159265]
碰撞检查
bool = robot.is_in_collision(joint_values, planning_scene)
首先创建一个规划场景,其中包含机器人可以碰撞的障碍物。在
fromacrolib.geometryimporttranslationtable=ab.Box(2,2,0.1)T_table=translation(0,0,-0.2)obstacle=ab.Box(0.2,0.2,1.5)T_obs=translation(0,0.5,0.55)scene=ab.Scene([table,obstacle],[T_table,T_obs])
然后为要检查与规划场景的碰撞的机器人配置列表。在
importnumpyasnpq_start=np.array([0.5,1.5,-0.3,0,0,0])q_goal=np.array([2.5,1.5,0.3,0,0,0])q_path=np.linspace(q_start,q_goal,10)
然后你可以:
print([robot.is_in_collision(q,scene)forqinq_path])
[False, False, False, False, True, True, True, True, False, False]
可视化
robot.plot(axes_handle, joint_values)
robot.animate_path(figure_handle, axes_handle, joint_path)
fromacrolib.plottingimportget_default_axes3dfig,ax=get_default_axes3d()scene.plot(ax,c="green")robot.animate_path(fig,ax,q_path)
更多详细信息
在示例文件夹中的jupyter笔记本中有更深入的解释。在
大多数有用的东西都可以导入,类似于普通的numpy用法:
importacroboticsasab
对于更高级的类,如Robot
要创建自定义robot,必须显式导入它们:
fromacrobotics.robotimportRobotfromacrobotics.linkimportDHLink,JointType,Link
还有动作规划?在
该软件包实现了一个基于基本抽样和基于优化的计划器。关于如何使用它们的示例可以在test文件夹中找到,分别位于test_planning_sampling_based.py和{a10}。但是,要使其正常工作,必须提供大量的设置类型。这些都是在一次主要的重构之后出现的,目的是使代码更易于维护,但是我们在设置部门有点过分了。。。在
- 项目
标签: