.428. 智能系统学报 第8卷 一定的处理,使障碍物在进入Kinect的盲区后仍然 避障计算时,只选取那些命中次数N高于阈值 能够被检测到 Vd的数据. 2目标跟踪与避障 4)当移动机器人移动一段距离后,重置移动机 器人当前位置,将移动机器人坐标置为(0,0).清空 2.1局部地图更新 图像并将3)中边长为40个像素的矩形框内的坐标 上文提到Kinect深度摄像机存在较大的盲区, 点经过坐标变换重新绘制在图像上,其N值保持 因此在进行障碍物信息获取时,不能得到已经进入 不变,并别除移动到框外的点。 到深度摄像机盲区中的障碍物信息,而这些信息恰 5)重新进入1)进行循环 恰是进行动态避障所必需的,因此提出局部地图更 此算法的效果如图4,黑色框表示地图存储和 新的方法来解决这一问题。 更新的区域,当障碍物进入此区域内,其位置就会不 局部地图更新的基本思想是利用图像对移动机 断被更新直到其离开局部地图更新的范围,这样就 器人一定范围内的障碍物位置进行存储和更新.与 能基本解决Kinect的盲区问题.在图4中,左边列为 全局静态地图方法不同,此方法只存储和更新小范 局部地图更新区域,中间列为Kinect的RGB摄像机 围内的地图,因此称为局部地图更新考虑到移动机 获取的彩色图像,右边列为相应深度图像.从图4中 器人的高度为480mm,而Kinect摄像机距离地面的 可以看出,当障碍物从彩色图像及深度图像上消失 高度为340mm,因此使用Kinect获得3-D环境信息 后,局部地图更新区域的信息能够有效地保障移动 时就可以只选择那些高度值在-300~140mm的点, 机器人对障碍物信息的获取.但限于Kinect本身的 然后将这些点投影到移动机器人确定的2D坐标系 条件,对于那些毫无预兆进入Kinect盲区的障碍 中再进行处理。 另外,在使用Kinect时,会遇到Kinect的测量 物,算法无法进行有效的处理。 噪声,即在没有障碍物的位置产生数据,如果直接使 用原始的数据进行局部地图构建,就可能使原本可 物 障碍物 以通行的路径失效,因此在构建地图时采用概率统 计的思想,对一定区域内的障碍物命中次数N进 行统计,当命中次数N超过一个阈值N后就确 (a)璋碍物未进入更新区域 认此处存在障碍物. 局部地图更新的具体步骤如下: 障碍物 I)将Kinect扫描得到的数据按照俯视投影转 花 换为2-D平面坐标,并按照1:50的比例添加到图 像上,在图像上以像素点表示.此时图像上2个相邻 (b)障碍物进入更新区域 像素点之间的距离就代表实际环境中50mm的距 离.同时对障碍物命中此像素点(实际为5cm×5cm 的区域,可以通过更改转换比例选择地图分辨率) 的次数N进行累积计数. 2)将当前机器人所在的位置映射到图像上,并 (©)继续进行局部地图更新 以此位置为矩形中心,做边长为40个像素的正方 形,此时便有一个周长50×40mm=2m的矩形围绕 着移动机器人,在图4中以黑色矩形框显示。 3)统计边长为40个像素的矩形内像素点的个 数,这些点可能是存在的障碍物在图像上的映射,并 (d)障碍物即将离开更新区域 根据这些点在图像上的坐标按照1:50的比例再将 图4局部地图更新效果 它们转换回实际场景中的坐标.在使用人工势场法 Fig.4 Updating of the local map一定的处理ꎬ使障碍物在进入 Kinect 的盲区后仍然 能够被检测到. 2 目标跟踪与避障 2.1 局部地图更新 上文提到 Kinect 深度摄像机存在较大的盲区ꎬ 因此在进行障碍物信息获取时ꎬ不能得到已经进入 到深度摄像机盲区中的障碍物信息ꎬ而这些信息恰 恰是进行动态避障所必需的ꎬ因此提出局部地图更 新的方法来解决这一问题. 局部地图更新的基本思想是利用图像对移动机 器人一定范围内的障碍物位置进行存储和更新.与 全局静态地图方法不同ꎬ此方法只存储和更新小范 围内的地图ꎬ因此称为局部地图更新.考虑到移动机 器人的高度为 480 mmꎬ而 Kinect 摄像机距离地面的 高度为 340 mmꎬ因此使用 Kinect 获得 3 ̄D 环境信息 时就可以只选择那些高度值在-300~ 140 mm的点ꎬ 然后将这些点投影到移动机器人确定的 2 ̄D 坐标系 中再进行处理. 另外ꎬ在使用 Kinect 时ꎬ会遇到 Kinect 的测量 噪声ꎬ即在没有障碍物的位置产生数据ꎬ如果直接使 用原始的数据进行局部地图构建ꎬ就可能使原本可 以通行的路径失效ꎬ因此在构建地图时采用概率统 计的思想ꎬ对一定区域内的障碍物命中次数 Nhit进 行统计ꎬ当命中次数 Nhit超过一个阈值 Nbound后就确 认此处存在障碍物. 局部地图更新的具体步骤如下: 1)将 Kinect 扫描得到的数据按照俯视投影转 换为 2 ̄D 平面坐标ꎬ并按照 1 ∶ 50 的比例添加到图 像上ꎬ在图像上以像素点表示.此时图像上 2 个相邻 像素点之间的距离就代表实际环境中 50 mm 的距 离.同时对障碍物命中此像素点(实际为 5 cm×5 cm 的区域ꎬ可以通过更改转换比例选择地图分辨率) 的次数 Nhit进行累积计数. 2)将当前机器人所在的位置映射到图像上ꎬ并 以此位置为矩形中心ꎬ做边长为 40 个像素的正方 形ꎬ此时便有一个周长 50×40 mm = 2 m 的矩形围绕 着移动机器人ꎬ在图 4 中以黑色矩形框显示. 3)统计边长为 40 个像素的矩形内像素点的个 数ꎬ这些点可能是存在的障碍物在图像上的映射ꎬ并 根据这些点在图像上的坐标按照 1 ∶ 50 的比例再将 它们转换回实际场景中的坐标.在使用人工势场法 避障计算时ꎬ只选取那些命中次数 Nhit 高于阈值 Nbound的数据. 4)当移动机器人移动一段距离后ꎬ重置移动机 器人当前位置ꎬ将移动机器人坐标置为(0ꎬ0).清空 图像并将 3)中边长为 40 个像素的矩形框内的坐标 点经过坐标变换重新绘制在图像上ꎬ其 Nhit值保持 不变ꎬ并剔除移动到框外的点. 5)重新进入 1)进行循环. 此算法的效果如图 4ꎬ黑色框表示地图存储和 更新的区域ꎬ当障碍物进入此区域内ꎬ其位置就会不 断被更新直到其离开局部地图更新的范围ꎬ这样就 能基本解决 Kinect 的盲区问题.在图 4 中ꎬ左边列为 局部地图更新区域ꎬ中间列为 Kinect 的 RGB 摄像机 获取的彩色图像ꎬ右边列为相应深度图像.从图 4 中 可以看出ꎬ当障碍物从彩色图像及深度图像上消失 后ꎬ局部地图更新区域的信息能够有效地保障移动 机器人对障碍物信息的获取.但限于 Kinect 本身的 条件ꎬ对于那些毫无预兆进入 Kinect 盲区的障碍 物ꎬ算法无法进行有效的处理. 图 4 局部地图更新效果 Fig.4 Updating of the local map 428 智 能 系 统 学 报 第 8 卷