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

1. 任务描述

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

工件和场地如下图所示:

2. 电子硬件

在这个实验中,采用了以下硬件,请大家参考:

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

3. 示例程序

流程图:

编程环境:Arduino 1.8.19

例程代码(214f_porterage.ino)如下:

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

  版权说明: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 );

}

资料内容:循迹搬运-例程源代码、工件3D文件(资料下载链接 轮式机械臂小车-循迹搬运

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值