机械控制

1 机械控制

对于串联式多关节机器人,关节控制是针对机械臂各个关节的变量进行的控制,目标是让机械臂各个关节按照一定速度达到目标位置。

1.1 单关节控制

1.1.1 发送单关节角度

SendOneAngle(int jointNo, int angle, int speed)
返回值:无
参数说明:参数 1:关节号(1 - 6), 参数 2:角度(范围:-170°- 170°)),参数 3:速度(0-100
示例:
mc.SendOneAngle(1, 100,70);

1.2 多关节控制

1.2.1 获取所有关节角度

GetAngles()
返回值:返回 int 类型数组,int[], length: 6
参数说明:无
示例:
var recv = mc.GetAngles();

1.2.2 发送所有关节角度

SendAngles(int[] angles, int speed)
返回值:无
参数说明:参数 1:所有关节角度(范围:-170°- 170°), 参数 2:速度(0-100
示例:

int[] angles = new[] {100, 100, 100, 100, 100, 100};
mc.SendAngles(angles ,30);

1.3 完整使用案例

项目中的 program.cs 是完整的使用案例程序,可以在此基础上根据需要修改。

    using System;

    namespace Mycobot.csharp
    {
        class Test
        {
            static void Main(string[] args)
            {
                MyCobot mc = new MyCobot("/dev/ttyUSB0");
                mc.Open();
                // int[] angles = new[] {100, 100, 100, 100, 100, 100};
                // mc.SendAngles(angles, 50);
                // Thread.Sleep(5000);
                // var recv = mc.GetAngles();
                // foreach (var v in recv)
                // {
                    // Console.WriteLine(v);
                // }

                // int[] coords = new[] {160, 160, 160, 0, 0, 0};
                // mc.SendCoords(coords, 90, 1);
                // Thread.Sleep(5000);
                // var recv = mc.GetCoords();
                // foreach (var v in recv)
                // {
                    // Console.WriteLine(v);
                // }

                mc.SendOneAngle(1, 100,70);

                // byte[] setColor = {0xfe, 0xfe, 0x05, 0x6a, 0xff, 0x00, 0x00, 0xfa};
                mc.Close();
            }
        }
    }

2 坐标控制

坐标控制是将机械臂以指定姿势移动到指定点,分为 x、y、z、rx、ry 和 rz。X、Y 和 Z 表示机械臂头部在空间中的位置(属于直角坐标系),而 rx、ry 和 rz 则表示机械臂头部在该点的姿势(属于欧拉坐标系)。

2.1 单一参数坐标

2.1.1 发送单一参数坐标

SendOneCoord(int coord, int value, int speed)
返回值:无
参数说明: 参数 1:坐标编号(1-6(X、Y、Z、RX、RY、RZ)),参数 2:坐标(X、Y、Z 值范围 -300-300.00 单位 mm RX、RY、RZ,值范围 -180-180 ),参数 3:速度(0-100)
示例:
mc.SendOneCoord(1, 160,30);

2.2 多参数坐标

2.2.1 获取所有坐标

GetCoords()
返回值:返回 int 类型数组,int[], length: 6
参数说明:无
示例:
> var recv = mc.GetCoords();

2.2.2 发送多参数坐标

SendCoords (int [] coords, int speed, int mode)
返回值:无
参数说明:参数 1:所有坐标(X、Y、Z 取值范围 -300-300.00 单位 mm RX、RY、RZ,取值范围-180-180), 参数 2:速度(0-100), 参数 3:模式(0 - angular,1 - linear)
示例:
int[] coords = new[] {160, 160, 160, 0, 0, 0};
mc.SendCoords(coords ,30);

2.3 完整使用案例

项目中的 program.cs 是完整的使用案例程序,可以在此基础上根据需要修改。

    using System;

    namespace Mycobot.csharp
    {
        class Test
        {
            static void Main(string[] args)
            {
                MyCobot mc = new MyCobot("/dev/ttyUSB0");
                mc.Open();
                // int[] angles = new[] {100, 100, 100, 100, 100, 100};
                // mc.SendAngles(angles, 50);
                // Thread.Sleep(5000);
                // var recv = mc.GetAngles();
                // foreach (var v in recv)
                // {
                    // Console.WriteLine(v);
                // }

                // int[] coords = new[] {160, 160, 160, 0, 0, 0};
                // mc.SendCoords(coords, 90, 1);
                // Thread.Sleep(5000);
                // var recv = mc.GetCoords();
                // foreach (var v in recv)
                // {
                    // Console.WriteLine(v);
                // }

                mc.SendOneAngle(1, 100,70);

                // byte[] setColor = {0xfe, 0xfe, 0x05, 0x6a, 0xff, 0x00, 0x00, 0xfa};
                mc.Close();
            }
        }
    }

3 io 控制

机械臂底部 Basic 和末端 Atom 上都有引脚,可以通过 io 控制设置引脚的高低电平,控制系泵等工具(引脚号可以查看 Basic 和 Atom 引脚处贴的引脚标签,输入输出共用)。

3.1 M5Stack-basic io 控制(m5)

3.1.1 设置输出 io 高低电平

SetBasicOut(byte pin_number, byte pin_signal)
返回值:无
参数说明:参数 1:引脚号(basic 输出引脚号),参数 2:状态(0--低电平,1--高电平)
案例:

mc.SetBasicOut(2, 1);
Thread.Sleep(100);
mc.SetBasicOut(5, 1);
Thread.Sleep(100);

3.1.2 获取输入 io 状态

GetBasicIn (byte pinnumber)
返回值:引脚状态(0--低电平,1--高电平)
参数说明:引脚号(basic 输入引脚号)
案例:设置输出引脚 2 为高电平

Console.WriteLine(mc.GetBasicIn(35));
Thread.Sleep(100);
Console.WriteLine(mc.GetBasicIn(36));
Thread.Sleep(100);

3.2 Atom io 控制

注意:320m5 无 atom io,所以不需要用到此模块 API

3.2.1 设置输出 io 高低电平

SetDigitalOut (byte pinnumber, byte pin_signal)
返回值:无
参数说明:参数 1:引脚号(atom 输出引脚号),参数 2:状态(0--低电平,1--高电平)
案例:

mc.SetDigitalOut(23, 0);
Thread.Sleep(100);
mc.SetDigitalOut(33, 0);
Thread.Sleep(100);

3.2.2 获取输入 io 状态

GetDigitalIn (byte pinnumber)
返回值:引脚状态(0--低电平,1--高电平)
参数说明:引脚号(atom 输入引脚号)
案例:

Console.WriteLine(mc.GetDigitalIn(19));
Thread.Sleep(100);
Console.WriteLine(mc.GetDigitalIn(22));
Thread.Sleep(100);

3.3 完整使用案例

    using System;
    using System.Threading;

    namespace Mycobot.csharp
    {
        class Test
        {
            static void Main(string[] args)
            {
                MyCobot mc = new MyCobot("COM57");//树莓派机械臂串口名称:/dev/ttyAMA0
                mc.Open();
                Thread.Sleep(5000);//windows打开串口后,需要等待5s,Windows打开串口底部basic会重启

                //set basic output io
                /*mc.SetBasicOut(2, 1);
                Thread.Sleep(100);
                mc.SetBasicOut(5, 1);
                Thread.Sleep(100);
                mc.SetBasicOut(26, 1);
                Thread.Sleep(100);*/

                //get basic input io
                Console.WriteLine(mc.GetBasicIn(35));
                Thread.Sleep(100);
                Console.WriteLine(mc.GetBasicIn(36));
                Thread.Sleep(100);

                //set atom output io
                /*mc.SetDigitalOut(23, 0);
                Thread.Sleep(100);
                mc.SetDigitalOut(33, 0);
                Thread.Sleep(100);*/

                //get m5 input io
                /*Console.WriteLine(mc.GetDigitalIn(19));
                Thread.Sleep(100);
                Console.WriteLine(mc.GetDigitalIn(22));
                Thread.Sleep(100);*/

                mc.Close();
            }
        }
    }

4 gripper control

夹爪安装:
自适应夹爪将夹爪插在 atom 上面的引脚上,具体看下图:
9-6-001
电动夹爪插在顶端上的 485 接口处,具体看下图:
注意:myCobot280 和 myPalletizer 260 没有电动夹爪,只有 myCobot320 有电动夹爪
9-6-002

4.1 自适应夹爪控制

支持设备:myCobot280、320&&myPalletizer 260

4.1.1 setGripperValue (byte angle, byte speed)

返回值:无

使用前调用接口 案例:

mc.SetGripperMode(0);

参数说明:参数 1:夹爪开合角度(0-100,0--闭合,100-张开最大角度),参数 2:夹爪开合速度(0-100)
案例:

mc.setGripperValue(0, 10);
Thread.Sleep(3000);
mc.setGripperValue(50, 100);
Thread.Sleep(3000);

4.1.2 getGripperValue ()

返回值:int 类型,返回夹爪角度(0--闭合,100-张开最大角度)
参数说明:无
案例:

`Console.WriteLine(mc.getGripperValue());`

4.2 电动夹爪控制

支持设备:myCobot320

4.2.1 setEletricGripper (int state)

返回值:无
参数说明:夹爪开关状态(0--关,1--开)
案例:

`mc.setEletricGripper(0);`

4.3 完整使用案例

    using System;
    using System.Threading;

    namespace Mycobot.csharp
    {
        class Test
        {
            static void Main(string[] args)
            {
                MyCobot mc = new MyCobot("COM57");//树莓派机械臂串口名称:/dev/ttyAMA0
                mc.Open();
                Thread.Sleep(5000);//windows打开串口后,需要等待5s,Windows打开串口底部basic会重启

                //set gripper open or close 0--close 100-open max 0-100
                mc.setGripperValue(0, 10);
                Thread.Sleep(3000);
                mc.setGripperValue(50, 100);
                Thread.Sleep(3000);

                //set electric gripper
                mc.setEletricGripper(0);
                Thread.Sleep(100);
                mc.setEletricGripper(1);
                Thread.Sleep(100);

                //get gripper state 0--close 1--open
                Console.WriteLine(mc.getGripperValue());
                mc.Close();
            }
        }
    }

← 上一节 | 下一页 →

results matching ""

    No results matching ""