Теоретически может. Из аналитических расчётов максимальная скорость ~20см/сек. Но я не рискую запускать на полную - там пластиковые редукторы, может шестерни съесть.
По поводу сложной математики вы несколько заблуждаетесь. На самом деле, достаточно знать физику на уровне первого курса университета. Что касается управления, то тоже в общем-то не особо сложнее, чем если бы каждая серва отвечала за свою степень свободы. В моём случае координата лапы задаётся так:
Код:
inline float calculate_servo0_position(float z_coord, float az_coord)
{
const float x = az_coord * 1.24556040763854980000f + 0.50000000000000000000f;
const float x_1 = x, x_2 = x * x_1, x_3 = x * x_2;
const float y = z_coord * 0.01351351384073495900f + -0.64864861965179443000f;
const float y_1 = y, y_2 = y * y_1, y_3 = y * y_2;
return (-0.30742821097373962000f + -1.21247673034667970000f * y_1 + 0.80889540910720825000f * y_2 + -0.75817310810089111000f * y_3) +
x_1 * (1.22287416458129880000f + 2.14566111564636230000f * y_1 + -5.42543697357177730000f * y_2 + 4.22106027603149410000f * y_3) +
x_2 * (0.60016727447509766000f + -5.94708108901977540000f * y_1 + 14.01125717163085900000f * y_2 + -9.62817096710205080000f * y_3) +
x_3 * (0.16122572124004364000f + 3.06335139274597170000f * y_1 + -8.72798919677734370000f * y_2 + 6.08712720870971680000f * y_3);
}
inline float calculate_servo1_position(float z_coord, float az_coord)
{
const float x = az_coord * 1.24556040763854980000f + 0.50000000000000000000f;
const float x_1 = x, x_2 = x * x_1, x_3 = x * x_2;
const float y = z_coord * 0.01351351384073495900f + -0.64864861965179443000f;
const float y_1 = y, y_2 = y * y_1, y_3 = y * y_2;
return (-1.67683899402618410000f + 1.95054543018341060000f * y_1 + -0.66672599315643311000f * y_2 + 0.07815618067979812600f * y_3) +
x_1 * (2.90688586235046390000f + -0.55844748020172119000f * y_1 + -3.58689117431640620000f * y_2 + 3.22610092163085940000f * y_3) +
x_2 * (-1.08384442329406740000f + -3.24297237396240230000f * y_1 + 12.17271041870117200000f * y_2 + -8.63321113586425780000f * y_3) +
x_3 * (0.16122573614120483000f + 3.06335115432739260000f * y_1 + -8.72798919677734370000f * y_2 + 6.08712720870971680000f * y_3);
}
void set_position(float z_coord, float az_coord)
{
m_az_coord = az_coord;
m_z_coord = z_coord;
m_servo0.set_position(paws::calculate_servo0_position(m_z_coord, m_az_coord));
m_servo1.set_position(paws::calculate_servo1_position(m_z_coord, m_az_coord));
}
всё это на МК atmega32 на частоте 16Мгц высчитывается за 1мс. На at91sam7s256 вообще копейки.
MegaBIZON, я попозже выложу материалы. Сейчас делаю датчики силы. Нужно с ними закончить, отладить программу и пр. Тогда будет чем хвастаться

)