机器谱 发表于 2022-12-23 11:08:48

轮式机械臂小车循迹搬运功能的实现

本帖最后由 机器谱 于 2022-12-23 11:11 编辑

1. 任务描述       本实验中机器人将通过完成将工作区外的工件搬运至工作区的任务,来模拟机器人的搬运过程。机器人首先需要通过循迹找到未存放在工作区内的工件,然后利用机械爪将工件夹起并保持工件处于加持状态(距离地面1cm以上),最后将工件搬运至工作区即算完成任务。

工件和场地如下图所示:

2. 电子硬件在这个示例中,采用了以下硬件,请大家参考:

主控板Basra(兼容Arduino Uno)
扩展板Bigfish2.1
传感器灰度×2
电池7.4V锂电

3. 示例程序流程图:
编程环境:Arduino 1.8.19例程代码如下
/*********************************************************************

版权说明:Copyright 2022 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 机器谱 2022-10-20 https://www.robotway.com/

***************************   实验接线 ******************************

左侧车轮接6/10端口;右侧车轮接5/9端口;

关节模块的舵机线连接到D11端口,机械爪的舵机线连接到D12端口

******************************************************************/


#include <Servo.h>


Servo servo_pin_12;

Servo servo_pin_11;


void grab();

void trun_left();

void forward();

void putdown();

void go_putdown();

void carstop();

void trun_right();

void brake();


void setup()

{

pinMode( 18, INPUT);

pinMode( 14, INPUT);

pinMode( 10, OUTPUT);

pinMode( 6, OUTPUT);

pinMode( 5, OUTPUT);

pinMode( 9, OUTPUT);

servo_pin_12.attach(12);

servo_pin_11.attach(11);

servo_pin_12.write( 91 );


servo_pin_11.write( 145 );


delay( 1500 );


}


void loop()

{

if (!( digitalRead(18) ))

{

    if (!( digitalRead(14) ))

    {

      brake();

      grab();

      go_putdown();

    }

    else

    {

      trun_right();

    }

}

else

{

    if (!( digitalRead(14) ))

    {

      trun_left();

    }

    else

    {

      forward();

    }

}

}


void go_putdown()

{

forward();

delay( 500 );

carstop();

delay( 1000 );

putdown();

while ( true )

{

    carstop();

}


}


void trun_right()

{

analogWrite(6 , 80);

analogWrite(10 , 0);

analogWrite(5 , 0);

analogWrite(9 , 80);

}


void forward()

{

analogWrite(6 , 80);

analogWrite(10 , 0);

analogWrite(5 , 80);

analogWrite(9 , 0);

}


void carstop()

{

analogWrite(6 , 0);

analogWrite(10 , 0);

analogWrite(5 , 0);

analogWrite(9 , 0);

}


void trun_left()

{

analogWrite(6 , 0);

analogWrite(10 , 80);

analogWrite(5 , 80);

analogWrite(9 , 0);

}


void grab()

{

servo_pin_12.write( 50 );

delay( 1000 );

servo_pin_11.write( 110 );

delay( 1000 );

}


void brake()

{

analogWrite(6 , 100);

analogWrite(10 , 100);

analogWrite(5 , 100);

analogWrite(9 , 100);

delay( 500 );

}


void putdown()

{

servo_pin_11.write( 145 );

delay( 1000 );

servo_pin_12.write( 91 );

delay( 1000 );

}
4. 资料下载
资料内容:
①样机-循迹搬运-例程源代码
②工件3D文件
资料下载链接:https://www.robotway.com/h-col-150.html








页: [1]
查看完整版本: 轮式机械臂小车循迹搬运功能的实现