采集设备数据
平台提供多模式数据采集能力,以支持不同场景的数据获取需求。包括:
- 手动采集
- 自由指定采集时间范围与目标路径
- 适用于:问题排查、定向数据抓取、临时数据分析
- 规则引擎驱动采集
- 实时监测设备消息流,动态触发采集
- 适用于:事件码、阈值告警、异常监测,实现无人值守自动化采集
- 可视化联动采集
- 结合实时图像与三维界面,即时启停采集
- 适用于:场景联动采集,灵活控制采集时间
手动采集
前提条件:已完成设备注册与启用,且将设备添加到项目中,详见添加设备
手动采集是指从设备上采集已存在文件,例如:日志文件、图片文件、配置文件等。
-
在项目设备页面,选择设备,点击采集数据
-
选择需要采集的时间范围、采集路径、任务与记录名称,开始采集
- 采集时间范围
- 时间判断依据:文件的创建时间与最后修改时间
- 注:部分文件系统可能无法获取文件创建时间,仅根据最后修改时间判断文件是否在时间范围内
- 时间范围采集路径
- 输入需要根据时间范围进行采集的绝对文件路径,如:
/home/bag/
,系统将采集该路径下(包括子文件夹)所有符合时间范围的文件 - 建议在组织设备配置中,将该路径设置为默认采集路径
collect_dirs
,以便后续无需手动输入
- 输入需要根据时间范围进行采集的绝对文件路径,如:
- 具体附加文件路径
- 输入需要额外采集的绝对文件路径(文件夹/文件),与时间范围无关,如:
/home/map/
、/home/device/config.yaml
,系统将采集整个文件夹中的文件或指定的文件 - 建议在组织设备配置中,将该路径设置为默认采集路径
additional_files
,以便后续无需手动输入
- 输入需要额外采集的绝对文件路径(文件夹/文件),与时间范围无关,如:
- 任务&记录名称
- 任务名称:用于标识该次采集任务
- 记录名称:用于标识该次采集将数据保存到的记录
-
采集完成后,数据将自动上传至记录中
规则引擎驱动采集
前提条件:已完成设备注册与启用,且将设备添加到项目中,详见添加设备
系统会根据设备所属项目中的规则,监听设备消息流,采集触发规则时间点前后一段时间的数据,如:
- 监听话题(topic)采集:实时监听设备 topic,当消息触发规则时,自动上传数据
- 监听 bag/mcap 采集:当 bag/mcap 写入完成时,对文件内容进行规则匹配,自动上传数据
数据格式
详见特定数据格式
配置监听/采集目录
仅组织管理员可配置
在组织管理-设备-设备配置中,输入需要监听与采集的目录,即:listen_dirs
、collect_dirs
。如需监听 topic 进行采集,则增加定义 topics
。详见设备配置
监听 topic 采集
以监听设备端 topic /error_status
为例,当该 topic 的 data
字段中出现事件码 1001 ~ 1005
时,自动采集该时间点前 5 分钟后 1 分钟的数据,保存到记录。消息内容如下:
-
在设备端安装并启用话题监听器(coListener):
-
下载对应版本的 coListener 安装包
-
安装 coListener,如:
sudo dpkg -i ***.deb
其中
***.deb
需替换为对应的 deb 包名 -
source ROS 环境变量,如:
source /opt/ros/$ROS_DISTRO/setup.bash
其中,
$ROS_DISTRO
需替换为对应的 ROS 版本名,如noetic
-
启用 coListener ROS1:
roslaunch colistener colistener.launch
ROS2:
ros2 launch colistener colistener.launch.xml
-
-
在项目中添加并启用规则
-
在项目的「数采&定位」页面,添加规则
-
输入事件检测信息
-
关注的话题:选择需要监听的 topic
/error_status
-
事件码表:上传符合格式的 csv/json 文件,用于判断 topic 消息中是否包含
code
列中的内容,如下图: -
规则触发条件:mag.data 包含事件码表 code 列任一行的值
-
若 data 字段为数组,则可切换为「代码模式」,输入: msg.data.exists(x, x.code.contains(scope.code)),示例消息如下:
{
"events_count": 3,
"events_info": [{
"code": "10031",
"msg": "camera disconnected",
"level": "p1"
},
{
"code": "20256",
"msg": "navigate to workstation failed",
"level": "p2"
},
{
"code": "30221",
"msg": "low battery",
"level": "p1"
}
]
}
-
上述信息表示:监听 topic
/error_status
,判断其字段data
的消息中,是否包含关键词1001 ~ 1005
-
-
采集数据
- 时间范围:
- 采集
collect_dirs
中,在触发时间点前 5 分钟,后 1 分钟的文件 - 时间判断依据:根据文件内容获取起止时间
- 采集
- 记录:用于标识每次采集将数据保存到的记录
- 如:
code: {scope.code}-name: {scope.name}
,当触发了事件码1002
时,本次采集的数据将生成一条名为「code:1002-name:目标点不可达!请协助」的记录
- 如:
- 时间范围:
-
关键时刻定位
- 当数据上传到记录后,自动在触发时间点「创建一刻」,标记关键时刻,便于后续分析问题
-
-
查看采集结果 当设备端监听的 topic 发出的消息触发规则时,将自动上传数据到记录中
监听 bag/mcap 采集
同监听 topic 采集的 2-3 步骤,无需使用 coListener。
注意:仅支持监听完整的 bag/mcap,暂不支持监听与采集 bag.active。如需采集完整的 bag 文件,可将采集数据的时间范围设置为「采集后 n 分钟」,等待 bag 写入完成后进行采集。