我在理解ROS中的远程操作概念时遇到了一些困难,希望有人能解决一些问题。
我正在尝试使用HTC Vive设备控制Baxter机器人(在仿真中)。我有一个节点(发布者),可以从控制器成功提取PoseStamped数据(包含参照灯塔基站的姿态数据),并将其发布在左右控制器的单独主题上。
因此,现在我希望创建一个从控制器接收姿势数据并将其转换为机器人姿势的订户。我很困惑的是贴图...阅读了有关百特和机器人技术转换的文档后,我真的不了解如何将人体姿势映射到百特。
我知道我需要使用IK服务,该服务本质上计算实现姿势所需的坐标(给定末端执行器的所需位置)。但这不只是从将控制器数据发布到ik_service的节点中插入PoseStamped数据简单吗?
就像人体和机器人的解剖结构一样,因此我不确定是否错过了重要的一步。
看到其他人尝试做同样事情的示例代码,我看到一些人创建了一个“基本” /“人”姿势,其中硬代码协调肢体模仿人的姿势。这本质上是我所需要的吗?
对不起,如果我的问题很广泛,但是我一直难以找到我能理解的解释...非常感谢您的见解!
答案 0 :(得分:1)
您可能会发现我以前的学生在here上的著作提供了很多信息。它显示了两种方法:
直接关节角度映射(例如,如果人类的手臂成直角,那么机器人也应该使手臂成直角)。
一种基于人的手部位置来控制机器人末端执行器的IK方法。
我知道我需要使用IK服务,该服务实质上会计算 取得姿势所需的坐标(给定所需的位置 末端执行器)。但这并不只是简单地插入 从节点发布控制器数据到节点的PoseStamped数据 ik_service对吗?
是的,确实,这是一个相当复杂的过程!在这两种情况下,我们都利用kinects api访问人的关节角度值和手的位置。您可以在此处阅读有关Microsoft研究如何实现人体骨骼跟踪算法的信息:
motion mapping using a kinect sensor with a pr2
我对Vive设备不熟悉。您应该看看它是否提供了用于访问骨架跟踪信息的类似api,因为反向工程Microsoft的算法将具有挑战性。