Unity Robotics Visualizations工具包支持可视化和调试机器人模拟内的状态,能让Unity成为一个多合一的ROS(Robot Operating System,机器人操作系统)模拟和可视化工具。
在开发机器人时,开发者最常面临的挑战之一便是如何查看运行中的系统。在一个如蛛网般复杂的系统中,如果有某个组件无法正常工作,找到那个出问题的部分将会是一件让人头疼的事。究竟是组件A生成了坏数据,还是组件B处理时出了错?这时,将系统中流动的数据可视化地表现出来对问题的解决非常关键。
针对这个问题,我们在今天高兴地宣布Unity Robotics的新功能上线:Robotics Visualizations Package是一个用于显示和定制ROS信息可视化的软件包。
在Unity Robotics团队的辛勤工作下,Unity目前已经发布了包括Pick-and-Place、Object Pose Estimation在内的数个机器人示例项目。最新发布的Nav2-SLAM示例项目展示了Unity如何模拟一个自主机器人在未知空间中的导航和地图绘制。
Robotics Visualizations Package正是以这些项目为基础建立的,它支持以多种可视化图像来展示常见的ROS信息,如形状、姿态、点云、图像、各类传感器等等。包原生支持ROS变换树(transform tree),并允许在运行时启用、禁用、定制任意主题的ROS可视化图像。
用Robotics Visualizations Package可视化机器人项目的流程非常简单:
Transform代表了机器人系统在坐标系中的相互关系。模拟中的所有数据都是在不同的坐标系下生成的,激光雷达有激光雷达的坐标系,摄像机有摄像机的坐标系,地图有地图的坐标系。为了整合所有这些源头不同的数据,我们需要有一个共同的参考系,而Transform可以统合所有坐标系。脱离于3D坐标的传感器和算法几乎无法进行调试。Robotics Visualizations Package支持在Unity场景和资源运行时实时显示数据,并能在模拟和真实数据之间无缝切换。
机器人绘图也是一项棘手的任务,地图很可能会出现断裂,让机器人偏离原路径。测距仪是否经过了详尽的调试?还是说优化后SLAM算法在崩溃后把地图切成了两半?Unity Robotics Visualizations Package支持同时显示占用栅格、Transform、定位和激光雷达点云,让用户能够直观地看到算法出错的位置。
Robotics Visualizations Package支持常见的ROS信息类型,包括Transform、占用栅格、3D点云、标记、激光扫描、图片(jpeg、png及未压缩格式)等,也支持自定义的数据类型。
Robotics Visualizations Package同样支持创建自定义的可视化图像,软件的强大工具可绘制出任何内容,也支持定制自带的可视化图像。包的主要功能如下:
Drawing3d类可用于在3D空间中绘制任意纹理/颜色的线条、形状、网格和标签,它可用来在预测位置上绘制某物体的幻影、物体的运动轨迹,或在轨迹附近用线段来表示误差。
PointCloudDrawing是一个由GPU优化的点云渲染器,它可以迅速渲染多达一千万个呈现为Billboard(公告牌)的点,并且每个点都能有自己的尺寸和颜色。该渲染器可用来展示3D扫描或深度图像等体积化数据。
HistoryDrawingVisualizer模板可用于展示历史数据走势、3D运动轨迹等,其会记录某一主题下一定时期内的历史信息,记录时长可以调整。这些历史信息可用于分析和展示。
当然,所有这些功能的背后都是强大且易用的Unity引擎。Unity支持AR和VR、Shader Graph着色器编写、计算着色器、云端模拟等等。
看到开发者们使用Robotics Visualizations Package做出了各色各样的成果,我们非常高兴!
如果你也想要上手Robotics Visualizations Package,请在我们新的Nav2-SLAM教程中了解软件包的使用。
除了Robotics Visualizations Package之外,我们还在不断开发的其它机器人软件包、打造机器人生态,努力让Unity成为机器人开发的新选择。请访问GitHub的Unity Robotics Hub来了解其它机器人项目。
并且,不要忘了前往Robotics Forum论坛,或在unity-robotics@unity3d.com向我们发送邮件,与Unity分享你的宝贵建议。