peekabot—3D 机器人可视化
根据 peekabot 项目的网站
“peekabot 是一个分布式的实时 3D 可视化工具,专为机器人研究人员和开发人员设计,使用 C++ 编写。其目的是简化机器人专家日常面临的可视化需求——例如,将可视化用作调试辅助工具或制作演示文稿的花哨幻灯片。
我们的目标是提供一个灵活的工具,可以满足机器人专家绝大多数的可视化需求,而且易于使用。典型的应用场景包括可视化模拟、来自真实机器人的数据展示以及远程部署的机器人监控。
...为了实现远程数据可视化,peekabot 使用了分布式的客户端-服务器架构。所有关于网络的复杂细节都由客户端库处理,供您的程序使用。”
peekabot 的底层动作控制允许进行一些非常高级的脚本编写,例如此处显示的对象路径。
一些 Blender 创建的模型允许使用一些时髦的活动对象,这些对象可在网络上免费获得。
安装
访问 网站,并获取最新的 tarball。关于库的要求,文档提供了以下有用的说明(注意,在下面的列表中:*仅在仅构建客户端 API 时不需要;**仅在构建单元测试时需要,默认情况下禁用)
- 较新版本的 GCC。
- Boost 1.34.0+ (Boost.Thread, Boost.DateTime, Boost.Filesystem*, Boost.ProgramOptions* 和 Boost.Test**)。
- Xerces-C++ 2.7.0+*。
- FLTK 1.1.6+*。
- OpenGL*。
- GLU*。
- libpng*。
我还必须获取这些开发文件:libxerces-c2-dev 和 libfltk1.1-dev。下载 tarball 后,在保存它的任何位置打开终端并输入以下命令
$ tar xvzpf peekabot-x.y.z.tar.gz $ cd peekabot-x.y.z $ ./configure --prefix=/usr $ make $ sudo make install
假设一切顺利,当编译完成后,您可以使用以下命令运行程序
$ peekabot
在我们开始之前,我必须警告您,我们只介绍了等式的一半。peekabot 由两个关键部分组成:服务器及其客户端。在初始构建过程之后,您将拥有服务器本身。服务器是主 GUI 屏幕,您将在其中测试客户端程序并与之交互。客户端通常是独立的程序,它们在遵循自己的编码结构的同时与 peekabot 服务器通信。虽然这对于新用户(包括我)来说可能令人生畏,但它确实使系统非常开放、强大和灵活。
好的,我假设您已经打开了服务器窗口,并准备好体验 peekabot。让我们看一下一个工作示例程序,并在它运行时探索 GUI。
在 peekabot 源代码目录中打开另一个终端,并在 examples 文件夹下查找。在这里,您将看到 bo-slam、results 和 skeleton 文件夹。进入其中任何一个文件夹,然后运行命令 make。在 make 编译了每个示例的代码后,将在同一目录中提供一个新程序。以 bo-slam 为例,以下是要输入的终端命令(我们假设您在 peekabot 主文件夹中打开一个文件夹)
$ cd examples $ cd bo-slam $ make $ ./bo-slam
单独运行时,什么都不会发生,并且您将在控制台中收到一堆错误消息。但是,当与 peekabot 服务器一起启动时,将会出现一个机器人和一堆塔筒,塔筒将自己移动到世界中的位置,机器人沿着预编程的路径绕过每个塔筒。好的,现在我们已经有东西在运行了,让我们探索 GUI。
主窗口包含您将使用的场景,以及一个视角可调的摄像头。鼠标左键将平移摄像头,右键将旋转摄像头。要放大和缩小,请使用鼠标中键或鼠标滚轮。如果您需要摄像头控件更灵敏或不那么灵敏,Shift 和 Ctrl 键将相应地调节灵敏度(例如,在极端特写或从很远的地方看时非常有用)。
右侧是树状浏览器,其中包含所有活动对象、场景元素等等。您可以通过单击鼠标左键选择视图中的对象,并且可以像任何文件管理器一样选择性地组合多个对象,使用 Ctrl 键切换选择,使用 Shift 键添加到选择。
我在这里只介绍了这个程序的基本操作,因为您需要进行一些实际编码才能深入了解这个程序的细节。坦率地说,我不擅长编码!如果您有兴趣了解更多信息,请查看基本文档(手册:www.peekabot.org/doc/latest/manual_the_basics.html;模型:sourceforge.net/apps/mediawiki/peekabot/index.php?title=Model_repository)。在那里,您将找到帮助您入门的编码,以及其结构等等。
最终,这看起来是一个功能强大的机器人可视化项目,尽管它相当令人生畏。尽管从其主要基于编码的界面来看,学习曲线相对困难,但可能正是这种交互方式将使其具有持久性。没有 GUI 设计的限制来阻碍机械原理,对于那些想要在低级别上处理机械设计而又没有为了适应初学者而经常施加的限制的人来说,这无疑是天赐之物。
peekabot—3D 机器人可视化 (www.peekabot.org)