轮式机械臂小车循迹搬运功能的实现
本帖最后由 机器谱 于 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]