Огромное спасибо!
Очень Вам благодарен!
Автоматизация робота
-
- beginner
- Сообщения: 44
- Зарегистрирован: 02 ноя 2009, 12:40
- Версия LabVIEW: Labview2010
- Контактная информация:
Re: Автоматизация робота
Вы меня извините, но обратно проблема.
Пытаюсь разбить заданный отрезок между двумя точками на отрезки с минимальным шагом для более точного позиционирования.
Пытаюсь разбить заданный отрезок между двумя точками на отрезки с минимальным шагом для более точного позиционирования.
- Вложения
-
- Test_forum.vi
- (49.89 КБ) 118 скачиваний
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Автоматизация робота
Увертюра была многообещающая:
Вам же нужно вычислить координаты промежуточных точек, были предложения использовать аппарат интерполяции.
Если это сложно, то начните с вычисления средней точки, в результате вы отрезок разобьете пополам.
Получившиеся отрезки можно разбить еще раз, получится 3 промежуточных точки. И т.д. и т.п. ......
А по хорошему Вам нужно вычислить направляющий вектор, задать шаг и двигаться от точки-1 в направлении точки-2, до ее достижения. Но это уже самостоятельно можете разобраться, конечно если Вам захочется.
Почему бы мне не податься в хирурги или стоматологи , пусть меня научат .Sergey писал(а):Решил продолжить улучшать алгоритм робота.
Вы не координаты точки вычисляете а расстояние между точками, тем более у Вас изначально 3D, а формула используется для 2D, координату z куда дели?Sergey писал(а):Пытаюсь разбить заданный отрезок между двумя точками на отрезки с минимальным шагом для более точного позиционирования.
Вам же нужно вычислить координаты промежуточных точек, были предложения использовать аппарат интерполяции.
Если это сложно, то начните с вычисления средней точки, в результате вы отрезок разобьете пополам.
Получившиеся отрезки можно разбить еще раз, получится 3 промежуточных точки. И т.д. и т.п. ......
А по хорошему Вам нужно вычислить направляющий вектор, задать шаг и двигаться от точки-1 в направлении точки-2, до ее достижения. Но это уже самостоятельно можете разобраться, конечно если Вам захочется.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- beginner
- Сообщения: 44
- Зарегистрирован: 02 ноя 2009, 12:40
- Версия LabVIEW: Labview2010
- Контактная информация:
Re: Автоматизация робота
Спасибо за подсказки!
Попробую разобраться.
Я вот только подумал по поводу замечаний. Да фигура 3D, но пока что я пытаюсь реализовать хотя бы XY, поэтому координату Z делаю константой.
По поводу предложенных расчетов.
Сначала я нахожу общее расстояние между точками X1 и Х2, Y1 и Y2 (по формуле сумма квадратов расстояний между точками под корнем).
Потом зная какой минимальный шаг (К) робот хорошо отрабатывает (например, 1мм), делением общего расстояния на этот коэффициент получаю количество точек необходимых на эту длину.
Затем, на примере координаты Х, определяю какое будет расстояние между точками (Х2-Х1)/К=L.
Далее к координате Х1 прибавляю L и таким образом набираю нужную длину.
Это я попытался реализовать в предложенном примере, но почему то конечное решение не совпадает с нужной длинной отрезка.
Попробую разобраться.
Я вот только подумал по поводу замечаний. Да фигура 3D, но пока что я пытаюсь реализовать хотя бы XY, поэтому координату Z делаю константой.
По поводу предложенных расчетов.
Сначала я нахожу общее расстояние между точками X1 и Х2, Y1 и Y2 (по формуле сумма квадратов расстояний между точками под корнем).
Потом зная какой минимальный шаг (К) робот хорошо отрабатывает (например, 1мм), делением общего расстояния на этот коэффициент получаю количество точек необходимых на эту длину.
Затем, на примере координаты Х, определяю какое будет расстояние между точками (Х2-Х1)/К=L.
Далее к координате Х1 прибавляю L и таким образом набираю нужную длину.
Это я попытался реализовать в предложенном примере, но почему то конечное решение не совпадает с нужной длинной отрезка.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Автоматизация робота
Смотрите, например Вам нужно перейти из т. A(2,1,3) в т. B(5,8,7).Sergey писал(а):Сначала я нахожу общее расстояние между точками X1 и Х2, Y1 и Y2 (по формуле сумма квадратов расстояний между точками под корнем).
Потом зная какой минимальный шаг (К) робот хорошо отрабатывает (например, 1мм), делением общего расстояния на этот коэффициент получаю количество точек необходимых на эту длину.
Затем, на примере координаты Х, определяю какое будет расстояние между точками (Х2-Х1)/К=L.
Далее к координате Х1 прибавляю L и таким образом набираю нужную длину.
Это я попытался реализовать в предложенном примере, но почему то конечное решение не совпадает с нужной длинной отрезка.
Для этого необходимо сместиться B-A: dx=3, dy=7, dz=4, можно это записать как вектор AB(3, 7, 4).
Допустим, что система нормально работает при значении шага по каждой из координат ds<=0.2.
Получаем количество шагов: Step=max(3, 7, 4)/0.2 = 7/0.2 = 35
Вычисляем вектор сдвига за один шаг: dAB = AB(3, 7, 4)/Step = (0.0857, 0.2, 0.1143)
Получается, что стартуя из точки A(2,1,3), сдвигаясь каждый раз на dAB(0.0857, 0.2, 0.1143) за количество шагов Step=35 мы придем в точку B(5,8,7).
это с учетом округлений, по хорошему последний шаг нужно делать переход именно в точку B(5,8,7) по абсолютным координатам, а не относительным.
------------
Вот и вся петрушка.
Почитайте еще: http://www.cleverstudents.ru/line_and_p ... _line.html
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- beginner
- Сообщения: 44
- Зарегистрирован: 02 ноя 2009, 12:40
- Версия LabVIEW: Labview2010
- Контактная информация:
Re: Автоматизация робота
Спасибо за очень понятное разъяснение!
Я с этим разобрался и все понятно.
В примере, который сбрасывал, я так и пытался сделать, только не векторно, а отдельно с каждой координатой.
Пока я не разобрался как это сделать в лабвью.
Ну ничего буду пробовать разобраться.
Надо немного времени.
Если я разберусь, то постараюсь выложить результат.
Я с этим разобрался и все понятно.
В примере, который сбрасывал, я так и пытался сделать, только не векторно, а отдельно с каждой координатой.
Пока я не разобрался как это сделать в лабвью.
Ну ничего буду пробовать разобраться.
Надо немного времени.
Если я разберусь, то постараюсь выложить результат.
-
- beginner
- Сообщения: 44
- Зарегистрирован: 02 ноя 2009, 12:40
- Версия LabVIEW: Labview2010
- Контактная информация:
Re: Автоматизация робота
Вобщем доделал!
Выкладываю, то что получилось, хотя конечно кривовато можно было бы и лучше, но работает.
Завтра постараюсь проверить в железе.
Планирую приступать к выборке информации с файла txt.
Вернее оно уже немного написано, но кое-что не получается.
Обратно надеюсь на Вашу помощь!
Выкладываю, то что получилось, хотя конечно кривовато можно было бы и лучше, но работает.
Завтра постараюсь проверить в железе.
Планирую приступать к выборке информации с файла txt.
Вернее оно уже немного написано, но кое-что не получается.
Обратно надеюсь на Вашу помощь!
- Вложения
-
- Test_forum.vi
- (72.68 КБ) 105 скачиваний
-
- beginner
- Сообщения: 44
- Зарегистрирован: 02 ноя 2009, 12:40
- Версия LabVIEW: Labview2010
- Контактная информация:
Re: Автоматизация робота
Здравствуйте уважаемые Знатоки!
Вот возник еще один вопрос.
Доставил в проект передачу данных и проблема.
VISA: (Hex 0xBFFF000E) The given session or object reference is invalid.
Пытался поставить visa close за циклом while но при соединении пишет ошибку. Потому, что когда я вывожу соединения с цикла for оно превращается в 1D array и не соединяется с visa close.
А без visa close выдает ошибку, которую я написал выше.
Как это решить уже не знаю. Пытался много раз, чтобы на форуме не тревожить никого, но другого выхода нету как спросить совета.
Вот возник еще один вопрос.
Доставил в проект передачу данных и проблема.
VISA: (Hex 0xBFFF000E) The given session or object reference is invalid.
Пытался поставить visa close за циклом while но при соединении пишет ошибку. Потому, что когда я вывожу соединения с цикла for оно превращается в 1D array и не соединяется с visa close.
А без visa close выдает ошибку, которую я написал выше.
Как это решить уже не знаю. Пытался много раз, чтобы на форуме не тревожить никого, но другого выхода нету как спросить совета.
- Вложения
-
- Test_forum_2.vi
- (77.84 КБ) 104 скачивания
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Автоматизация робота
Ну, вы как будто только вчера открыли.Sergey писал(а):Пытался поставить visa close за циклом while но при соединении пишет ошибку. Потому, что когда я вывожу соединения с цикла for оно превращается в 1D array и не соединяется с visa close.
А без visa close выдает ошибку, которую я написал выше.