Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс

Компоненты и материалы

Arduino UNO×1
PHPoC WiFi Shield для Arduino×1
6DOF робот-манипулятор×1

О проекте

Для новичков рекомендую изучить: Arduino — Motor, Servo Motor, WiFi.

1. Демонстрация

(Видео в оригинале)

2. Пользовательский интерфейс

Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс
Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс

Робот имеет 6 моторов:

3. Архитектура системы

Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс

4. Алгоритм работы

Клиентская часть (веб-интерфейс на JavaScript+HTML+CSS): при касании/клике получаем координаты (x,y). Для зоны A нужны геометрические расчёты углов моторов 2,3,4 (см. раздел 5).

Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс

Серверная часть (Arduino): получает набор углов, плавно двигает все 6 моторов одновременно. Для плавности каждый мотор движется малыми шагами с паузами. Шагов одинаковое количество (stepNum), но величина шага (step) разная для каждого мотора. stepNum выбирается максимальным.

Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс
Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс

5. Геометрические расчёты (зона A)

Задача: известны фиксированная точка C, целевая точка D (ввод пользователя), длины звеньев CB=b, BA=a, AD=d. Найти углы C, B, A. Предполагаем ∠B = ∠A = α. Вводим доп. точки и отрезки.

Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс
Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс

Расчёт через теорему косинусов в треугольнике CDE, решение квадратного уравнения для α, затем β = π – α, γ через систему уравнений из теоремы косинусов в треугольниках BDC и BDA. Итоговые углы моторов 2,3,4: (δ+γ), β, β.

Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс
Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс
Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс
Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс
Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс

6. Исходный код

Два файла:

Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс

RobotArmWeb.ino (Arduino)

#include <Phpoc.h> 
#include <Servo.h> 
int angle_init[] = {90, 101, 165, 153, 90, 120}; 
int angle_offset[] = {0, 11, -15, -27, 0, 137}; 
int cur_angles[] = {90, 101, 165, 153, 90, 120}; 
int dest_angles[] = {0, 0, 0, 0, 0, 0}; 
int angle_max[] = {180, 180, 160, 120, 180, 137}; 
int angle_min[] = { 0, 0, 0, 20, 0, 75}; 
int direction[] = {1, 1, 1, 1, 1 ,-1}; 
int angleSteps[] = {3, 2, 2, 2, 4 ,4}; 
Servo servo[6]; 
PhpocServer server(80); 
PhpocClient client; 
int stepNum = 0; 
void setup(){ 
 Serial.begin(9600); 
 Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); 
 server.beginWebSocket("remote_arm"); 
 for(int i=0;i<6;i++) servo[i].attach(i+2); 
 for(int i=0;i<6;i++) servo[i].write(angle_init[i]); 
} 
void loop() { 
 client = server.available(); 
 if(client) { 
 String angleStr = client.readLine(); 
 if(angleStr) { 
 // парсинг 6 углов через запятую 
 int commaPos1 = -1; 
 for(int i=0;i<5;i++){ 
 int commaPos2 = angleStr.indexOf(',', commaPos1+1); 
 int angle = angleStr.substring(commaPos1+1, commaPos2).toInt(); 
 dest_angles[i] = angle * direction[i] + angle_offset[i]; 
 commaPos1 = commaPos2; 
 } 
 int angle5 = angleStr.substring(commaPos1+1).toInt(); 
 dest_angles[5] = angle5 * direction[5] + angle_offset[5]; 
 stepNum = 0; 
 for(int i=0;i<6;i++){ 
 int dif = abs(cur_angles[i] - dest_angles[i]); 
 int step = dif / angleSteps[i]; 
 if(stepNum < step) stepNum = step; 
 } 
 } 
 } 
 if(stepNum > 0){ 
 for(int i=0;i<6;i++){ 
 int angleStepMove = (dest_angles[i] - cur_angles[i]) / stepNum; 
 cur_angles[i] += angleStepMove; 
 if(cur_angles[i] > angle_max[i]) cur_angles[i] = angle_max[i]; 
 else if(cur_angles[i] < angle_min[i]) cur_angles[i] = angle_min[i]; 
 servo[i].write(cur_angles[i]); 
 } 
 stepNum--; 
 delay(20); 
 } 
}

remote_arm.php (PHP/JS веб-приложение)

<!DOCTYPE html> 
<html> 
<head> 
<title>Arduino - Arm Robot - Web</title> 
<meta name="viewport" content="width=device-width, initial-scale=0.9"> 
<style> body { text-align: center; } canvas { background-color: #FFFFFF; } </style> 
<script> 
// ... полный код веб-интерфейса с Canvas, WebSocket, геометрическими расчётами, управлением зонами A-D, отрисовкой робота и отправкой углов на Arduino ...
</script> 
</head> 
<body> 
<h2>Arduino - Control Arm Robot via Web</h2> 
<canvas id="servo"></canvas> 
<p>WebSocket : <span id="ws_state">null</span><br></p> 
<button id="wc_conn" type="button" onclick="wc_onclick();">Connect</button> 
</body> 
</html>

Схема

Требуется внешний источник питания для 6 моторов.

Удалённое управление 6‑осевым роботами-манипулятором Arduino через веб-интерфейс

Производственный процесс

  1. Simple Pi Robot — Сборка 2WD автономного ровера на Raspberry Pi
  2. Arduino Power Control Center: N-FET, P-FET, реле и RTC
  3. Удаленное IoT-управление самодельной манипулятором
  4. Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
  5. Автономный линий-следующий робот на Arduino UNO
  6. DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
  7. Arduino UNO + WiFi Shield: реальный график температуры в вебе через Serial
  8. LittleArm 2C: 3D-печатаемый робот-манипулятор на Arduino для STEM-обучения
  9. Автономный домашний помощник-робот: полный список деталей и руководство по настройке (ROS, Alexa, MoveIt)
  10. Набор для создания робота с умной внутренней навигацией на базе Arduino