Езда за объектом

vasiaplaton
Offline
Зарегистрирован: 13.04.2015

Езда за объектом.Ща все распишу

Имеем:

Комната, какой-то спецальный неподвижный объект, arduino, тележка, мотор шилд и все-все-все(есть алгоритм который огибает препятствия с помощью УЗ датчика(Arduino и все-все-все едет из китая)).

Нужно:

Ставим робота и он едет по направлению к спецальному неподвижному объекту огибая препятствия с помощью УЗ

и ещё если не трудно проверьти код

#include <Ultrasonic.h>
//Объявляем переменные
char incomingbyte; // переменная для приема данных
//motors A (RIGHT)
int R_A_IA = 9; // A-IA
int R_A_IB = 10; // A-IB
//motors B (LEFT)
int L_B_IA = 11; // B-IA
int L_B_IB = 12; // B-IB
//Радар
Ultrasonic ultrasonic(5, 6);
//Или 8
//Инициализация переменных
void setup() {
  Serial.begin(38400);
  //motors RIGHT
  pinMode(R_A_IA,OUTPUT);
  digitalWrite(R_A_IA, HIGH);
  pinMode(R_A_IB,OUTPUT);
  digitalWrite(R_A_IB, HIGH);
  //motors LEFT
  pinMode(L_B_IA,OUTPUT);
  digitalWrite(L_B_IA, HIGH);  
  pinMode(L_B_IB,OUTPUT);
  digitalWrite(L_B_IB, HIGH); 
}

void go_forward(){
  //motors LEFT
  digitalWrite(L_B_IA, LOW);  
  digitalWrite(L_B_IB, HIGH); 
  //motors RIGHT
  digitalWrite(R_A_IA, LOW);
  digitalWrite(R_A_IB, HIGH);
}

void go_back(){
  //motors LEFT
  digitalWrite(L_B_IA, HIGH);  
  digitalWrite(L_B_IB, LOW); 
  //motors RIGHT
  digitalWrite(R_A_IA, HIGH);
  digitalWrite(R_A_IB, LOW);
}

void go_right(){
  //motors LEFT
  digitalWrite(L_B_IA, LOW);  
  digitalWrite(L_B_IB, HIGH); 
  //motors RIGHT
  digitalWrite(R_A_IA, LOW);
  digitalWrite(R_A_IB, LOW);
}

void go_left(){
  //motors LEFT
  digitalWrite(L_B_IA, LOW);  
  digitalWrite(L_B_IB, LOW); 
  //motors RIGHT
  digitalWrite(R_A_IA, LOW);
  digitalWrite(R_A_IB, HIGH);
}

void stop_robot(){
  //motors LEFT
  digitalWrite(L_B_IA, LOW);  
  digitalWrite(L_B_IB, LOW); 
  //motors RIGHT
  digitalWrite(R_A_IA, LOW);
  digitalWrite(R_A_IB, LOW);
}

//Основной цикл программы
void loop() {      
  float distcm = ultrasonic.Ranging(CM); //измеряем расстояние  в см.
  if( (distcm<=10)&&(distcm>0) ){//если до препятствия менее 10 см.
  stop_robot();
  go_right();
  go_forward();
  //ИЛИ НЕ едем впреред 
  } 
  else 
  {
    go_forward();
  }
}

 

Araris
Offline
Зарегистрирован: 09.11.2012

vasiaplaton пишет:

Езда за объектом.

...

Ставим робота и он едет по направлению к спецальному неподвижному объекту огибая препятствия с помощью УЗ

Видимо, имеется в виду езда к объекту, то есть поиск и достижение его ? Тогда откуда робот узнает направление на Спецальный Неподвижный Объект (сильно названо, боюсь даже себе представить))), как робот придерживается этого направления ? Уточните пожалуйста решаемую задачу, без этого о приведенном скетче говорить бессмысленно.

vasiaplaton
Offline
Зарегистрирован: 13.04.2015

имеется в виду езда к объекту, то есть поиск и достижение его 

Тогда откуда робот узнает направление на Спецальный Неподвижный Объект? Вот это и хотел спросить.

Araris
Offline
Зарегистрирован: 09.11.2012

В общем случае на объект ставится метка/маркер/маячок (световая/цветовая/ИК/звуковая/другая), робот ее обнаруживает и пытается двигаться к ней, постоянно уточняя пеленг. Можно еще объект лазером подсвечивать, но это немного из другой области. В любом случае, задача достаточно сложная, УЗ датчиком не обойдетесь. Разве что если значительно упростить начальные условия, например, движение к точечному источнику света в темной комнате.

vasiaplaton
Offline
Зарегистрирован: 13.04.2015

Насчет радиомаячка : допустим он посылает сигналы в эфир а робот определяет где он по уровню сигнала вращаещмся датчиком(где выше уровень), только датчик должен быть узко-направленный.

Но можно и движение к точечному источнику света в темной комнате

zhenious
Offline
Зарегистрирован: 03.07.2014

vasiaplaton пишет:

и ещё если не трудно проверьти код

1. строчки 78 - 79 :

после go_right(); нужна задержка, чтобы дать время для поворота.

2. объезд препятствия подразумевает объезд, а не уход направо.

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

vasiaplaton
Offline
Зарегистрирован: 13.04.2015

zhenious, спасибо