跳到主要内容

设置机器人相关参数

机器人基本参数设定是机器人正确运行的前提和基础,通过事先把机器人关节参数和 DH 参数等导入到控制器里,可以省去重复填写参数的步骤 。主要是机器人 DH 参数配置,机器人关节参数配置,机器人笛卡尔参数配置,机器人范围限制配置。

机器人 DH 参数配置

使用时使用结构体类 NRC_RobotDHConfig 定义一个对象 config,然后可以使用接口设置机器人 DH 参数即通过使用函数NRC_SetRobotDHConfig(NRC_RobotDHConfig config)实现的,需要注意的是 DH 参数设置时请在伺服停止或伺服就绪状态下设置该参数。该结构体有两种定义方式,在填写 DH 参数时按照机器人的实际参数填写。

struct NRC_RobotDHConfig
{
double L1; ///<L1杆长
double L2; ///<L2杆长
double L3; ///<L3杆长
double L4; ///<L4杆长
double L5; ///<L5杆长
double L6; ///<L6杆长
double L7; ///<L7杆长
double theta; ///<5轴方向,仅对六轴机器人有效,参数可选:0、90
double CoupleCoe12; ///<1/2轴耦合比
double CoupleCoe23; ///<2/3轴耦合比
double CoupleCoe32; ///<3/2轴耦合比
double CoupleCoe34; ///<3/4轴耦合比
double CoupleCoe45; ///<4/5轴耦合比
double CoupleCoe46; ///<4/6轴耦合比
double CoupleCoe56; ///<5/6轴耦合比
double dynamicLimitMax; ///动态限位最大值,用于四轴码垛机器人
double dynamicLimitMin; ///动态限位最小值,用于四轴码垛机器人
double ConversionRatio2; ///二轴转换比
double ConversionRatio3; ///三轴转换比
double ConversionRatio4; ///四轴转换比
double Pitch = 0; ///scara升降杆螺距
NRC_RobotDHConfig(double l1, double l2,double l3,double l4, double l5, double l6, double l7, double l8, double l9, double l10,double l11, double l12, double l13, double l14, double l15)
{
L1 = l1;
L2 = l2;
L3 = l3;
L4 = l4;
L5 = l5;
L6 = l6;
L7 = l7;
theta = l8;
CoupleCoe12 = l9;
CoupleCoe23 = l10;
CoupleCoe32 = l11;
CoupleCoe34 = l12;
CoupleCoe45 = l13;
CoupleCoe46 = l14;
CoupleCoe56 = l15;
dynamicLimitMax = 0;
dynamicLimitMin = 0;
ConversionRatio2 = 0;
ConversionRatio3 = 0;
ConversionRatio4 = 0;
Pitch = 0;
}
NRC_RobotDHConfig(double l1, double l2,double l3,double l4, double l5, double l6, double l7, double l8, double l9, double l10,double l11, double l12, double l13, double l14, double l15, double l16,double l17, double l18, double l19, double l20, double l21)
{
L1 = l1;
L2 = l2;
L3 = l3;
L4 = l4;
L5 = l5;
L6 = l6;
L7 = l7;
theta = l8;
CoupleCoe12 = l9;
CoupleCoe23 = l10;
CoupleCoe32 = l11;
CoupleCoe34 = l12;
CoupleCoe45 = l13;
CoupleCoe46 = l14;
CoupleCoe56 = l15;
dynamicLimitMax = l16;
dynamicLimitMin = l17;
ConversionRatio2 = l18;
ConversionRatio3 = l19;
ConversionRatio4 = l20;
Pitch = l21;
}
};

机器人关节参数配置

struct NRC_RobotJointConfig
{
double reducRatio; ///<减速比
int encoderResolution; ///<编码器位数
double posSWLimit; ///<轴正限位,单位:度
double negSWLimit; ///<轴反限位,单位:度
double ratedRotSpeed; ///<电机额定正转速,单位:转/分钟
double ratedDeRotSpeed; ///<电机额定反转速,单位:转/分钟
double maxRotSpeed; ///<电机最大正转速,为电机额定正转速的倍数,单位:倍数
double maxDeRotSpeed; ///<电机最大反转速,为电机额定反转速的倍数,单位:倍数
double maxAcc; ///<最大加速度,为额定正速度的倍数,单位:倍数,额定正速度 = 电机额定正转速 / 减速比 * 6
double maxDecel; ///<最大减速度,为额定反速度的倍数,单位:倍数,额定反速度 = 电机额定反转速 / 减速比 * 6
bool direction; ///<方向,true:正向,false:反向
};

设置机器人关节参数配置结构体中,轴正限位指机关节正方向最大范围,轴反限位指机器人关节负方向最大范围(此数值须为负数)。

同机器人 DH 参数配置,使用结构体类 NRC_RobotJointConfig 定义一个对象 config,写入合适参数。

设置机器人关节参数是通过调用函数NRC_SetRobotJointConfig(int axisNum, NRC_RobotJointConfig config)来实现的,参数 axisNum 是要设置的轴的序号,参数范围:1 <= axisNum <= 机器人轴总数。 其中参数配置参考函数 NRC_RobotJointConfig,需要注意的是机器人关节参数设置时请在伺服停止或伺服就绪状态下设置该参数。

在填写关节参数时将各轴关节限位根据实际作业环境进行设置,各关节限位设置为-9999 到 9999,然后单独点动机器人的每一个轴,查看机器人每一个轴的正方向是否正确。

机器人笛卡尔参数配置

struct NRC_RobotDecareConfig
{
double maxVel; ///<最大速度,单位:毫米/秒
double maxAcc; ///<最大加速度,为最大速度的倍数,单位:倍数
double maxDec; ///<最大减速度,为最大速度的倍数,单位:倍数
};

同机器人 DH 参数配置,使用结构体类 NRC_RobotDecareConfig 定义一个对象 config,写入合适参数。

设置机器人笛卡尔参数是通过调用函数NRC_SetRobotDecareConfig(NRC_RobotDecareConfig config)来实现的。其中参数配置参考函数 NRC_RobotDecareConfig。需要注意的是机器人笛卡尔参数设置时请在伺服停止或伺服就绪状态下设置该参数。

机器人范围限制配置

struct NRC_RobotRangeLimit
{
bool enableMaxX; ///<使能X正方向限制
double maxX; ///<X正方向限制
bool enableMinX; ///<使能X负方向限制
double minX; ///<X负方向限制
bool enableMaxY; ///<使能Y正方向限制
double maxY; ///<Y正方向限制
bool enableMinY; ///<使能Y负方向限制
double minY; ///<Y负方向限制
bool enableMaxZ; ///<使能Z正方向限制
double maxZ; ///<Z正方向限制
bool enableMinZ; ///<使能Z负方向限制
double minZ; ///<Z负方向限制
};

机器人范围限制用来限制机器人在所有状态下的运动范围。其设置方式为两种:“手动“填写”和“标定”:

​ (1)当使用手动填写的方式来设置范围时,在点击修改按钮后方可设置机器人在 X、Y、Z 轴可 以运动的最大与最小坐标值。

​ (2)当使用范围标定的方式来设置范围时,可以移动机器人,并点击界面上的“标定 MX”、“标 定 mX” 等按钮来记录当前机器人位置中该轴的值,使其成为其运动范围中该轴的最大与最 小值。

同机器人 DH 参数配置,使用结构体类NRC_RobotRangeLimit定义一个对象 range,写入合适参数。

设置机器人范围限制是通过调用函数NRC_SetRobotRangeLimit(NRC_RobotRangeLimit range)实现的,其中参数配置参考函数 NRC_RobotRangeLimit,且同样需要在伺服停止或伺服就绪状态下设置该参数。

设置机器人绝对位置分辨率是通过调用函数NRC_SetAbsolutePosResolution(double resolution)实现的,其中参数 resolution 机器人对位置的分辨率,当两个位置之间的差距小于该值时,机器人将认为这两个位置为同一位置,单位:度。参数范围:0.0001 <= sensitivity <= 0.1,需要注意的是要在伺服停止或伺服就绪状态下设置该参数。

设置机器人相关参数 C++demo 程序

#include <iostream>
#include "nrcAPI.h"
#include<stdio.h>
using namespace std;
void SettingofRobotRelatedParameters()
{
NRC_RobotDHConfig robotDHConfig = {321.5, 270,70,299, 78.5, 50, 0, 90, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};//DH参数配置
NRC_SetRobotDHConfig(robotDHConfig );//设置DH参数配置
NRC_RobotJointConfig robotJointConfig = {76.5, 17, 180, -180, 3000, -3000, 1, -1, 5, -5,1,1};//关节参数配置
for (int i=1; i<7; i++)
{
NRC_SetRobotJointConfig(i,robotJointConfig );
}//设置关节参数配置
NRC_RobotRangeLimit robotRangeLimit = { true, 1000, true, -500, false, 300, true, -1000, false, 0, false, 3000 };//范围限制配置
NRC_SetRobotRangeLimit(robotRangeLimit);//设置机器人范围限制
NRC_RobotDecareConfig robotDecareConfig = {1000, 3, -3};//笛卡尔参数配置
NRC_SetRobotDecareConfig(robotDecareConfig);//设置笛卡尔参数配置
}
int main()
{
SystemStartup();//系统启动,详见3.3节
RobotMsg();//获取机器人配置,详见3.4节
SetServoMap();//设置伺服映射关系,见3.5节
//
SettingofRobotRelatedParameters();//机器人相关参数设置,为程序简洁,采用调用形式
while(1)//保持程序继续运行
{
NRC_Delayms(1000);
}
}