原始机器人运动学和碰撞检查。

acrobotics的Python项目详细描述


Build StatuscodecovPyPI version

肢端肥大症

我们的目标是快速测试运动规划思想,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)

animation

更多详细信息

在示例文件夹中的jupyter笔记本中有更深入的解释。在

大多数有用的东西都可以导入,类似于普通的numpy用法:

importacroboticsasab

对于更高级的类,如Robot要创建自定义robot,必须显式导入它们:

fromacrobotics.robotimportRobotfromacrobotics.linkimportDHLink,JointType,Link

还有动作规划?在

该软件包实现了一个基于基本抽样和基于优化的计划器。关于如何使用它们的示例可以在test文件夹中找到,分别位于test_planning_sampling_based.py和{a10}。但是,要使其正常工作,必须提供大量的设置类型。这些都是在一次主要的重构之后出现的,目的是使代码更易于维护,但是我们在设置部门有点过分了。。。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaEclipseMars没有保存首选项   java梯度同步失败:原因:启动失败:   java如何从嵌套的JSON获取数据?   java如何判断可观察对象中的任何对象满足一个条件?   java将字符串转换为保持相同值的byte[]数组   java有没有办法绕过AuditingEntityListener为测试设置数据?   从/usr/share/java中解析linux JAR依赖关系   安卓 My java函数抛出nullpointerexception?   java Gradle使用正确版本的依赖项   JBoss和Java6中带注释的WebService中的web服务ClassCastException   java如何修复codename one中的简单逻辑错误?   java如何迭代矩阵的索引?   java如何在JPanel不可见时将其保存为图像?   java HashMap如何在Kotlin中实现MutableMap接口?   javascript如何在单击后加载特定片段?   EclipseJava为纳什均衡获取所有玩家/策略组合   JavaSpring:Web服务REST在JSON上产生双反斜杠   java为什么ServletContext#getRealPath(“/”)返回相对路径?   java当我的游戏应该重新启动时,我应该如何处理重置SurfaceView和线程?