机器人跨平台插补函数库
一 概述
之前的文章中介绍了一种开放型的运动控制器,有读者反馈是否可以用于PC机上。鉴于控制卡在实际设备上的运行案例,这次专门给PC机上做了一个模拟器,用于输出插补数据,内置的是一个6自由度的关节机器人,详细介绍如下:
二 插补库的接口说明
为了方便大家使用,提供了一个测试用例,过程都在main.c中了,具体如下:
2.1 初始化控制器
Bant_motion_init();
这个函数只要调用一次
2.2 关节插补
Bant_move2start(-500,1000,2000,50,50,50);
这个函数用于把机器人运行到某个特定的位姿,方便后续插补动作,参数是6个位姿数据,位置单位是mm,角度单位是度。上面的参数含义是到点(-500,1000,2000)的位置,并且姿态是(50,50,50)度。
2.3 直线插补
Bant_move_line
参数是目标位姿,6个自由度
2.4 圆弧插补
Bant_move_circle
参数是目标点位姿和中间点位姿,都是6个自由度
2.5 周期控制函数
Bant_motion_ctrl
这个函数要不停调用,直到运动停止
2.6 运动判定函数
Bant_wait_finish
运动结束返回1
2.7 变量获取函数
Bant_get_TCP
可以获取TCP,也就是机器人末端的位姿和速度,这个就是大家需要的6自由度过程数据了。
三 使用效果
主函数中,我们打开了一个文件,由于保存数据
fp_out = fopen("./dat_rob1.txt","w+");
首先初始化控制,然后运行到一个中间位置,为了后续执行圆弧插补
Bant_motion_init();
Bant_move2start(-500,1000,2000,50,50,50);
执行运行函数后,需要等待控制器内部计算完成
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());
完成后,就可以进行下一个动作
依次类推,最后的运行截图如下:
运行结束后,在对应目录下存在数据文件dat_rob1.txt
可以使用熟悉的绘图工具来处理,比如matlab和excel
用例最后运行的效果如图所示,省略了关节插补的轨迹
好了,目前这个工程是运行在x86机器上的,工程是VS2019,整个工程可以在下面网盘下载。目前限制了调用函数的次数,如果大家有兴趣使用完整版本,可以联系作者获取。
链接:https://pan.baidu.com/s/1tQDPFhhyVOPUSLqNP6MsnQ
提取码:tj2f