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

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文件等资料详见 扫地机器人

相关推荐
XMAIPC_Robot2 小时前
RK3588+STM32:高性能机器人运动控制解决方案,兼顾实时性与AI算力
人工智能·stm32·嵌入式硬件·算法·fpga开发·机器人·arm+fpga
M-Robots echo5 小时前
王成录:黑客松不只是赛事,是开源机器人生态快速试错、挖掘创新的试验场
机器人·ros·鸿蒙·具身智能·开源社区·m-robots
xiangzhihong85 小时前
零基础学AI之机器学习原理
人工智能·机器学习·机器人
沐梯子18 小时前
具身智能爆发前夜的“数据饥渴”:2026机器人数据采集产业链选型解析
大数据·人工智能·机器人
消失的旧时光-194320 小时前
第 5 篇:Android 与机器人主控之间,指令、回执、超时和重试怎么设计?
机器人·tcp通信·ack·sequence
YFJ_mily1 天前
【紧急截稿提醒】MRCS 2026第三届机电一体化、机器人与控制系统国际会议|EI/Scopus双检索|9月11日截止投稿
机器人·工业自动化·机器人控制·机电一体化·控制系统·rdlink研发家·驻马店会议
别动我齐刘海1 天前
机器学习基础2——C++、OpenCV、点云、Open3D
c++·人工智能·opencv·机器学习·计算机视觉·机器人·ros2
消失的旧时光-19431 天前
第 4 篇:TCP 字节流中的粘包、半包与机器人协议解析
机器人·tcp·通信协议·半包·粘包
某林2121 天前
从“仿真能跑”到“真机能走”:一套轮腿机械狗强化学习系统的工程化实践
人工智能·stm32·嵌入式硬件·架构·机器人·机械狗
消失的旧时光-19431 天前
补充篇:机器人为什么都需要“指令中心”?——从服务机器人到割草机器人
机器人·割草机·commandcenter