缓冲模式演示
一 概述
前面已经提到,本控制器支持缓冲模式运动,也就是机器人运动中常见的前瞻功能,本篇文章来演示一下如何使用,并与非缓冲模式做个对比。
二 使用步骤
控制器初始化和判断是否停止功能与非缓冲模式一致,就不继续介绍了。如果要多个运动一并执行,首先要使用函数Bant_swtich_mode来开启,然后把缓冲队列清空Bant_clear_queue
之后,依次调用运动函数,例如
Bant_move2start(-500,1000,2000,50,50,50,100)
Bant_move_circle(&pt,&pq,100)
Bant_move_line(500,0,2000,0,0,0,100);
Bant_move_line(1000,1000,2000,20,20,20,100);
Bant_move_line(1500,1000,2000,20,20,20,100);
Bant_move_line(1000,1000,2000,20,20,20,100);
最后,使用
Bant_exec_queue来启动运行,并周期调用函数来执行插补计算,并等待结束
do
{
Bant_motion_ctrl();
Bant_get_TCP(&pos[0],&pos[1],&pos[2],&vel,&angle[0],&angle[1],&angle[2]); fprintf(fp_out,"%f,%f,%f,%f,%f,%f,%f\n",vel,pos[0],pos[1],pos[2],angle[0],angle[1],angle[2]);
}while(!Bant_wait_finish());
跟之前的介绍相比,缓冲模式的代码结构更为简洁,路径更加清晰,适合实际轨迹加工。
三 数据对比
现在,我们来看看缓冲模式下的轨迹和速度轮廓
从上图可以看到,圆弧和直线之间已经有了圆角过渡,再看看速度轮廓
图中省略了第一个起始点的关节运动,所以一开始的加速过程没了,中间是一直以满速度跑的,最后才减速到0,符合前瞻的特点。
放上更新后的测试工程链接,有兴趣的可以自行测试
链接:https://pan.baidu.com/s/1lvZBp3FJcHwRQBq-b1TTrg
提取码:hhbt