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

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第三方库


热门话题
java如何在Microsoft Office Word或Excel文档中查找突出显示的文本   Java反射:获取方法返回参数的类型   java根据从字符串解析的日期对ArrayList<String>进行排序   不带IDE JSONObject的json JAVA   Selenium检查属性是否包含java中字符串的一部分   java Hibernate在使用@PostConstruct时找不到绑定到线程的会话   java频繁访问对象属性会带来成本吗?   java如何使用spring boot从json更新数据   Android Studio中的java适当边距布局   java spring引导无法在spring测试类中注入spring服务   java在插入排序中删除重复项   如何在JAVA中重写异常类方法   java Guava缓存内存泄漏   多线程处理三个必须并行执行的任务completableFuture,如果其中任何一个在java中引发异常,则全部取消