实时数据
通过 Foxglove WebSocket、Rosbridge 和 Velodyne Lidar 连接来连接实时数据源。您还可以通过 URL 加载远程数据文件 。
支持的格式
| 支持的格式 | 配置选项 | |
|---|---|---|
| Foxglove WebSocket | WebSocket URL | |
| Rosbridge | WebSocket URL | |
| ROS 1 | ROS 1(仅限桌面应用程序) | ROS_MASTER_URI 和 ROS_HOSTNAME |
| Velodyne Lidar | Velodyne(仅限桌面应用程序) | UDP 端口 |
| 远程文件 | 需要 CORS 设置 |
限制
连接到实时机器人堆栈时,每个 连接将具有不同的功能。
| Foxglove WebSocket(推荐) | Rosbridge | ROS 1 | |
|---|---|---|---|
| 流式传输 ROS 1 数据 | ✓ | ✓ | ✓ |
| 流式传输 ROS 2 数据 | ✓ | ✓ | |
| 流式传输自定义数据 | ✓ | ||
| 自定义消息架构 | ✓ | ✓ | ✓ |
| 发布消息 | ✓(ROS 1、ROS 2、JSON) | ✓ | ✓ |
| 调用服务 | ✓ | ✓ | |
| 调用动作 | |||
| 读取和设置参数 | ✓ | 参见讨论 | ✓ |
跨域资源共享(CORS)设置
要加载远程数据文件,您必须将文件托管在支持跨域资源共享(CORS)并接受范围请求的服务器或云提供商中。
在将远程数据加载到 Foxglove 进行回放和分析时,我们建议将文件托管在 Amazon Simple Storage Service (S3)、Google Cloud Storage (GCS) 或 Azure Storage 等云提供商中。您也可以在自己的服务器上托管文件,但设置支持 跨域资源共享(CORS) 和 范围请求 可能会很困难且耗时。
如果您的数据是敏感的,请生成并使用签名 URL – 确保您直接指向资源,因为重定向将无法与 CORS 一起使用:
- S3 – 使用预签名 URL 共享对象
- GCS – 签名 URL
- Azure Storage – 使用共享访问签名 (SAS) 授予对 Azure 存储资源的有限访问权限
此签名 URL 将在有限的时间内有效。您可以设置服务器仅为经过身份验证的用户签署 URL。
最后,设置您的 CORS 配置。请查看以下 S3 存储桶的 Terraform 配置示例(文档):
cors_rule {
allowed_methods = ["GET", "HEAD", "OPTIONS"]
allowed_origins = ["https://app.foxglove.dev"]
allowed_headers = ["*"]
expose_headers = ["ETag", "Content-Type", "Accept-Ranges", "Content-Length"]
}
以及 GCS 存储桶的 Terraform 配置(文档):
cors {
origin = ["https://app.foxglove.dev"]
method = ["GET", "HEAD", "OPTIONS"]
response_header = ["ETag", "Content-Type", "Accept-Ranges", "Content-Length"]
}