admin

ПУЛЬТ УПРАВЛЕНИЯ РОБОСОБАКОЙ

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

РОБОТРЕК ПЕРЕД РАЗМЕЩЕНИЕМ РОБОТА

В поле зрения интернет-робособаки размещаются различные объекты, в частности, впереди размещается сервопривод с радиолокатором.

 admin

ИМИТАЦИОННАЯ МОДЕЛЬ РОБОПСА

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


#include <pololu/orangutan.h>

int main(){
//обращение к АЦП5
set_analog_mode(MODE_8_BIT);
int avg=0; start_analog_conversion(5);  
// переменные фильтра
int sum=0; int samples=0; int c=0;
// скорости гусениц
int motorSpeed1=0; int motorSpeed2=0;  
while(1){ 
//фильтр накопления АЦП5
if (!analog_is_converting())
{ sum += analog_conversion_result();     
  start_analog_conversion(5);     
  if (++samples == 2)
  { avg = sum/2; samples = 0; sum = 0; 
  // вывод на LCD сигнала датчика расстояния
  clear(); lcd_goto_xy(0,0); print_long(avg); 
  }     
}
//включение поворота на короткой дистанции
green_led(0); red_led(0);
c=readcomport(c);
if (c==0)
{ motorSpeed1=0; motorSpeed2=0; }
if (c>0)
{ if (c==2) 
  { motorSpeed1=50; motorSpeed2=-50; }
  if (c==4) 
  { motorSpeed1=-50; motorSpeed2=50; }
  c=-5; writecomport(c); 
}
if (c<0)
{ c=c+1; 
  if (c==0) 
  { writecomport(c); }
}
if (avg>100) 
{ motorSpeed2=50; red_led(1); green_led(1);
}  
set_motors(motorSpeed1,motorSpeed2); 
// задержка визуализации
delay_ms(100);
}//while
}

%math, % ДИНАМИКА РОБОТА (ВИЗУАЛИЗАТОР iMATLAB),

%toolbox traffic, folder(robots/for/dog), 
if tick=0, writecomport(0); 
X=200, Y=150, a=0, t=0, Robot=robot(8), end,

function: readcomport(c),
if t=0, c=receive('command'), [t c]=?, end,
t=t+1, if t>10, t=0, end, 
return c, 
end,
function: writecomport(c),
'command'=send(c), %send(),
end,

function: set_motors(motorSpeed1 motorSpeed2), 
V=(motorSpeed1-motorSpeed2)/20,
a=a+(motorSpeed1+motorSpeed2)/500, X=X+cos(a)*V, Y=Y+sin(a)*V, 
turnat(Robot a), moveXat(Robot X), moveYat(Robot Y), 
if FlgRED=1, 
Robot[1][35]='#ff0000', else, 
Robot[1][35]='#ffbb55', end,
if FlgGREEN=1, 
Robot[1][31]='#00ff00', else,
Robot[1][31]='#ffbb55', end,
show(Robot),  
end,

function: lcd_goto_xy(x y), end,  
function: print_long(S), round(S)=?, end, 
function: set_analog_mode(MODE), end, 
function: start_analog_conversion(CANAL), end,
function: analog_is_converting(), return false, end,
//модель выхода датчика дистанции
function: analog_conversion_result(), 
if cos(a)<0, dx=X, else, dx=430-X, end, dx=abs(dx),  
if sin(a)<0, dy=Y, else, dy=300-Y, end, dy=abs(dy),
if dx>dy, D=150-dy, else, D=150-dx, end,
if D<0, D=0, end,  return round(D),
end,

 admin

ПРОЕКТИРУЕМ ВНУТРЕННИЙ МИР РОБОТА

Робот снабжен вебкамерой и датчиком расстояния - "эхолотом" Шарп. Его мир состоит из стола, с которым ему надо дружить, это его Вселенная, объектов наблюдения перед собой, к которым он осуществляет юстирующие вебкамеру удаления-приближения и края стола, с которого ему нужно не навернуться.

СЕТЕВАЯ МОДЕЛЬ ДИНАМИКИ РОБОСОБАКИ

Эту модель позволяет познакомиться с принципами программирования на C канала оптодатчика расстояния и организации обратной связи, для поворота робота от стенки. Динамика робота при этом моделируется на языке матричного исчисления iMatLab.


#include <pololu/orangutan.h>

int main(){
//обращение к АЦП5
set_analog_mode(MODE_8_BIT);
int avg=0; start_analog_conversion(5);  
// переменные фильтра
int sum=0; int samples=0;
// скорости гусениц
int motorSpeed1=0; int motorSpeed2=0;  
while(1){ 
//фильтр накопления АЦП5
if (!analog_is_converting())
{ sum += analog_conversion_result();     
  start_analog_conversion(5);     
  if (++samples == 2)
  { avg = sum/2; samples = 0; sum = 0; 
  // вывод на LCD сигнала датчика расстояния
  clear(); lcd_goto_xy(0,0); print_long(avg); 
  }     
}
//включение поворота на короткой дистанции
motorSpeed1=50; motorSpeed2=-50;
green_led(0); red_led(0);
if (avg>100) 
{ motorSpeed2=50; red_led(1); green_led(1);
}  
set_motors(motorSpeed1,motorSpeed2); 
// задержка визуализации
delay_ms(100);
}//while
}

%math, % ДИНАМИКА РОБОТА (ВИЗУАЛИЗАТОР iMATLAB),

%toolbox traffic, 
if tick=0, X=200, Y=150, a=0, Robot=robot(8), end,

function: set_motors(motorSpeed1 motorSpeed2), 
V=(motorSpeed1-motorSpeed2)/20,
a=a+(motorSpeed1+motorSpeed2)/500, X=X+cos(a)*V, Y=Y+sin(a)*V, 
turnat(Robot a), moveXat(Robot X), moveYat(Robot Y), 
if FlgRED=1, 
Robot[1][35]='#ff0000', else, 
Robot[1][35]='#ffbb55', end,
if FlgGREEN=1, 
Robot[1][31]='#00ff00', else,
Robot[1][31]='#ffbb55', end,
show(Robot),  
end,

function: lcd_goto_xy(x y), end,  
function: print_long(S), round(S)=?, end, 
function: set_analog_mode(MODE), end, 
function: start_analog_conversion(CANAL), end,
function: analog_is_converting(), return false, end,
//модель выхода датчика дистанции
function: analog_conversion_result(), 
if cos(a)<0, dx=X, else, dx=430-X, end, dx=abs(dx),  
if sin(a)<0, dy=Y, else, dy=300-Y, end,  dy=abs(dy),
if dx>dy, D=150-dy, else, D=150-dx, end,
if D<0, D=0, end,  return round(D),
end,

 admin

РОБОСОБАКА

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

СОСТАВНЫЕ ЧАСТИ РОБОТА

1. Гусеничная платформа RP5
2. Неттоп 3Q/Foxconn
3. Робоконтроллер SV328
4. Блок питания моторов 12в
5. Вебкамера
6. Кабель USB-COM

Энергетика невыключаемых роботов, один из сложных вопросов. Отсюда и идет идея собаки на цепи: и со стола не упадет, и питание подвести несложно.

Питание в 12 вольт достаточно для питания моторов и робоконтроллера SV328

Шнуром USB-COM управляемые робоконтроллером 'ноги' робота соединяются с неттопом 3Q/Foxconn, помещаемым на тележку.

Блочное строение позволяет легко присоединить к этим кубикам интернет и вебкамеру, в качестве головы. Вот, вкратце, концепция сборки такого робота.

Софт: пакет Visual MatLab имеет средства взаимодействия с интернет сервером и робоконтроллером, пример реализации: следящая система.

 admin

ЭНЕРГЕТИКА РОБОПСА

В этот день решена проблема постоянного энергопитания робота, фактический день рождения "долгожителя"

Сетевой адаптер 7.5В, 2А, для ходовых моторов, KIT PW0720B

Есть надежда, что такой адаптер справится. Чтобы не резать провод, надо еще гнездо питания, например, DJK_04A (штырь 2.1 мм, отверстие 5.5 мм).

Как питание привинчено

МОНТИРУЕМ СПИННОЙ МОЗГ

Для связи центральной и периферической нервных систем используется переходник USB-UART BM8051 (не путать с COM), это пластинка с микросхемой, монтируемая при помощи красных угольников рядом с робоконтроллером. Три проводка земля-TXD-RXD соединяются с земля-RX-TX микропроцессора (обычно PD0-PD1).

В робоконтроллер заливается программа управления моторами со стороны UART-моста и безусловные рефлексы - на передок крепится Sharp-оптопара различения препятствий.

Первое испытание, в качестве головного мозга к мосту прикручен тестовый компьютер с дисплеем, позволяющим видеть сигнал с датчика препятствий на экране.

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



Rambler's Top100