如何实现双轮差速底盘躲避悬崖的功能?

该实验通过在R023小型双轮差速底盘前安装3个近红外传感器,配合Arduino主控板进行编程,实现机器人在检测到悬崖(桌面边缘)时自动转向避开。程序中定义了不同的电机控制函数,当传感器读取到悬崖信号时,机器人会执行左转、右转或后退的动作。此外,文章提到可替换灰度或白标传感器来优化避障效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 功能说明

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

 2. 电子硬件

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

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

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

 3. 示例程序

编程环境:Arduino 1.8.19

编写并烧录以下程序(nine.ino),该程序将实现演示视频中的动作。

/*------------------------------------------------------------------------------------

  版权说明: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-10 https://www.robotway.com/                               

------------------------------------------------------------------------------------*/

void Right();

void Left();

void Stop();

void Forward();

void Back();



void setup()

{

  pinMode( 17, INPUT);

  pinMode( 18, INPUT);

  pinMode( 14, INPUT);

  pinMode( 10, OUTPUT);

  pinMode( 6, OUTPUT);

  pinMode( 5, OUTPUT);

  pinMode( 9, OUTPUT);

}



void loop()

{

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

  {

    Forward();

  }

  if (( digitalRead(14) ))

  {

    Left();

    delay( 300 );

  }

  if (( digitalRead(17) ))

  {

    Right();

    delay( 300 );

  }

  if (( digitalRead(18) ))

  {

    Back();

    delay( 1000 );

    analogWrite(5 , 100);

    analogWrite(6 , 0);

    analogWrite(9 , 0);

    analogWrite(10 , 100);

    delay( 1500 );

  }

}



void Right()

{

  analogWrite(5 , 0);

  analogWrite(6 , 0);

  analogWrite(9 , 100);

  analogWrite(10 , 0);

}



void Forward()

{

  analogWrite(5 , 100);

  analogWrite(6 , 0);

  analogWrite(9 , 100);

  analogWrite(10 , 0);

}



void Back()

{

  analogWrite(5 , 0);

  analogWrite(6 , 100);

  analogWrite(9 , 0);

  analogWrite(10 , 100);

}



void Left()

{

  analogWrite(5 , 100);

  analogWrite(6 , 0);

  analogWrite(9 , 0);

  analogWrite(10 , 0);

}



void Stop()

{

  analogWrite(5 , 0);

  analogWrite(6 , 0);

  analogWrite(9 , 0);

  analogWrite(10 , 0);

}

4. 扩展

      本实验采用3个近红外传感器,利用的是近红外传感器能够识别到距离较近的桌面,无法识别到距离较远的地面,因此桌面要距离地面远一些。

      本实验还可以使用灰度传感器或者白标传感器。利用的是灰度和白标在悬崖处极难收到反射回来的红外线的原理,因此相应的桌面必须是浅色,如果桌面也是深色,灰度和白标传感器就无法区分桌面和悬崖了。

如何实现双轮差速底盘躲避悬崖功能的详细资料请参考 小型双轮差速底盘-躲避悬崖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值