36浏览
查看: 36|回复: 2

[项目] 【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”并安装它。

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

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

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

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

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

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

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

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

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

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

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

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

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

驴友花雕  中级技神
 楼主|

发表于 前天 18:20

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

项目代码

  1. #include <AccelStepper.h>
  2. #include <MultiStepper.h>
  3. // Define the number of steps per revolution for your stepper motors
  4. #define STEPS_PER_REVOLUTION 3200 // 200 steps/rev * 16 (1/16th microstepping)
  5. // Define the pins for each stepper motor
  6. #define MOTOR1_STEP_PIN 2
  7. #define MOTOR1_DIR_PIN 5
  8. #define MOTOR2_STEP_PIN 3
  9. #define MOTOR2_DIR_PIN 6
  10. #define MOTOR3_STEP_PIN 4
  11. #define MOTOR3_DIR_PIN 7
  12. #define MOTOR4_STEP_PIN 12
  13. #define MOTOR4_DIR_PIN 13
  14. // Define the maximum speed and acceleration for the stepper motors
  15. #define MAX_SPEED 2000
  16. #define ACCELERATION 500
  17. // Create instances of AccelStepper for each motor
  18. AccelStepper stepperX(AccelStepper::DRIVER, MOTOR1_STEP_PIN, MOTOR1_DIR_PIN);
  19. AccelStepper stepperY(AccelStepper::DRIVER, MOTOR2_STEP_PIN, MOTOR2_DIR_PIN);
  20. AccelStepper stepperZ(AccelStepper::DRIVER, MOTOR3_STEP_PIN, MOTOR3_DIR_PIN);
  21. AccelStepper stepperA(AccelStepper::DRIVER, MOTOR4_STEP_PIN, MOTOR4_DIR_PIN);
  22. void setup() {
  23.   // Set up the serial connection for communication with the PC
  24.   Serial.begin(115200);
  25.   // Set up each stepper motor with max speed and acceleration
  26.   stepperX.setMaxSpeed(MAX_SPEED);
  27.   stepperX.setAcceleration(ACCELERATION);
  28.   stepperY.setMaxSpeed(MAX_SPEED);
  29.   stepperY.setAcceleration(ACCELERATION);
  30.   stepperZ.setMaxSpeed(MAX_SPEED);
  31.   stepperZ.setAcceleration(ACCELERATION);
  32.   stepperA.setMaxSpeed(MAX_SPEED);
  33.   stepperA.setAcceleration(ACCELERATION);
  34. }
  35. void loop() {
  36.   // Check if data is available on the serial port
  37.   if (Serial.available() > 0) {
  38.     // Read the CSV values
  39.     String input = Serial.readStringUntil('\n');
  40.     int values[4];
  41.     int i = 0;
  42.     char *ptr = strtok((char *)input.c_str(), ",");
  43.     while (ptr != NULL) {
  44.       values[i++] = atoi(ptr);
  45.       ptr = strtok(NULL, ",");
  46.     }
  47.     // Control the robot using the joystick values
  48.     int leftX = values[0];
  49.     int leftY = values[1];
  50.     int rightX = values[2];
  51.     int rightY = values[3];
  52.     // Calculate motor speeds based on joystick values
  53.     int motorXSpeed = leftX - rightX;
  54.     int motorYSpeed = leftY - rightX;
  55.     int motorZSpeed = -leftX - rightX;
  56.     int motorASpeed = -leftY - rightX;
  57.     // Set motor speeds
  58.     stepperX.setSpeed(motorXSpeed);
  59.     stepperY.setSpeed(motorYSpeed);
  60.     stepperZ.setSpeed(motorZSpeed);
  61.     stepperA.setSpeed(motorASpeed);
  62.   }
  63.   // Move each motor
  64.   stepperX.runSpeed();
  65.   stepperY.runSpeed();
  66.   stepperZ.runSpeed();
  67.   stepperA.runSpeed();
  68. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 18:24

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail