python的3d转换
pytransform3d的Python项目详细描述
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()
测试
您可以使用nosetests在根目录下运行此项目的测试:
nosetests
覆盖率报告将位于cover/index.html
。
请注意,必须安装nose
才能运行测试,安装coverage
才能获得
代码覆盖率报告。
对于与
桂。
贡献
如果您想报告bug,请使用github上的问题跟踪器。 如果您想为pytransform3d做出贡献,只需打开一个问题或 合并请求。