本帖最后由 机器谱 于 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
|