本节将引导您完成 C++示例代码,使您能够在 RViz 中移动和操作机器人手臂时可视化机器人自身与世界之间的碰撞接触点。
运行代码
直接从 moveit_tutorials 运行代码的启动文件:
您现在应该看到熊猫机器人和 2 个可拖动的交互标记。
课程
本教程的代码主要在 InteractiveRobot
类中,我们将在下面进行讲解。 InteractiveRobot
类维护一个 RobotModel
、一个 RobotState
以及关于“世界”的信息(在本例中,“世界”是一个黄色的立方体)。
InteractiveRobot
类使用 IMarker
类来维护一个交互式标记。本教程不涉及 IMarker 类(imarker.cpp)的实现,但大部分代码是从 basic_controls 教程中复制的,如果你感兴趣,可以在那里阅读更多关于交互式标记的信息。
互动
在 RViz 中,您将看到两组红/绿/蓝交互标记箭头。用鼠标拖动这些箭头。移动右臂,使其与左臂接触。您将看到标记接触点的品红色球体。如果没有看到品红色球体,请确保已按照上述说明添加了带有 interactive_robot_marray 主题的 MarkerArray 显示。还要确保将 RobotAlpha 设置为 0.3(或小于 1 的其他值),以便机器人是透明的,可以看到球体。移动右臂,使其与黄色立方体接触(您也可以移动黄色立方体)。您将看到标记接触点的品红色球体。
相关代码
整个代码可以在 moveit_tutorials GitHub 项目中看到。使用的库可以在这里找到。为了使本教程专注于碰撞接触,许多理解此演示工作原理所需的信息被省略了。要完全理解此演示,强烈建议您通读源代码。https://github.com/moveit/moveit2_tutorials/tree/main/doc/examples/visualizing_collisions
#include <ros/ros.h> // ROS头文件
#include "interactivity/interactive_robot