5自由度串联机械臂实现颜色分拣功能

1. 功能描述

      本文提供的示例所实现的功能为:实现5自由度串联机械臂按颜色分拣的功能。将红、蓝两种颜色的工件分别放置在传感器上时,机械臂会根据检测到的颜色,将红色工件搬运至右侧区域;将蓝色工件搬运至左侧区域。

2. 电子硬件

在这个示例中,我们采用了以下硬件,请大家参考:

主控板

Basra主控板(兼容Arduino Uno)

扩展板

Bigfish2.1扩展板

传感器

TCS3200颜色识别传感器

电池7.4V锂电池

在5自由度串联机械臂底座上安装一个 TCS3200颜色识别传感器 ,用于检测工件的RGB值。

3. 功能实现

编程环境:Arduino 1.8.19

下面提供一个实现5自由度串联机械臂按颜色分拣的参考程序(colour.ino):

/*------------------------------------------------------------------------------------

  版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

           Distributed under MIT license.See file LICENSE for detail or copy at

           https://opensource.org/licenses/MIT

           by 机器谱 2023-08-24 https://www.robotway.com/

  ------------------------------*/

#include <MsTimer2.h>

#include <Wire.h>

#include <ECT_IA02S.h>

ECT_IA02S device;

String serialString = "";

boolean serialComplete = false;

char stringBuf[100];

void setup()

{

  Serial.begin(9600);

  Colour_set();

  serialString = "1@0:act.write(75);@";

  StringDeal();

  serialString = "1@1:act.write(90);@";

  StringDeal();

  delay(1000);

  serialString = "2@0:act.write(100);@";

  StringDeal();

  serialString = "2@1:act.write(90);@";

  StringDeal();  

  delay(1000);

  serialString = "3@0:act.write(45);@";

  StringDeal();

  serialString = "3@1:act.write(90);@";

  StringDeal();

}

void loop()

{

  int c = Get_colour();

  Serial.println(c);

  if(c<2)

     device.startShoal(0, c, 7000);

  delay(2000);

}

void StringDeal()

{

      String outString;

      static int stringlength;

      serialString = serialString.substring(0,serialString.length()-1);

      serialString+="*";

      serialString+=serialString.length()-1;

      serialString+="\n";

      stringlength=serialString.length();

     

     

      //split the string to certain part, each part as 30 char, send parts one by one

      for(int i=0;i<((stringlength/30)+1);i++){

        outString = serialString.substring(0,min(serialString.length(),30));

        outString.toCharArray(stringBuf, outString.length()+1);

        serialString=serialString.substring(min(serialString.length(),30),serialString.length()+1);

     

        Wire.beginTransmission(1);

        Wire.write(stringBuf);                   

        Wire.endTransmission();       

      }

}


颜色分拣-程序源代码资料内容详见 5自由度串联机械臂-颜色分拣

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值