top of page

12.24. Robot Force Sensor Rotational Insertion Code Example

public void TestMove()
{
    int rtn;
    JointPos j1 = new JointPos(-11.904f, -99.669f, 117.473f, -108.616f, -91.726f, 74.256f);
    JointPos j2 = new JointPos(-45.615f, -106.172f, 124.296f, -107.151f, -91.282f, 74.255f);
    JointPos j3 = new JointPos(-29.777f, -84.536f, 109.275f, -114.075f, -86.655f, 74.257f);
    JointPos j4 = new JointPos(-31.154f, -95.317f, 94.276f, -88.079f, -89.740f, 74.256f);
    DescPose desc_pos1 = new DescPose(-419.524f, -13.000f, 351.569f, -178.118f, 0.314f, 3.833f);
    DescPose desc_pos2 = new DescPose(-321.222f, 185.189f, 335.520f, -179.030f, -1.284f, -29.869f);
    DescPose desc_pos3 = new DescPose(-487.434f, 154.362f, 308.576f, 176.600f, 0.268f, -14.061f);
    DescPose desc_pos4 = new DescPose(-443.165f, 147.881f, 480.951f, 179.511f, -0.775f, -15.409f);
    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
    int tool = 0;
    int user = 0;
    float vel = 100.0f;
    float acc = 100.0f;
    float ovl = 100.0f;
    float oacc = 100.0f;
    float blendT = 0.0f;
    float blendR = 0.0f;
    byte flag = 0;
    byte search = 0;
    int blendMode = 0;
    int velAccMode = 0;
    robot.SetSpeed(20);
    rtn = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
    Console.WriteLine($"movej errcode:{rtn}");
    rtn = robot.MoveL(j2, desc_pos2, tool, user, vel, acc, ovl, blendR, blendMode, epos, search, flag, offset_pos, oacc, velAccMode,0,10);
    Console.WriteLine($"movel errcode:{rtn}");
    rtn = robot.MoveC(j3, desc_pos3, tool, user, vel, acc, epos, flag, offset_pos,j4, desc_pos4, tool, user, vel, acc, epos, flag, offset_pos, ovl, blendR, oacc, velAccMode);
    Console.WriteLine($"movec errcode:{rtn}");
    rtn = robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
    Console.WriteLine($"movej errcode:{rtn}");
    rtn = robot.Circle(j3, desc_pos3, tool, user, vel, acc, epos,j1, desc_pos1, tool, user, vel, acc, epos,ovl, flag, offset_pos, oacc, -1, velAccMode);
    Console.WriteLine($"circle errcode:{rtn}");
    rtn = robot.MoveCart(desc_pos4, tool, user, vel, acc, ovl, blendT, -1);
    Console.WriteLine($"MoveCart errcode:{rtn}");
    rtn = robot.MoveJ(j1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
    Console.WriteLine($"movej errcode:{rtn}");
    rtn = robot.MoveL(desc_pos2, tool, user, vel, acc, ovl, blendR, blendMode, epos, search, flag, offset_pos, -1, velAccMode);
    Console.WriteLine($"movel errcode:{rtn}");
    rtn = robot.MoveC(desc_pos3, tool, user, vel, acc, epos, flag, offset_pos,desc_pos4, tool, user, vel, acc, epos, flag, offset_pos,ovl, blendR, -1, velAccMode);
    Console.WriteLine($"movec errcode:{rtn}");
    rtn = robot.MoveJ(j2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
    Console.WriteLine($"movej errcode:{rtn}");
    rtn = robot.Circle(desc_pos3, tool, user, vel, acc, epos, desc_pos1, tool, user, vel, acc, epos,ovl, flag, offset_pos, oacc, blendR, -1, velAccMode);
    Console.WriteLine($"circle errcode:{rtn}");
}

12.25. Flex control on

/**
* @brief Smooth control on
* @param [in] p Position adjustment coefficient or softening coefficient.
* @param [in] force Soft opening force threshold in N
* @return Error Code
*/
int FT_ComplianceStart(float p, float force);

12.26. Flex control off

/**
* @brief Soft control off
* @return Error code
*/
int FT_ComplianceStop();

12.27. Sample Flex Control Code

 private void btnComplience_Click(object sender, EventArgs e)
{
    int company = 24, device = 0, softversion = 0, bus = 1;
    robot.FT_SetConfig(company, device, softversion, bus);
    Thread.Sleep(1000);
    robot.FT_GetConfig(ref company, ref device, ref softversion, ref bus);
    Console.WriteLine($"FT config: {company}, {device}, {softversion}, {bus}");
    Thread.Sleep(1000);

    robot.FT_Activate(0);
    Thread.Sleep(1000);
    robot.FT_Activate(1);
    Thread.Sleep(1000);

    robot.FT_SetZero(0);
    Thread.Sleep(1000);

    byte flag = 1;
    int sensor_id = 1;
    int[] select = { 1, 1, 1, 0, 0, 0 };
    double[] ft_pid = { 0.0005f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
    byte adj_sign = 0, ILC_sign = 0;
    float max_dis = 100.0f, max_ang = 0.0f;

    ForceTorque ft = new ForceTorque { fx = -10.0, fy = -10.0, fz = -10.0 };
    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);

    JointPos j1 = new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
    JointPos j2 = new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
    DescPose desc_p1 = new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
    DescPose desc_p2 = new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);

    robot.FT_Control(flag, (byte)sensor_id, select, ft, ft_pid, adj_sign, ILC_sign, max_dis, max_ang);
    float p = 0.00005f;
    float force = 30.0f;
    int rtn = robot.FT_ComplianceStart(p, force);
    Console.WriteLine($"FT_ComplianceStart rtn is {rtn}");

    int count = 5;
    while (count-- > 0)
    {
    robot.MoveL(j1, desc_p1, 0, 0, 100.0f, 180.0f, 100.0f, -1.0f, epos, 0, 1, offset_pos);
    robot.MoveL(j2, desc_p2, 0, 0, 100.0f, 180.0f, 100.0f, -1.0f, epos, 0, 0, offset_pos);
    }

    robot.FT_ComplianceStop();
    Console.WriteLine($"FT_ComplianceStop rtn is {rtn}");

    flag = 0;
    robot.FT_Control(flag, (byte)sensor_id, select, ft, ft_pid, adj_sign, ILC_sign, max_dis, max_ang);
}

robotic arm
FAIRINO ROBOTIC ARMS

Contact

Location: 10637 Scripps Summit Court,

San Diego, CA. 92131
Phone: (619) 333-FAIR
Email: hello@fairino.us

© 2023 Fairino US official site Proudly created By G2T

bottom of page