本人新手小白一位,有不好的地方轻点还请多多包涵。前几天接到一个机器人路径规划的任务,用c语言实现七段曲线,突发奇想想写篇文章记录一下。(后续附上详细代码)。对于七段曲线的计算公式推导,可以参考其他大神的文章,这里不做详细展开。(附完整代码)

整体的代码逻辑是根据运动的距离获得该点的速度,从而可以根据速度对机器人进行调节。

话不多说,下面开始代码的分块详解!!!

首先将已知量与所求量放入一个结构体中,这里的已知量有从起点开始运动到当前位置的距离x(可由传感器或者其他手段获得),其他全为待求量

后面将所有的给定参数放入一个结构体中,这些都可以由开发者自行更改

上面都是所需要用到的函数,先给出定义以及每个函数的用途

后面来看主函数

主函数中很多内容比较繁琐,大部分都是为了调试所写,最核心的内容其实只有得到运动的距离x,然后利用Cal_t()函数计算出t(此处可以与传感器获得的时间进行比较,进行误差对比),然后用Cal_Cur_point()函数获得速度值即可。此处为了调试,我对所有给定量进行了赋值,然后打表出结果观察,效果如下

下面来对最核心的函数进行讲解,利用给定量计算七段曲线各段的时间量,从而根据时间量给出加速度、速度、路程等公式

最开始根据(vtar - vs) > (atar * atar) / j(该公式可参考其他大神文章进行推导,还是挺简单的)判断是否存在均加速段,若存在可算出该段用时ti,不存在则ti=0,同理还有匀减速段。后面对匀速段进行判断,判断标准是利用除匀速段的所有段的总距离和与给定总距离比较,小于即存在匀速段。如果不存在匀速段,则修改七段曲线为四段曲线。对于四段曲线,每一段的距离都相同,这里我利用一个while()循环去寻找合适的距离,使四段曲线距离和等于给定总距离(此处可利用二分算法进行节时处理)。

最后,附上完整代码

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐