Движение лазерного луча по произвольной траектории (маркер цели) + определение попадания

Тема в разделе "Посоветуйте детальки", создана пользователем EvgenJekson, 29 ноя 2016.

  1. rkit

    rkit Гуру

    Еще наведение резкости участвует.
     
  2. EvgenJekson

    EvgenJekson Нерд

    А кто-нибудь возьмется на платной основе написать расчет движения серво по предполагаемой траектории?
    в качестве стартовых данных будут параметры расположения точки вылета тарелки относительно стрелка:
    * x1,y1,z1 - расположение точки вылета тарелки относительно стрелка (стрелок - 0,0,0) (полет как справа на лево, так и с лева на право). есть еще усложнения с тем, что одна машинка стреляет вперед и тарелка летит вперед и вниз, а вторая машинка стреляет вверх, и тарелка летит вверх
    * скорость полета тарелки (для упрощения не будем вычислять затухание, единственное разве что небольшую поправку на притяжение надо задать)
    * x2,y2,z2 - тасположение точки падения тарелки. они все примерно в одно место прилетают, если их не сбили.
    * расстояние серво относительно стены
    * высота серво от пола
    * высота глаза стрелка в x3,y3,z3 относительно серво

    этих данных должно быть достаточно для расчета движения лазера по стене?
    хотелось бы понять трудоемкость=цену такой работы...

    при необходимости могу составить более подробное ТЗ. с реальным исполнителем.
     
  3. mcureenab

    mcureenab Гуру

    Вам нужна математика или код?
    Математика
    1 расчет траектории. без учета аэродинамики, это парабола. или что то хитрее надо?
    2 расчет центральной проекции мишени на стену, относительно глаза. тут все известно.
    3 преобразование декартовых координат проекции в полярные координаты машинки. тут тоже все известно.
     
  4. EvgenJekson

    EvgenJekson Нерд

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

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

    на выходе нужна функция, которая будет отдавать координаты точки лезерного луча на стене с учетом прошедшего времени с начала выстрела.
     
  5. mcureenab

    mcureenab Гуру

    Надо бы уже сформулировать требования к точности. Время в МК течет дискретно. 24 шага в секунду будет достаточно? Сколько времени летит цель? Какая точность позиционирования нужна? Чем дальше проектор от стены, тем заметнее будут погрешности.
     
  6. mcureenab

    mcureenab Гуру

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

    Arkad_snz Гик

    Есть еще один подход к решению задачи. Хорош тем, что математика - для первоклассника.
    Привязываем к стене оси Х и У, точка (0,0) в левом верхнем углу.
    Включаем лазер, и настраиваем сервы так, чтобы горизонтальная пробегала лучом всю стену слева направо (фи1 - от 0 до 256, а Х на стене - от 0 до Хмакс=ширинестены), а вертикальная - аналогично всю стену сверху вниз.
    Теперь запускаем сервы сканировать всю стену, навроде кадровой развертки ТВ- экрана.
    Теперь функции Х(фи1), и У(фи2) - очевидны, как и обратные им.
    Выключаем лазер, и включам его на 1мс в момент, когда У(фи2)=F(Х(фи1), где F(х) - требуемая кривулька.
    Если условие У(фи2)=F(Х(фи1) разрешить относительно углов, то можно легко найти функцию фи2(фи1), которая позволяет чертить нужную кривульку включенным лазером.
     
    Последнее редактирование: 2 дек 2016
  8. mcureenab

    mcureenab Гуру

    Проецирование точки (x, y, z) на плоскость z=0 в точку (x*, y*) с глазом в точке (0, 0, -zc):
    x* = x / ( 1 - z/zc ) ;
    y* = y / ( 1 - z/zc ).


    http://sernam.ru/book_mm3d.php?id=66
     
    Последнее редактирование: 2 дек 2016
  9. mcureenab

    mcureenab Гуру

    Преобразование точки (x*, y*) в углы (p, q) машинки с координатами (-x', -y', -z').
    tg(p)=(x*+x')/z', tg(q)=(y*+y')/sqrt(z'z'+(x*+x')(x*+x')).