驴友花雕 发表于 2025-7-10 18:18:24

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

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”并安装它。



























驴友花雕 发表于 2025-7-10 18:20:54

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

项目代码

#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;
    int i = 0;
    char *ptr = strtok((char *)input.c_str(), ",");
    while (ptr != NULL) {
      values = atoi(ptr);
      ptr = strtok(NULL, ",");
    }

    // Control the robot using the joystick values
    int leftX = values;
    int leftY = values;
    int rightX = values;
    int rightY = values;

    // 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();
}

驴友花雕 发表于 2025-7-10 18:24:14

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

【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





页: [1]
查看完整版本: 【Arduino 动手做】SLIDE全向轮机器人平台