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

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

相关推荐
想要成为计算机高手2 小时前
半成品的开源双系统VLA模型,OpenHelix-发表于2025.5.6
人工智能·深度学习·计算机视觉·自然语言处理·机器人·开源·vla
热心市民R先生1 天前
启用rvzi可视化自己的机器人发现joint state publisher gui没有滑块
机器人
风暴智能1 天前
获取相机图像(ROS2)
linux·机器人·无人机
一颗小树x1 天前
【机器人】复现 SG-Nav 具身导航 | 零样本对象导航的 在线3D场景图提示
机器人·零样本·具身导航·对象导航
Blossom.1182 天前
使用Python实现简单的人工智能聊天机器人
开发语言·人工智能·python·低代码·数据挖掘·机器人·云计算
硅谷秋水2 天前
学习以任务为中心的潜动作,随地采取行动
人工智能·深度学习·计算机视觉·语言模型·机器人
虹科智能自动化2 天前
虹科应用 | 探索PCAN卡与医疗机器人的革命性结合
机器人·工业4.0·pcan
MocapLeader2 天前
VR和眼动控制集群机器人的方法
目标跟踪·机器人·人机交互·vr·虚拟现实·多机器人协同
FL171713142 天前
MATLAB机器人系统工具箱中的loadrobot和importrobot
人工智能·matlab·机器人
sy_cora2 天前
IEEE 列表会议第五届机器人、自动化与智能控制国际会议
运维·人工智能·机器人·自动化