机器人制作开源方案 | 扫地机器人

1. 功能描述

扫地机器人是现代家庭清洁的得力助手,能够自主规划清扫路径,避开障碍物,有效覆盖整个清洁区域。扫地机器人的出现极大地减轻了家庭清洁的负担,节省了时间和精力,它可以定期清理地面,确保家居环境的整洁和卫生,让家里变得更加舒适、无尘和宜居。

本文示例将实现R058a样机扫地机器人在行进过程中避障并清扫垃圾的功能。

2. 电子硬件

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

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

3. 功能实现

**编程环境:**Arduino 1.8.19

下面提供一个实现扫地机器人在行进过程中避障并清扫垃圾的参考程序(sketch_sep14a.ino):

java 复制代码
/*------------------------------------------------------------------------------------

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

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

#include <Servo.h>

Servo left_wheel;     // 左轮

Servo right_wheel;    // 右轮

#define forward_speed_left   60   // 小车前进时,左轮速度

#define forward_speed_right   120   // 小车前进时,右轮速度

#define back_speed_left      120   // 小车后退时,左轮速度

#define back_speed_right     60   // 小车后退时,右轮速度

#define turnleft_speed_left   120   // 小车左转时,左轮速度

#define turnleft_speed_right 120   // 小车左传时,右轮速度

#define turnright_speed_left 60   // 小车右转时,左轮速度

#define turnright_speed_right 60   // 小车右转时,右轮速度

#define stop_left            90   // 小车停止时,左轮速度

#define stop_right           90   // 小车停止时,右轮速度

#define obstacle_threshold   500   // 触须传感器阈值

#define ir_threshold         800   // 近红外传感器阈值

int left_obstacle_sensor;   // 左侧触须传感器

int right_obstacle_sensor;   // 右侧触须传感器

int ir_sensor;              // 近红外传感器

void setup() {

  delay(50);

  Serial.begin(9600);

  left_wheel.attach(3);   // 定义左右轮引脚

  right_wheel.attach(4);

  pinMode(A0, INPUT);   // 左边触须传感器接口

  pinMode(A2, INPUT);   // 右边触须传感器接口

  pinMode(A3, INPUT);   // 前面近红外传感器接口

}

void loop() {

  left_obstacle_sensor = analogRead(A0);   // 读取左边触须传感器值

  right_obstacle_sensor = analogRead(A2);   // 读取右边触须传感器值

  ir_sensor = analogRead(A3);              // 读取近红外传感器值

  // 如果左边传感器检测到障碍物,执行后退并向右转操作

  if (left_obstacle_sensor > obstacle_threshold) {

    backRight();

  }

  // 如果右边传感器检测到障碍物,执行后退并向左转操作

  else if (right_obstacle_sensor > obstacle_threshold) {

    backLeft();

  }

  // 如果前面近红外传感器检测到障碍物,执行后退操作

  else if (ir_sensor > ir_threshold) {

    back();

  }

  // 如果都没有检测到障碍物,执行前进操作

  else {

    forward();

  }

}

// 小车前进

void forward() {

  left_wheel.write(forward_speed_left);

  right_wheel.write(forward_speed_right);

}

// 小车后退

void back() {

  left_wheel.write(back_speed_left);

  right_wheel.write(back_speed_right);

}

// 小车后退左转

void backLeft() {

  left_wheel.write(back_speed_left);

  right_wheel.write(turnleft_speed_right);

}

// 小车后退右转

void backRight() {

  left_wheel.write(turnright_speed_left);

  right_wheel.write(back_speed_right);

}

// 小车停止

void stop() {

  left_wheel.write(stop_left);   // 停止

  right_wheel.write(stop_right); // 停止

}

4. 扩展样机

本样机有一些简单的扩展案例,如下图所示将舵机更换为直流电机:

程序源代码及样机3D文件等资料详见 扫地机器人

相关推荐
资源开发与学习3 天前
机器人运动规划源码解析
机器人
hi0_64 天前
机器学习实战(一): 什么是机器学习
人工智能·机器学习·机器人·机器学习实战
大视码垛机4 天前
速度与安全双突破:大视码垛机重构工业自动化新范式
大数据·数据库·人工智能·机器人·自动化·制造
WWZZ20254 天前
视觉SLAM第10讲:后端2(滑动窗口与位子图优化)
c++·人工智能·后端·算法·ubuntu·机器人·自动驾驶
deephub4 天前
机器人逆运动学进阶:李代数、矩阵指数与旋转流形计算
人工智能·机器学习·矩阵·机器人·李群李代数
武子康4 天前
AI-调查研究-76-具身智能 当机器人走进生活:具身智能对就业与社会结构的深远影响
人工智能·程序人生·ai·职场和发展·机器人·生活·具身智能
小鹿清扫日记4 天前
从蛮力清扫到 “会看路”:室外清洁机器人的文明进阶
人工智能·ai·机器人·扫地机器人·具身智能·连合直租·有鹿巡扫机器人
shuidaoyuxing4 天前
机器人防爆的详细讲解
机器人
物联网软硬件开发-轨物科技5 天前
【轨物方案】赋能绿色能源新纪元:轨物科技发布光伏清洁机器人智能控制与运维解决方案
科技·机器人·能源
尤齐5 天前
《机器人抓取:从经典到现代的综述》内容的提取和凝练:
机器人