python的3d转换

pytransform3d的Python项目详细描述


Travis StatusCircleCI Status

Pytransform3D

用于三维转换的python库。

这个库关注可读性和调试,而不是计算 效率。 如果您想从 库可以轻松地提取相关代码并进一步实现 以你选择的语言高效地表达。

图书馆与 scientific Python ecosystem 其核心库有numpy、scipy和matplotlib。 我们依赖于Numpy的线性代数和 Matplotlib提供绘图功能。 Scipy用于 从现有变换的图表计算新的变换。

由专有和开源组成的异构软件系统 当我们处理转换时,软件通常是组合的。 例如,假设您要传输由人类演示的轨迹 给机器人。人的轨迹可以用rgb-d相机测量,融合 与IMU传感器相连,然后转换为 反向运动学的关节角度。至少有三种不同的 可能都使用不同约定进行转换的软件系统。 有时甚至一个软件也使用多个约定。 以下方面对于粘合和调试至关重要 具有异质性且通常不相容的系统中的转换 软件:

  • 兼容性:异构软件之间的兼容性是一个难题 主题。例如,它可能涉及到专有和 开源软件或其他语言。
  • 约定:许多不同的约定用于转换 在三维空间里。这些都必须确定或指定。
  • 转换:我们需要在这些约定之间转换为 在不同系统之间通信转换。
  • 可视化:最后,应该可视化地验证转换 这应该尽可能简单。

Pytransform3D有助于解决这些问题。文件清楚 声明所有使用的约定,它在旋转之间进行转换 转换约定尽可能简单,它是紧密耦合的 使用matplotlib快速可视化(或动画化)转换 是用python编写的,几乎没有依赖关系。python被广泛采用 语言。它用于许多领域,支持 与其他软件的通信。

此外,Pytransform3D还提供…

  • 管理复杂转换链的transformmanager (导出到图形可视化为PNG时,还需要使用圆点)
  • transformeditor,允许以图形方式修改转换 (另外还需要pyqt4)
  • 能够从 URDF文件(另外需要 美化组4)

Pytransform3D用于各种领域,例如:

  • 指定机器人的运动
  • 从人类演示中学习机器人运动
  • 用于人体姿态估计的传感器融合

安装

使用pip安装软件包:

[sudo] pip[3] install [--user] pytransform3d

如果希望支持pydot,可以安装pytransform3d[all] 出口。确保安装graphviz(在ubuntu上:sudo apt install graphviz) 如果您想使用此功能。

…或者克隆存储库并转到主文件夹。

使用以下命令安装依赖项:

pip install -r requirements.txt

安装软件包时使用:

python setup.py install

文档

可以找到api文档 here

这个项目的文档可以在目录doc中找到。 请注意,当前需要sphinx 1.6.7来构建文档。 要构建文档,请运行,例如(在UNIX上):

cd doc
make html

html文档现在位于doc/build/html/index.html。 请注意,构建文档需要sphinx

示例

这只是一个简单的例子。您可以在子文件夹中找到更多示例 examples/

importnumpyasnpimportmatplotlib.pyplotaspltimportpytransform3d.rotationsasprimportpytransform3d.transformationsasptfrompytransform3d.transform_managerimportTransformManagerrandom_state=np.random.RandomState(0)ee2robot=pt.transform_from_pq(np.hstack((np.array([0.4,-0.3,0.5]),pr.random_quaternion(random_state))))cam2robot=pt.transform_from_pq(np.hstack((np.array([0.0,0.0,0.8]),pr.q_id)))object2cam=pt.transform_from(pr.matrix_from_euler_xyz(np.array([0.0,0.0,0.5])),np.array([0.5,0.1,0.1]))tm=TransformManager()tm.add_transform("end-effector","robot",ee2robot)tm.add_transform("camera","robot",cam2robot)tm.add_transform("object","camera",object2cam)ee2object=tm.get_transform("end-effector","object")ax=tm.plot_frames_in("robot",s=0.1)ax.set_xlim((-0.25,0.75))ax.set_ylim((-0.5,0.5))ax.set_zlim((0.0,1.0))plt.show()

output

测试

您可以使用nosetests在根目录下运行此项目的测试:

nosetests

覆盖率报告将位于cover/index.html。 请注意,必须安装nose才能运行测试,安装coverage才能获得 代码覆盖率报告。 对于与 桂。

贡献

如果您想报告bug,请使用github上的问题跟踪器。 如果您想为pytransform3d做出贡献,只需打开一个问题或 合并请求。

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

推荐PyPI第三方库


热门话题
带有外部属性文件的java prunsrv服务   java NoClassDefFoundError:org/hibernate/annotations/common/reflection/MetadataProvider   使用Android Studio进行java单元测试云数据存储   java如何使用Junit在SeleniumWebDriver中生成测试用例报告   java根据用户输入显示多个动画形状(JavaFX)   java枚举文件和Jar资源的统一机制   使用Spring OXM的java多封送器/解封器   java无法解析:com。谷歌。安卓exoplayer:exoplayer smoothstreaming:2.9.1   java如何创建迷你对话框(带图片)   java在eclipse中单击自定义菜单项时显示一个对话框   java使用Hibernate在插入前检查重复值   Jsoup只过滤掉从html到文本的一些标记   域在字符串Java Mail中包含非法字符   自定义Jackson反序列化程序中的java委托   java Graphql联合在扩展关系上返回null   java如果我有entitymanager,如何获取会话对象?