Motion Planning回顾:Occupy grid map设置障碍物的原理

 0 引言

        在进行motion planning运动规划学习过程中,对代码进行回顾记录。


1 引入

        在栅格地图中,已知

Occupy Grid Map相关定义
地图分辨率resolution
地图边界(m)-x_{max}-x_{max},-y_{max}-y_{max},-z_{max}-z_{max}
地图栅格索引边界x_{maxindex},y_{maxindex},z_{maxindex}
存放地图数据一维数组data\left [ x_{maxindex}y_{maxindex}z_{maxindex}\right ]

        上述是部分Occupy Grid Map相关参数。


        将地图栅格化表示可以根据如下公式进行:

x_{maxindex}=\frac{2x_{max}}{resolution}

y_{maxindex}=\frac{2y_{max}}{resolution}

z_{maxindex}=\frac{2z_{max}}{resolution}

        对于地图中某点(x,y,z)及其栅格索引计算为:

x_{index}=\frac{x+x_{max}}{resolution}

y_{index}=\frac{y+y_{max}}{resolution}

z_{index}=\frac{z+z_{max}}{resolution}


        而对于占据栅格地图而言,障碍物的状态一般为1,而free空间设定为0;所以对于某个坐标(x,y,z)是障碍物的话,应该设定该点的值为1。

        由于我们将整个地图数据放置到一维数组data中,即需要对data进行索引进而设置上述坐标为障碍物。数组索引的地址data[address]中address求解公式如下:

address=x_{index}y_{maxindex}z_{maxindex}+y_{index}z_{maxindex}+z_{index}

        具体代码如下:

void gridPathFinder::setObs(const double coord_x, const double coord_y, const double coord_z)
{   
    if( coord_x < gl_xl  || coord_y < gl_yl  || coord_z <  gl_zl || 
        coord_x >= gl_xu || coord_y >= gl_yu || coord_z >= gl_zu )
        return;

    int idx_x = static_cast<int>( (coord_x - gl_xl) * inv_resolution);
    int idx_y = static_cast<int>( (coord_y - gl_yl) * inv_resolution);
    int idx_z = static_cast<int>( (coord_z - gl_zl) * inv_resolution);      

    data[idx_x * GLYZ_SIZE + idx_y * GLZ_SIZE + idx_z] = 1;
}

2 问题

如何理解上述障碍物设置的公式呢(代码部分也是一样)?

        这里给出我个人的理解方式:

        对于一个三维占据栅格地图,x_{index}y_{maxindex}z_{maxindex}部分表明y-z平面按照x_{index}进行序号1所示索引,而索引到某x列的黑色平面部分栅格;然后y_{index}z_{maxindex}部分表明继续在黑色栅格中z轴线按照y_{index}进行序号2所示索引,索引蓝色列栅格;最后z_{index}表明继续在蓝色栅格中按照序号3所示索引,索引到最后红色栅格,对该栅格进行障碍物设定。

3 Ref

移动机器人运动规划-深蓝学院 - 专注人工智能与自动驾驶的学习平台 

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leida_花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值