logo资料库

OpenMV巡线模块原理讲解.pdf

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
OpenMV巡线模块原理讲解-凡哥带你玩转OpenMV
版本信息
版本说明&功能描述
原理介绍
十字形或T字形
左右转向
直线
调参
调试模式
补光
灰度图颜色阈值
ROI
色块尺寸阈值
解-凡 v1 2018.04.03 www.myopenmv.com www.myfange.com   OpenMV巡 OpenMV     OpenMV教 明&功 因 合OpenMV进 定 (左 转or右 转) T字   算 up 上 middle 中 down 下 left 左 right 右 来5个ROI区 版 本 号 更 新 时 间 作 者 凡 哥 @ 杭 州 云 江 科 技 学 ⽹ 站 云 江 学 院 ⽹ 站 线 模 块 原 理 讲 哥 带 你 玩 转 版 本 信 息 版 本 说 能 描 述 为 之 前 ⻜ 控 结 ⾏ 的 巡 线 代 码 ⽐ 较 杂 乱 , 另 外 也 由 于 新 版 固 件 的 ⼀ 些 改 动 , 导 致 原 有 的 代 码 不 能 正 常 运 ⾏ , 所 以 凡 哥 重 构 了 这 部 分 的 代 码 。 在 原 有 的 代 码 的 功 能 基 础 上 进 ⾏ 了 拓 展 。 完 整 功 能 包 括 : 直 线 巡 线 直 ⻆ 转 弯 判 形 路 ⼝ 判 定 ⼗ 字 形 路 ⼝ 判 定 演 ⽰ 效 果 , 可 以 查 看 演 ⽰ 视 频 。 原 理 介 绍 法 的 主 要 核 ⼼ 在 于 , 讲 整 个 画 ⾯ 分 割 出 域 ⽅ 横 向 采 样 间 横 向 采 样 ⽅ 横 向 采 样 侧 垂 直 采 样 侧 垂 直 采 样 如 下 图 所 ⽰
通 断5个 过 判 图 ⽚ 的 组 合 关 系 给 出 路 ⼝ 类 型 的 判 断 。 判 断 规 则 如 图 所 ⽰ :
  中 T 字 据 is_turn_right 跟 is_turn_left 确 定 T 字 其 类 型 的 路 ⼝ 是 没 有 ⽅ 向 的 , 要 根 形 路 ⼝ 的 朝 向 。 路 ⼝ 类 型 之 间 是 有 优 先 级 的 , 如 下 图 所 ⽰ 。
      cx,cy 代 为 T 字 数 cx 跟 cy 才 点, ⾊ ⼗ 字 形 或 T 字 形 当 路 ⼝ 类 型 形 或 者 ⼗ 字 形 的 时 候 , 参 是 有 意 义 的 。 T 字 形 跟 ⼗ 字 形 可 以 ⽤ 作 四 轴 悬 停 的 参 考 块 的 ⽅ 法 , 近 似 求 得 轨 道 与 轨 道 交 叉 圆 的 圆 ⼼ ( 因 为 圆 形 识 别 ⽐ 较 耗 时 且 不 稳 定 ) , 如 果 ⻆ 度 旋 转 过 ⼤ , 则 该 算 法 不 成 ⽴ 。 表 交 叉 点 的 中 ⼼ 坐 标 。
    者T字 if is_cross or is_t: # 只 cnt = 0 for roi_direct in ['up', 'down']: if reslut[roi_direct]['blob_flag']: cnt += 1 cx += reslut[roi_direct]['cx'] if cnt == 0: cx = last_cx else: cx /= cnt cnt = 0 for roi_direct in ['left', 'right']: if reslut[roi_direct]['blob_flag']: cnt += 1 cy += reslut[roi_direct]['cy'] if cnt == 0: cy = last_cy else: 计 算 ⽅ 法 如 下 : 在 出 现 ⼗ 字 形 或 形 才 计 算 圆 ⼼ 坐 标
cy /= cnt           左 右 转 向 直 线
    的 x 坐 为 cmean_x 的 数 cmean_x 仅 # cx_mean ⽤ # ⽤ cx_mean = 0 for roi_direct in ['up', 'down', 'middle']: if reslut[roi_direct]['blob_flag']: cx_mean += reslut[roi_direct]['cx'] else: cx_mean += IMG_WIDTH / 2 cx_mean /= 3 图 中 ⿊ ⾊ 圆 ⼼ 为 画 ⾯ 中 ⼼ , ⽩ ⾊ 圆 ⼼ 标 值 参 在 当 前 视 野 为 直 线 时 才 有 意 义 。 计 算 ⽅ 法 如 下 调 参 调 试 模 式 于 确 定 视 ⻆ 中 的 轨 道 中 ⼼ 于 表 ⽰ 左 右 偏 移 量
启debug模 # 是 # 如 is_debug = True 是False就 不print, 不       # 当 LED(4).on() # 直 LINE_COLOR_THRESHOLD = [(0, 120)] # 如 # LINE_COLOR_THRESHOLD = [(128, 255)] ROI ROI的 # 取 ROIS = { 'down': (0, 55, 64, 8), # 横 'middle': (0, 28, 64, 8), # 横 'up': (0, 0, 64, 8), # 横 'left': (0, 0, 8, 64), # 纵 'right': (56, 0, 8, 64) # 纵 } 间 2 样-中 ⽅ 3 样-上 样-下 ⽅ 1 样-左 侧 4 样-右 侧 5   补 光 如 果 不 需 要 补 光 , 可 以 注 释 掉 。 灰 度 图 颜 ⾊ 阈 值 这 取 决 于 当 前 现 场 的 颜 ⾊ 强 度 与 线 的 颜 ⾊ 。 宽 度 与 位 置 也 可 以 根 据 需 求 调 节 。 ⾊ 块 尺 ⼨ 阈 值 尺 ⼨ 太 ⼩ 容 易 引 进 噪 声 , 尺 ⼨ 过 ⼤ , 容 易 选 取 到 整 条 取 样 ⼝ , 尤 其 是 出 现 交 叉 线 的 时 候 。 否 开 式 果 进 ⾏ 可 视 化 绘 制 , 可 以 提 ⾼ 帧 率 光 线 弱 的 时 候 , ⽤ 于 补 光 线 灰 度 图 颜 ⾊ 阈 值 果 直 线 是 ⽩ ⾊ 的 , 阈 值 修 改 为 : 样 窗 ⼝ 向 取 向 取 向 取 向 取 向 取
分享到:
收藏