本帖最后由 机器谱 于 2023-3-10 09:20 编辑
1. 功能说明
在机器人车体上安装2个 灰度传感器 ,实现机器人按照下图所指定的路线进行导航运动,来模拟仓库物流机器人按指定路线行进的工作过程。
2. 使用样机
本实验使用的样机为R023e样机。
3. 功能实现 3.1 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考:
主控板 | Basra(兼容Arduino Uno) | 扩展板 | SH-01外围电路扩展板(与Bigfish扩展板相似) | 传感器
| 灰度传感器
| 电池 | 7.4V锂电池 |
电路连接说明:
① 电机连在D6,D10及D5,D9接口上;
② 2个灰度传感器分别接在扩展板的传感器接口A0、A4上。
3.2 编写程序 传感器触发情况、小车行驶状态、对应行为策略表:
传感器1 | 传感器2 | 小车状态 | 动作 | 0 | 1 | 小车左偏 | 向右调整 | 1 | 0 | 小车右偏 | 向左调整 | 1 | 1 | 到达终点 | 停止 | 0 | 0 | 正常 | 前进 |
① 根据实验内容,利用多分支结构设计出程序流程图。
机器人轨迹导航任务流程图
② 根据设计好的程序流程图进行编程,编写并烧录以下程序(blackline_4if.ino),该程序将实现演示视频中的动作。 编程环境:Arduino 1.8.19 - /*------------------------------------------------------------------------------------
- 版权说明: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-02-09 https://www.robotway.com/
- ------------------------------------------------------------------------------------*/
- void turnleft_slow();
- void forward();
- void carstop();
- void turnright_slow();
- void setup()
- {
- pinMode( 18, INPUT);
- pinMode( 14, INPUT);
- pinMode( 10, OUTPUT);
- pinMode( 6, OUTPUT);
- pinMode( 5, OUTPUT);
- pinMode( 9, OUTPUT);
- }
- void loop()
- {
- if (( digitalRead(14) && digitalRead(18) ))
- {
- forward();
- }
- if (( !( digitalRead(14) ) && digitalRead(18) ))
- {
- turnleft_slow();
- }
- if (( digitalRead(14) && !( digitalRead(18) ) ))
- {
- turnright_slow();
- }
- if (( !( digitalRead(14) ) && !( digitalRead(18) ) ))
- {
- carstop();
- delay( 5000 );
- }
- }
- void turnright_slow()
- {
- analogWrite(6 , 80);
- analogWrite(10 , 0);
- analogWrite(5 , 0);
- analogWrite(9 , 0);
- }
- void carstop()
- {
- analogWrite(6 , 0);
- analogWrite(10 , 0);
- analogWrite(5 , 0);
- analogWrite(9 , 0);
- }
- void turnleft_slow()
- {
- analogWrite(6 , 0);
- analogWrite(10 , 0);
- analogWrite(5 , 80);
- analogWrite(9 , 0);
- }
- void forward()
- {
- analogWrite(6 , 80);
- analogWrite(10 , 0);
- analogWrite(5 , 80);
- analogWrite(9 , 0);
- }
复制代码
也可以使用if…else嵌套写法(blackline_ifelse.ino)。 - void stop();
- void left();
- void right();
- void forwards();
- void setup()
- {
- pinMode( 18, INPUT);
- pinMode( 14, INPUT);
- pinMode( 10, OUTPUT);
- pinMode( 6, OUTPUT);
- pinMode( 5, OUTPUT);
- pinMode( 9, OUTPUT);
- }
- void loop()
- {
- if (( !( digitalRead(14) ) && digitalRead(18) ))
- {
- right();
- }
- else
- {
- if (( digitalRead(14) && !( digitalRead(18) ) ))
- {
- left();
- }
- else
- {
- if (( !( digitalRead(14) ) && !( digitalRead(18) ) ))
- {
- stop();
- }
- else
- {
- forwards();
- }
- }
- }
- }
- void stop()
- {
- analogWrite(5 , 0);
- analogWrite(9 , 0);
- analogWrite(6 , 0);
- analogWrite(10 , 0);
- }
- void right()
- {
- analogWrite(5 , 150);
- analogWrite(9 , 0);
- analogWrite(6 , 0);
- analogWrite(10 , 150);
- }
- void forwards()
- {
- analogWrite(5 , 150);
- analogWrite(9 , 0);
- analogWrite(6 , 150);
- analogWrite(10 , 0);
- }
- void left()
- {
- analogWrite(5 , 0);
- analogWrite(9 , 150);
- analogWrite(6 , 150);
- analogWrite(10 , 0);
- }
复制代码
4. 资料下载
资料内容:
①【R023】-灰度循迹2-例程源代码
②【R023】-灰度循迹2-样机3D文件
资料下载地址:https://www.robotway.com/h-col-113.html
想了解更多机器人开源项目资料请关注 机器谱网站 https://www.robotway.com
|