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

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 小时前
机器人矩阵运算MATLAB计算
matlab·矩阵·机器人
狐狐生风10 小时前
LangChain实现简易版-----PDF 文档问答机器人
人工智能·langchain·机器人·pdf·prompt
2601_9579648711 小时前
水下机器人锂电池厂家解析(ROV/AUV/UUV电源系统解决方案)【浩博电池】
机器人
AI进化营-智能译站11 小时前
ROS2 C++开发系列19-枚举定义机器人状态机|随机数生成仿真测试数据流
java·c++·ai·机器人
weixin_3862123912 小时前
20260502 杭州机器人仿真岗位整理
机器人
AI进化营-智能译站1 天前
ROS2 C++开发系列12-用多态与虚函数构建可扩展的ROS2机器人行为模块
开发语言·c++·ai·机器人
平原君20881 天前
SLAM 08.后端-非线性优化
机器人·自动驾驶
05候补工程师1 天前
【ROS 2 具身智能】Gazebo 仿真避坑指南:从“幽灵机器人”到传感器数据流打通
人工智能·经验分享·笔记·ubuntu·机器人
AI进化营-智能译站1 天前
ROS2 C++开发系列07-高效构建机器人决策逻辑,运算符与控制流实战
开发语言·c++·ai·机器人
2601_958320571 天前
【小白零基础上手 】钉钉内部机器人接入 OpenClaw 完整流程讲解(含安装包)
人工智能·windows·机器人·钉钉·open claw·open claw安装