SBPL之运动基元文件的生成

基于MATLAB的运动基元生成函数代码分析

参数

  • resolution = 0.01 //必须与图片读入的分辨率一致,否则会出现运动基元文件读取错误的bug
  • numberofangles = 16 //将2*PI划分为16个等份,即平面上所有的点都是落在这16个角度范围内的,对应的编号为0-15
  • numberofprimsperangle = 5 //每一个角度方向含有5中基元模式,可以定义多种,设置的差别在于基元的末端状态
  • basemprimendpts0_c = zeros(numberofprimsperangle,4) //初始化
    • 解释: [dx,dy, (int)delta_theta, multipliers]
  • multipliers //共5种运动形式
    • forwardcostmult
    • backwardcostmult
    • forwardandturncostmult
    • sidestepcostmult
    • turninplacecostmult
  • 单个象限考虑的角度
    • case1: 0,45,22.5,33.75,11.25
    • case2: 0, 22.5, 45
  • 每个运动基元末端角度设置
    • 0 theta change:basemprimendpts0_c(1,:)=[1 0 0 forwardcostmult];
    • 1/16 theta change:basemprimendpts0_c(4,:) = [8 1 1 forwardandturncostmult];

循环赋值

  • 外部循环: 1:numberofangles
  • 内部循环: 1:numberofprimsperangle
    • 处理角度:currentangle_36000int = round((angleind-1)*36000/numberofangles); %单位为度°
    • 判断使用哪一种角度模板:(rem(currentangle_36000int, K) == 0), K=9000,4500,7875…
    • 计算基元末端坐标
    • 计算基元起始点与终点之间的插值坐标,算法见http://sbpl.net/node/53
    • 输出保存到*.mprim类型文件中

总结

  1. 可以根据实际精度需求改变图片分辨率
  2. 360°角度的划分可以根据实际精度要求进行,划分角度越多,对角度的表征越精确
  3. 每个角度对应的运动基元数目可以为多个,默认为5个
  4. 运动基元的末状态设置可以根据实际精度要求进行,若基元末状态值比较小,虽然在进行全局规划时需要调用多个基元才能到达目标点,规划时间长,但是能够保证精度;若运动基元末状态值比较大,规划时间短,但可能会影响规划精度
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值