极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2152|回复: 0

小型双轮差速底盘躲避悬崖功能的实现

[复制链接]
发表于 2023-3-8 09:16:24 | 显示全部楼层 |阅读模式
本帖最后由 机器谱 于 2023-3-8 09:16 编辑

1. 功能说明
      本实验使用的样机为小型双轮差速底盘。在样机前方安装3个 近红外传感器 ,实现机器人躲避悬崖、在某平台上移动时不会掉下去的效果。



2. 电子硬件
    在这个示例中,我们采用了以下硬件,请大家参考

主控板Basra(兼容Arduino Uno)
扩展板Bigfish2.1
传感器近红外传感器
电池7.4V锂电池

    左轮直流电机连在D9,D10接口上;右轮直流电机连在D5,D6接口上;3个近红外传感器从左到右分别连在A0、A4、A3接口上。



3. 示例程序
编程环境:Arduino 1.8.19
编写并烧录以下程序(nine.ino),该程序将实现演示视频中的动作

  1. /*------------------------------------------------------------------------------------

  2.   版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

  3.            Distributed under MIT license.See file LICENSE for detail or copy at

  4.            https://opensource.org/licenses/MIT

  5.            by 机器谱 2023-02-10 https://www.robotway.com/                              

  6. ------------------------------------------------------------------------------------*/

  7. void Right();

  8. void Left();

  9. void Stop();

  10. void Forward();

  11. void Back();


  12. void setup()

  13. {

  14.   pinMode( 17, INPUT);

  15.   pinMode( 18, INPUT);

  16.   pinMode( 14, INPUT);

  17.   pinMode( 10, OUTPUT);

  18.   pinMode( 6, OUTPUT);

  19.   pinMode( 5, OUTPUT);

  20.   pinMode( 9, OUTPUT);

  21. }


  22. void loop()

  23. {

  24.   if (((!( digitalRead(14)) && ! (digitalRead(17)) ) ))

  25.   {

  26.     Forward();

  27.   }

  28.   if (( digitalRead(14) ))

  29.   {

  30.     Left();

  31.     delay( 300 );

  32.   }

  33.   if (( digitalRead(17) ))

  34.   {

  35.     Right();

  36.     delay( 300 );

  37.   }

  38.   if (( digitalRead(18) ))

  39.   {

  40.     Back();

  41.     delay( 1000 );

  42.     analogWrite(5 , 100);

  43.     analogWrite(6 , 0);

  44.     analogWrite(9 , 0);

  45.     analogWrite(10 , 100);

  46.     delay( 1500 );

  47.   }

  48. }


  49. void Right()

  50. {

  51.   analogWrite(5 , 0);

  52.   analogWrite(6 , 0);

  53.   analogWrite(9 , 100);

  54.   analogWrite(10 , 0);

  55. }


  56. void Forward()

  57. {

  58.   analogWrite(5 , 100);

  59.   analogWrite(6 , 0);

  60.   analogWrite(9 , 100);

  61.   analogWrite(10 , 0);

  62. }


  63. void Back()

  64. {

  65.   analogWrite(5 , 0);

  66.   analogWrite(6 , 100);

  67.   analogWrite(9 , 0);

  68.   analogWrite(10 , 100);

  69. }


  70. void Left()

  71. {

  72.   analogWrite(5 , 100);

  73.   analogWrite(6 , 0);

  74.   analogWrite(9 , 0);

  75.   analogWrite(10 , 0);

  76. }


  77. void Stop()

  78. {

  79.   analogWrite(5 , 0);

  80.   analogWrite(6 , 0);

  81.   analogWrite(9 , 0);

  82.   analogWrite(10 , 0);

  83. }
复制代码
4. 扩展
       本实验采用3个近红外传感器,利用的是近红外传感器能够识别到距离较近的桌面,无法识别到距离较远的地面,因此桌面要距离地面远一些。
       本实验还可以使用灰度传感器或者白标传感器。利用的是灰度和白标在悬崖处极难收到反射回来的红外线的原理,因此相应的桌面必须是浅色,如果桌面也是深色,灰度和白标传感器就无法区分桌面和悬崖了。

5. 资料内容
躲避悬崖-例程源代码
资料下载地址:https://www.robotway.com/h-col-113.html

想了解更多机器人开源项目资料请关注 机器谱网站 https://www.robotway.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 03:30 , Processed in 0.041629 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表