关于Marlin的一点认识

Marlin的运动规划在很大程度上参考了Sprinter和Grbl。因此,运动规划部分主要在Grbl的博客中介绍,本篇主要介绍一下planner_bezier,也就是(三阶)贝塞尔曲线的规划。

先看其头文件

很简单,就只有一个函数,如下所示,也是最重要的函数。

再看其源文件

源文件内容稍微多一点,多了几个宏定义和内联函数的定义。这几个函数比较简单,这里就不介绍了。主要介绍cubic_b_spline这个函数,其主要作用,用一句话来概括,就是:

在贝塞尔曲线上寻找离散点,相邻离散点的连线与曲线的误差恰好保持在误差范围内,这些离散点会传给直线运动块当作MoveL处理。

函数内容:

误差的计算:相邻离散点连线的中点与该小段曲线中点的差。

  1. 一段三阶贝塞尔曲线由4个控制点决定,分别是position first second target
  2. 贝塞尔曲线是参数曲线,如参数t,取值范围为[0,1]
  3. 在参数取值区间内遍历,每次先假定步长为MAX_STEP,得到new_t,由new_t代入曲线方程,得到新的位置new_pos
  4. 接着进入一个死循环,直到满足条件才break退出,该循环主要作用就是如果不满足误差要求,就用二分法减小new_t的值,直到满足跳出循环
  5. 如果上一步循环没走过一个完整循环,说明可以采用更大的步长来找new_t(也就对应了上面所说的“恰好”,误差不能太大,也不能太小,只要保持在范围内,刚要超还没超就ok)
  6. 调用planner.buffer_line将该点传出去

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值