52Hertz_leona 2023-05-12 14:55 采纳率: 100%
浏览 8
已结题

怎么在Unity中用PoseStampedMsg消息类型?

你好,您在去年7月份的评论区里附上了这样的代码

using Path = RosMessageTypes.Geometry.PoseStampedMsg;

public class UnitySubscriberRGBD : MonoBehaviour
{
public GameObject axisCube;
// Start is called before the first frame update
private void Start()
{
ROSConnection.instance.Subscribe<Path>("/RGBD", ColorChange);
}
var c = RGBD.pose[RGBD.];

我想请问一下你是怎么让它读到using RosMessageTypes.Geometry.PoseStampedMsg;的呢,是不是需要build一下消息,在RosMessageTypes文件里面有build好的.cs什么的才可以,但是PoseStampedMsg是自带的,不知道怎么build,这步是怎么实现的呢?

  • 写回答

1条回答 默认 最新

  • 盒子里的加菲猫 2023-05-12 18:11
    关注

    您所提到的代码片段是用于在 Unity 中订阅 ROS 消息并对其进行处理的。在 ROS 中,消息的格式由 .msg 文件定义,在编译 ROS 节点时,这些 .msg 文件将被转换成相应的消息类型,通常保存在 ROS 节点的 msg 目录下。

    为了在 Unity 中处理 ROS 消息,需要使用一个名为 "ROS Bridge" 的中间件,该中间件可以在 ROS 和 Unity 之间进行通信。为了使 Unity 能够识别 ROS 消息类型,需要将 ROS 消息类型转换为 C# 类型,并在 Unity 代码中引用该类型。

    在使用 ROS Bridge 时,可以通过 ROS Bridge 提供的服务自动生成 C# 类型,也可以手动创建 C# 类型。手动创建 C# 类型需要先了解 ROS 消息类型的结构,然后在 Unity 中创建相应的 C# 类型。在创建 C# 类型时,可以根据 ROS 消息类型的字段名称和类型来定义 C# 类型中的属性和字段。

    对于您提到的 PoseStampedMsg 类型,它是 ROS 的标准消息类型之一,可以在 ROS 中直接使用。在使用 ROS Bridge 时,可以将其转换为 C# 类型并在 Unity 代码中使用。为了实现这一点,需要下载并安装 ROS Bridge,然后在 Unity 中导入 ROS Bridge 提供的 C# 库,并使用 using 语句引用 ROS 消息类型。例如,在您提供的代码中,通过 using Path = RosMessageTypes.Geometry.PoseStampedMsg 引用了 PoseStampedMsg 类型,并将其命名为 Path,可以在后续的代码中使用 Path 类型来处理 ROS 消息。

    需要注意的是,在使用 ROS Bridge 时,需要确保 ROS 和 Unity 中使用的消息类型相同,并且消息格式的字段名称和类型都一致,否则可能会出现数据解析错误的问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月25日
  • 已采纳回答 12月17日
  • 创建了问题 5月12日