回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【Arduino 动手做】SLIDE全向轮机器人平台 简单

头像 驴友花雕 2025.07.10 5 0

S.L.I.D.E (Seamless locomotion in diverse environments) 是一个全向轮平台,旨在探索全能机器人的各种应用。

SLIDE 是一个开源项目,旨在教育和探索整体机器人的世界。SLIDE 可以在各种室内环境中实施,例如仓库、餐厅或医院,由于人员接近,传统机器人的导航更加困难。Holonomic 机器人可以轻松地在狭小空间内导航,因为它们可以向任何方向行驶。

该项目的目的不是用于商业应用,而是用于教育目的。一般来说,学生们会追求传统的驾驶机器人,如滑移转向或 Ackerman 驾驶。该项目旨在展示 holonomic 驱动器的酷炫应用,并可能增加对该领域的一些兴趣。

Arduino 将通过 USB 电缆连接到 RPI,并从 RPI USB 获取电源。扩展板将直接连接到 12V 电源。虽然盾牌位于 Arduino 的顶部,但只要将跳线设置为如下所示,它就不会从中汲取能量。

法典

我们将使用 Arduino IDE 对 Arduino 进行编程以控制步进电机,并使用 Processing 来运行纵杆接口。处理程序将在 Raspberry PI 上运行。在视频中,我正在使用手机通过 VNC 服务器连接到 RPI,您也可以使用您的 PC 并使用鼠标移动纵杆。

Arduino 代码

我们将使用 AccelStepper 库来处理电机控制和串行通信,以接收纵杆值。本指南将介绍必要的库、安装步骤和代码背后的逻辑。

必需的库

AccelStepper:此库允许您轻松控制步进电机。它支持各种类型的驾驶员,并提供速度控制、加速等功能。
MultiStepper:此库有助于同时管理多个步进电机。
安装库

要安装这些库,请执行以下步骤:

打开 Arduino IDE。
转到 Sketch > Include Library > Manage Libraries...
在 Library Manager 中,搜索 “AccelStepper” 并单击 “Install” 按钮。
同样,搜索“MultiStepper”并安装它。

 

01.jpg
01-.jpg
02.jpg
03.jpg
04.jpg
05.jpg
06.jpg
07.jpg
08.jpg
09.jpg
10.jpg
11.jpg
12.jpg

项目代码

 

代码
#include <AccelStepper.h>
#include <MultiStepper.h>

// Define the number of steps per revolution for your stepper motors
#define STEPS_PER_REVOLUTION 3200 // 200 steps/rev * 16 (1/16th microstepping)

// Define the pins for each stepper motor
#define MOTOR1_STEP_PIN 2
#define MOTOR1_DIR_PIN 5
#define MOTOR2_STEP_PIN 3
#define MOTOR2_DIR_PIN 6
#define MOTOR3_STEP_PIN 4
#define MOTOR3_DIR_PIN 7
#define MOTOR4_STEP_PIN 12
#define MOTOR4_DIR_PIN 13

// Define the maximum speed and acceleration for the stepper motors
#define MAX_SPEED 2000
#define ACCELERATION 500

// Create instances of AccelStepper for each motor
AccelStepper stepperX(AccelStepper::DRIVER, MOTOR1_STEP_PIN, MOTOR1_DIR_PIN);
AccelStepper stepperY(AccelStepper::DRIVER, MOTOR2_STEP_PIN, MOTOR2_DIR_PIN);
AccelStepper stepperZ(AccelStepper::DRIVER, MOTOR3_STEP_PIN, MOTOR3_DIR_PIN);
AccelStepper stepperA(AccelStepper::DRIVER, MOTOR4_STEP_PIN, MOTOR4_DIR_PIN);

void setup() {
  // Set up the serial connection for communication with the PC
  Serial.begin(115200);

  // Set up each stepper motor with max speed and acceleration
  stepperX.setMaxSpeed(MAX_SPEED);
  stepperX.setAcceleration(ACCELERATION);

  stepperY.setMaxSpeed(MAX_SPEED);
  stepperY.setAcceleration(ACCELERATION);

  stepperZ.setMaxSpeed(MAX_SPEED);
  stepperZ.setAcceleration(ACCELERATION);

  stepperA.setMaxSpeed(MAX_SPEED);
  stepperA.setAcceleration(ACCELERATION);
}

void loop() {
  // Check if data is available on the serial port
  if (Serial.available() > 0) {
    // Read the CSV values
    String input = Serial.readStringUntil('\n');
    int values[4];
    int i = 0;
    char *ptr = strtok((char *)input.c_str(), ",");
    while (ptr != NULL) {
      values[i++] = atoi(ptr);
      ptr = strtok(NULL, ",");
    }

    // Control the robot using the joystick values
    int leftX = values[0];
    int leftY = values[1];
    int rightX = values[2];
    int rightY = values[3];

    // Calculate motor speeds based on joystick values
    int motorXSpeed = leftX - rightX;
    int motorYSpeed = leftY - rightX;
    int motorZSpeed = -leftX - rightX;
    int motorASpeed = -leftY - rightX;

    // Set motor speeds
    stepperX.setSpeed(motorXSpeed);
    stepperY.setSpeed(motorYSpeed);
    stepperZ.setSpeed(motorZSpeed);
    stepperA.setSpeed(motorASpeed);
  }

  // Move each motor
  stepperX.runSpeed();
  stepperY.runSpeed();
  stepperZ.runSpeed();
  stepperA.runSpeed();
}

【Arduino 动手做】SLIDE全向轮机器人平台
项目链接:https://benchrobotics.com/arduino/slide-omniwheel-robot-platform/
项目作者:舒布汉姆·巴特
项目视频(5分钟):https://www.youtube.com/watch?v=CuAKjQ_rSYo&t=2s
项目代码:https://github.com/sastejugaad/SLIDE
https://github.com/sastejugaad/SLIDE/blob/main/SLIDE_Joystick_v1/SLIDE_Joystick_v1.ino
3D 文件:https://grabcad.com/library/slide-omniwheel-robot-platform-1

 

00.jpg
00186--.gif

评论

user-avatar
icon 他的勋章
    展开更多