Автоматизированная инвалидная коляска с голосовым управлением

itrobo
Offline
Зарегистрирован: 14.04.2019

система механического управления джойстиком инвалидной коляски с помощью голосовых команд. Инвалид говорит команду например: вперед, вправо, влево. Ардуино обрабатывает звуковые команды и с помощью серовприводов управляет родным манипулятором инвалиднйо коляски. Плсю в том что не нужно разбирать дорогостоящий пульт коляски.

Принципиальная схема системы

Подробнее о системе голосового управления коляской

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Схема упрощённая или сервы прямо к пинам подключены?

И я что-то не нашёл скетча, ни здесь, ни по ссылке.

itrobo
Offline
Зарегистрирован: 14.04.2019

просто поделились идеей. в простой версии маленькие синие сервомашинки использовались, их без шилда можно, для крупных сервоприводов можно и сервошилд использовать.

 Здесь главное идея, может кто-нибудь заинтересуется. Идея в том чтобы не разбирая  один манипулятор, управлять им с помощью ардуино устройства, иммитируя руку человека.

Еще одна идея -управление удаленно с помощью световых сигналов. Ардиуно система шлет  команды в виде световых сигналов, другая система принимает их с помощью датчиков света или фоторезисторов, обрабатывает их, расшифровывает и выполняет. Плюс таких систем в простоте и универсальности: любая система легко связывается с другой без перепрошивки

Прототип сделали ученики 6 класса , управление лего ev3 с помощью световых сигналов 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так в реальности это не сделано? Только идея? Почему скетча-то нет?

itrobo
Offline
Зарегистрирован: 14.04.2019

скетч

#include <SoftwareSerial.h>
#include <TimerOne.h>
#include "VoiceRecognitionV3.h"
#include <DFPlayer_Mini_Mp3.h>
#include <Servo.h> 

SoftwareSerial  mySerial ( 5 ,  4);

VR myVR(3, 2);    // 2:RX 3:TX, you can choose your favourite pins.
uint8_t records[7];
uint8_t buf[64];
int led = 13;
#define forwardRecord    (0)
#define backRecord   (1)
#define leftRecord (2)
#define rightRecord (3)
#define stopRecord (4)
/**
  @brief   Print signature, if the character is invisible, 
           print hexible value instead.
  @param   buf     --> command length
           len     --> number of parameters
*/
Servo myservo;

int p=0;
void forward(){  
  myservo.write(73);  
  delay(500);
  mp3_play (2);
  delay(1000);
    digitalWrite(13,HIGH);   
  }
 void back(){
  myservo.write(113);  
  delay(500);   
  mp3_play (3);
  delay(1000);
     digitalWrite(13,LOW);
  }
 void left(){
  p=1;
  mp3_play (4);
  delay(1000);
  digitalWrite(13,HIGH);
  }
 void right(){
  p=2;
  mp3_play (5);
  delay(1000);
  digitalWrite(13,LOW);
  }
 void stope(){
     
  mp3_play (6);
  delay(1000);
  digitalWrite(13,HIGH);
  myservo.write(93);  
  delay(500);
  
  }
void printSignature(uint8_t *buf, int len)
{
    int i;
    for(i = 0; i < len; i++) {
        if (buf[i]>0x19 && buf[i]<0x7F) {
            Serial.write(buf[i]);
        } else {
            Serial.print("[");
            Serial.print(buf[i], HEX);
            Serial.print("]");
        }
    }
}
/**
  @brief   Print signature, if the character is invisible, 
           print hexible value instead.
  @param   buf  -->  VR module return value when voice is recognized.
             buf[0]  -->  Group mode(FF: None Group, 0x8n: User, 0x0n:System
             buf[1]  -->  number of record which is recognized. 
             buf[2]  -->  Recognizer index(position) value of the recognized record.
             buf[3]  -->  Signature length
             buf[4]~buf[n] --> Signature
*/
void printVR(uint8_t *buf)
{
    Serial.println("VR Index\tGroup\tRecordNum\tSignature");
    Serial.print(buf[2], DEC);
    Serial.print("\t\t");
    if (buf[0] == 0xFF) {
        Serial.print("NONE");
    } else if (buf[0]&0x80) {
        Serial.print("UG ");
        Serial.print(buf[0]&(~0x80), DEC);
    } else {
        Serial.print("SG ");
        Serial.print(buf[0], DEC);
    }
    Serial.print("\t");
    Serial.print(buf[1], DEC);
    Serial.print("\t\t");
    if (buf[3] > 0) {
        printSignature(buf+4, buf[3]);
    } else {
        Serial.print("NONE");
    }
    Serial.println("\r\n");
}
void setup(){
  
  myservo.attach(12);
  
  Serial.begin (9600);
  mySerial.begin (9600);
  mp3_set_serial (mySerial);  //set softwareSerial for DFPlayer-mini mp3 module 
  delay(1);                     // delay 1ms to set volume
  mp3_set_volume (15);          // value 0~30
   
   pinMode(13,OUTPUT);

    myVR.begin(9600);
    Serial.begin(115200);
    Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample");
    pinMode(led, OUTPUT);
    if (myVR.clear() == 0) {
        Serial.println("Recognizer cleared.");
    } else {
        Serial.println("Not find VoiceRecognitionModule.");
        Serial.println("Please check connection and restart Arduino.");
        while(1);
    }
    if (myVR.load((uint8_t)forwardRecord ) >= 0) {
        Serial.println("forwardRecord loaded");
    }
    if (myVR.load((uint8_t)backRecord ) >= 0) {
        Serial.println("backRecord loaded");
    }
    if (myVR.load((uint8_t)leftRecord) >= 0) {
        Serial.println("leftkRecord loaded");
    }
    if (myVR.load((uint8_t)rightRecord ) >= 0) {
        Serial.println("rightRecord loaded");
    }
        if (myVR.load((uint8_t)stopRecord ) >= 0) {
        Serial.println("stopRecord loaded");
    }
    
    Timer1.initialize(100000);
    delay(100);
    mp3_play (1);
    delay(1000);
}

void timerIsr()
{
    digitalWrite(13, digitalRead(13) ^ 1);
}
void loop()
{
 
    int ret;
    ret = myVR.recognize(buf, 50);
    if (ret > 0) {
        switch(buf[1]){
            case forwardRecord :
                forward();
                Timer1.detachInterrupt();
                break;
            case backRecord :
                back();
                Timer1.detachInterrupt();
                break;
            case leftRecord:
                left();
                Timer1.detachInterrupt();
                break;  
            case rightRecord:
                right();       
                Timer1.detachInterrupt();
                break;
            case stopRecord:
                stope();       
                Timer1.detachInterrupt();
                break;
            default:
                Timer1.detachInterrupt();
                Serial.println("Record function undefined");
                break;
        }
        printVR(buf);
    }
}

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

А что, операции "влево" и "вправо" никаких серв не крутят? Только звук проигрывают? 

itrobo
Offline
Зарегистрирован: 14.04.2019

в упрощенной версии   было оставлено только два сервопривода, они отводили джойстик управления коляски вправо влево, вперед назад. прототип конечно нужно дорабатывать и доводить до совершенства. может кто-нибудь придумает более совершенное устройство манипулятора на основе сервоприводов

bwn
Offline
Зарегистрирован: 25.08.2014

Это, новый способ делать подарки пензионному фонду? Коляска, с ее массушкой на ускореньице, особой опасности окружающим не представляет, но несет вполне реальную своему владельцу с таким подходом. ИМХО.

itrobo
Offline
Зарегистрирован: 14.04.2019

для безопасности в коляску можно добавить систему типа партроник. она вообще просто делается датчик расстояния, если приближаемся к препятствию , тормозим

bwn
Offline
Зарегистрирован: 25.08.2014

itrobo пишет:

для безопасности в коляску можно добавить систему типа партроник. она вообще просто делается датчик расстояния, если приближаемся к препятствию , тормозим

А если к лестничному проему?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

bwn пишет:

А если к лестничному проему?

то молимся. 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А если лево-право перепутает?
А там обрыв (дорога).

bwn
Offline
Зарегистрирован: 25.08.2014

trembo пишет:
А если лево-право перепутает? А там обрыв (дорога).

Не если, а обязательно перепутает. Обращали внимание, сколько людей говорят вправо, указывая в другую сторону?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Надо делать, чтобы понимала команду "вон туда!" :)

itrobo
Offline
Зарегистрирован: 14.04.2019

bwn пишет:

itrobo пишет:

для безопасности в коляску можно добавить систему типа партроник. она вообще просто делается датчик расстояния, если приближаемся к препятствию , тормозим

А если к лестничному проему?

А для этого была разработана специальная система предупреждения о препятствиях и ямах для слепых

 

itrobo
Offline
Зарегистрирован: 14.04.2019

ЕвгенийП пишет:

Надо делать, чтобы понимала команду "вон туда!" :)

можно доработать систему , прикрепив гироскоп к голове, чтобы как в вертолетах военных умный шлем:)  

bwn
Offline
Зарегистрирован: 25.08.2014

Ну, не наю, не наю. Водителей колясок жалко, им и так уже хреново.((((

P/S Кто еще считает, что это в "Отвлеченные" надо отправить?

itrobo
Offline
Зарегистрирован: 14.04.2019

bwn пишет:

Ну, не наю, не наю. Водителей колясок жалко, им и так уже хреново.((((

P/S Кто еще считает, что это в "Отвлеченные" надо отправить?

о данным министерства труда и социальной защиты в России насчитывается 12,8 миллиона инвалидов, это чуть менее 9 процентов от численности населения. Инвалиды первой, самой тяжелой, группы в России составляют около 13 процента от общей численности инвалидов, это около 1,66 миллиона человек 

вообще тема медицинской робототехники это далеко не отвлеченная, а очень важная

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Да, но производство медицинской техники - лицензируемая деятельность.

Да и тема-то на уровне идеи, а не готового проекта (для которых предназначен данный раздел).

bwn
Offline
Зарегистрирован: 25.08.2014

Пока что, ваши идеи ведут к тотальному снижению их количества, под флагом заботы о их удобстве. ИМХО.
Пока не сумеете мне объяснить, почему такую удобную функцию не сделают водителям, машинистам, крановщикам, операторам котельных и т.д., я останусь при своем мнении.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

bwn пишет:

Пока что, ваши идеи ведут к тотальному снижению их количества, под флагом заботы о их удобстве.

мошт, это очередная госпрограмма по ликвидации инвалидности. 

itrobo
Offline
Зарегистрирован: 14.04.2019

похоже мы уже отстали с голосовым управлением,тут уже силой мысли управляют :)

http://news.rambler.ru/scitech/39915204-novosibirskiy-inzhener-sozdal-invalidnuyu-kolyasku-upravlyaemuyu-siloy-mysli/

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

itrobo пишет:

похоже мы уже отстали с голосовым управлением,тут уже силой мысли управляют :)

http://news.rambler.ru/scitech/39915204-novosibirskiy-inzhener-sozdal-invalidnuyu-kolyasku-upravlyaemuyu-siloy-mysli/

 

тогда надо все разобрать и напица. 

itrobo
Offline
Зарегистрирован: 14.04.2019

DetSimen пишет:

itrobo пишет:

похоже мы уже отстали с голосовым управлением,тут уже силой мысли управляют :)

http://news.rambler.ru/scitech/39915204-novosibirskiy-inzhener-sozdal-invalidnuyu-kolyasku-upravlyaemuyu-siloy-mysli/

 

тогда надо все разобрать и напица. 

разница немного в цене

там 500 тысяч, у нас порядка 10 плюс стандартная коляска еще плюс тысяч 200