当前位置: 首页 > news >正文

小型双轮差速底盘双灰度循迹功能的实现

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小车状态动作
01小车左偏向右调整
10小车右偏向左调整
11到达终点停止
00正常前进

① 根据实验内容,利用多分支结构设计出程序流程图。

机器人轨迹导航任务流程图

② 根据设计好的程序流程图进行编程,编写并烧录以下程序(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 athttps://opensource.org/licenses/MITby 机器谱 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);}


​资料内容详见 小型双轮差速底盘-双灰度循迹

http://www.lryc.cn/news/31484.html

相关文章:

  • 电子签名?玩具罢了!
  • 【Spring Boot读取配置文件的方式】
  • java学习路线规划
  • 格密码学习笔记(二):连续极小、覆盖半径和平滑参数
  • ios 通过搜索设备MAC地址绑定
  • Python实现人脸识别,进行视频跟踪打码,羞羞的画面统统打上马赛克
  • vcf bed起始位置是0还是1
  • Hexo+live2d | 如何把live2d老婆放进自己的博客
  • 【微信小程序】-- 页面导航 -- 导航传参(二十四)
  • Pytorch学习笔记#2: 搭建神经网络训练MNIST手写数字数据集
  • C语言 猜名次、猜凶手、杨辉三角题目详解
  • 蚁群算法负荷预测
  • ubuntu添加系统服务实现开机root权限运行
  • 【阅读笔记】你不知道的Javascript--类与类型委托3
  • 文件服务设计
  • 【批处理脚本】-1.22-字符串界定符号 ““
  • 【Flutter·学习实践·UI篇】基础且重要的UI知识
  • 【OpenCV】车牌自动识别算法的设计与实现
  • SpringBoot发送邮件
  • BigInteger类和BigDecimal类的简单介绍
  • mysql五种索引类型---实操版本
  • 【微信小程序】-- 页面导航 -- 编程式导航(二十三)
  • 路由追踪工具 traceroute 使用技巧
  • NGINX学习笔记 - 一篇了解NGINX的基本概念(一)
  • Spring-Cloud-Gateway的过滤器的执行顺序问题
  • Android性能优化的底层逻辑
  • Gradle+SpringBoot多模块开发
  • Qt 之 emit、signals、slot的使用
  • 每日学术速递3.6
  • C# 将对象转换成字节数组(二进制数据)