控制器二次开发-快速实现阵列码垛

2022-01-07

NexDroid-Controller函数库提供了码垛工艺包,可使用该工艺包快速的实现阵列码垛。

NexDroid码垛工艺包分为完整码垛和简易码垛两种类型的码垛,其中完整码垛提供全面的码垛参数,用来满足各种码垛使用场景,而若要快速的实现阵列码垛,使用简单易懂的简易码垛即可。

工艺包提供多个工艺号,用来区分并存储不同的跺堆数据,本例中我们就使用工艺号1来举例。

一、设置为简易码垛

  • 先使用int NRC_Pallet_SetUsePalletType(int id, int type);函数接口,将工艺号1的码垛类型设置为简易码垛模式
    • 其中type为0时,表示使用简易码垛
NRC_Pallet_SetUsePalletType(1, 0);

二、标定跺堆工件的位置数据

  • 简易码垛仅需4点即可确定跺堆工件位置:起始工件点、列末端、行末端、高末端
    • 而对于阵列码垛来说,起始工件点和高末端为同一点,即只需要3点即可
  • int NRC_GetCurrentPos(NRC_COORD coord, NRC_Position& position);函数接口可以获取机器人当前位置
  • int NRC_Pallet_SetSimplePosParm(int id, int posType, NRC_Position pos);函数接口可设置简易码垛位置数据
  • 先将机器人移动到起始工件位置,将抓手与工件对齐,然后获取并记录机器人当前位置,再然后将该位置设置为起始工件点
    • 因在阵列码垛中,起始工件点和高末端为同一点,故同时也可以将该位置设置为高末端
NRC_Position startPos;
NRC_GetCurrentPos(NRC_MCS, startPos);
NRC_Pallet_SetSimplePosParm(1, 0, startPos);
NRC_Pallet_SetSimplePosParm(1, 3, startPos);
  • 之后将机器人移动到列末端的工件位置,将抓手与该工件对齐,获取当前位置并设置为列末端点
NRC_Position columnPos;
NRC_GetCurrentPos(NRC_MCS, columnPos);
NRC_Pallet_SetSimplePosParm(1, 1, columnPos);
  • 再将机器人移动到行末端的工件位置,将抓手与该工件对齐,获取当前位置并设置为行末端点
NRC_Position rowPos;
NRC_GetCurrentPos(NRC_MCS, rowPos);
NRC_Pallet_SetSimplePosParm(1, 2, rowPos);

三、设置辅助点和入口点

  • 为了防止码垛过程中,抓手上的工件与跺堆上的工件或周围环境发生碰撞,可设置辅助点和入口点来规避障碍
    • 其中,辅助点会随着工件的不同而自动偏移,入口点随层的升高而升高
  • 标定时,只需标定起始工件的辅助点、入口点即可,工艺包会自动进行偏移计算
  • 标定方法与其他位置标定方法相同,即:先运动到对应位置,然后获取当前位置,再设置到对应码垛数据中
NRC_Position auxiliaryPos;
NRC_GetCurrentPos(NRC_MCS, auxiliaryPos);
NRC_Pallet_SetSimplePosParm(1, 4, auxiliaryPos);
......
NRC_Position entryPos;
NRC_GetCurrentPos(NRC_MCS, entryPos);
NRC_Pallet_SetSimplePosParm(1, 5, entryPos);

四、设置工件数目

  • 可通过int NRC_Pallet_SetSimpleNumParm(int id, int numX, int numY, int numZ);函数接口,设置堆垛的工件数目
    • numX、numY、numZ分别表示跺堆在其托盘X、Y、Z方向上的工件数目,即行数、列数、层数
  • 本例中层数为1,行数、列数则分别以10行、5列为例
NRC_Pallet_SetSimpleNumParm(1, 10, 5, 1)

至此,阵列的码垛数据已全部设置完毕,后续便可使用该工艺号进行码垛了

如果本文有错误请向我们反馈,我们很珍惜您的意见或建议。