为运输车队AMR机器人分配ID并实现时间折线图追踪求助
解决AMR机器人
movebytransporter函数调用记录与时间折线图实现方案 核心落地步骤
要实现目标,关键是在movebytransporter函数入口埋点记录时间与机器人标识,再通过数据聚合生成折线图,以下是具体操作:
1. 函数入口埋点记录数据
在movebytransporter函数的最开头,添加数据记录逻辑,确保每次调用都能捕获关键信息:
- 记录精确时间戳(毫秒级,保证时间维度准确性)
- 记录触发函数的机器人唯一ID(如
AMR_01至AMR_07) - 将数据存入全局可访问的数据集(数组、字典或内存数据库,依开发环境选择)
示例伪代码(以Python为例):
# 全局存储调用记录 amr_move_logs = [] def movebytransporter(amr_id, target): # 埋点记录 import datetime current_ts = datetime.datetime.now().timestamp() amr_move_logs.append({ "amr_id": amr_id, "trigger_time": current_ts }) # 原有业务逻辑 # ...
2. 数据分组预处理
对记录的数据按机器人ID分组,整理成可视化工具易识别的格式:
- 把每个机器人的所有触发时间戳单独归类
- 将时间戳转换为可读的时间格式(如
YYYY-MM-DD HH:MM:SS)
3. 生成多系列时间折线图
根据你使用的可视化工具(Matplotlib、Plotly或工业软件自带组件),加载分组后的数据:
- 以时间为X轴,机器人ID为不同折线系列
- 用散点+虚线的方式展示离散触发事件(阶梯式折线更直观)
示例Matplotlib代码片段:
import matplotlib.pyplot as plt import datetime # 按机器人ID分组数据 grouped_data = {} for log in amr_move_logs: amr_id = log["amr_id"] if amr_id not in grouped_data: grouped_data[amr_id] = [] # 转换为可读时间 time_obj = datetime.datetime.fromtimestamp(log["trigger_time"]) grouped_data[amr_id].append(time_obj) # 绘制折线图 plt.figure(figsize=(12,6)) for amr_id, times in grouped_data.items(): # 用机器人编号作为Y轴固定值,方便区分 y_val = int(amr_id.split("_")[1]) plt.plot(times, [y_val]*len(times), marker='o', label=amr_id, linestyle='--') plt.xlabel("时间") plt.ylabel("机器人ID") plt.title("AMR机器人movebytransporter函数调用时间线") plt.legend() plt.xticks(rotation=45) plt.tight_layout() plt.show()
4. 瓶颈排查方向
如果仍无法推进,检查以下常见问题:
- 机器人ID是否能正确传入
movebytransporter函数(确保调用时标识不丢失) - 时间戳是否存在时区偏差(统一使用UTC或本地时间,避免时间混乱)
- 全局数据集是否被意外重置(比如局部变量覆盖全局变量)
- 可视化工具是否支持多系列折线渲染(查看工具文档确认配置规则)
内容的提问来源于stack exchange,提问作者Amol Dhumal
相关产品推荐
相关产品推荐

