Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Управление манипулятором с 6 степенями свободы одним пальцем.


В прошлом письме я рассказывал об управлении двухосевой платформой с помощью программного джойстика. А что делать, если степеней свободы больше двух? У меня получился вот такая реализация интерфейса.

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

1. Вместо картезианской системы координат удобнее использовать полярные координаты. Это позволило в явном виде получить угол поворота для сервомотора в основании манипулятора.

y1=new Float(y)/180*1000;

Cur_serv_0 =1500- (int) y1;

2. Для управления положением остальных сервомоторов я исходил из следующего предположения: если задать два крайних положения моторчиков – клешня максимально прижата к станине, и клешня максимально вытянута вбок, то все промежуточные положения каждого из сервомоторов можно описать линейной функцией от крайних положений.

Крайние положения заданы в массиве

servo_pos=new int[5][2];

//положения серв- servo_pos[х][0]клешня прижата к основанию

// - servo_pos[х][1] клешня практически горизонтальна

servo_pos[1][0]=1622;

servo_pos[1][1]=2190;

servo_pos[2][0]=2256;

servo_pos[2][1]=1592;

servo_pos[3][0]=830;

servo_pos[3][1]=1324;

servo_pos[4][0]=1400;

servo_pos[4][1]=1866;

Текущее положение сервомоторов определяется так:

x1=new Float(x)/100;

Cur_serv_1=calc_pos(x1,1);

Cur_serv_2=calc_pos(x1,2);

Cur_serv_3=calc_pos(x1,3);

public int calc_pos(float x1, int i){

return servo_pos[i][0]+(int) ((servo_pos[i][1]-servo_pos[i][0])*x1);

}

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

private int servo3(int Cur_serv){

int dec=30;

if (btn_down.isPressed()){

Cur_serv-=dec;

}

else if (btn_up.isPressed()) Cur_serv+=dec;

return Cur_serv;

}

Скомпилированные примеры из сегодняшней рассылки и исходники кода скачать здесь

Установка программ и начало работы с IOIO

Использованное оборудование:

- плата IOIO

- 6 servo robot ARM

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


В избранное