roboforum.ru

Технический форум по робототехнике.
Текущее время: 15 апр 2025, 17:54

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: трех координатная интерполяция приводов ШД (шагов. двигат.)
СообщениеДобавлено: 05 апр 2006, 23:24 
Не в сети

Зарегистрирован: 26 мар 2006, 02:45
Сообщения: 11
Откуда: Воткинск
возник вопрос как можно перемещать сразу три координаты в одну точку например
x1=10;y1=5;z1=25;
x2=20;y2=10;z2=12;
т.е. задаются точки координат начальные и конечные как в алгоритме все того же самого Брезенхема, только там применялся с двухмерной проекцией, а мне надо еще как то третью приспособить.
спасибо за любую помощь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 апр 2006, 23:53 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Я делал так:
По Х надо пройти А шагов
По Y - B
По Z - C

Значит ищем D = наименьшее общее кратное A, B и С
Запускаем цикл из D шагов.
Каждый A-тый шаг двигаем X-мотор
Каждый B-тый шаг двигаем Y-мотор
Каждый C-тый шаг двигаем Z-мотор

осле этого цикла попадаем в нужную точку +-1 по каждой координате. Корректируем и все ОК.

В общем как-то так. Если надо подробнее - дам в виде куска кода.

В новой версии это сделано тремя независимыми процессами с разделением во времени (элементарная многозадачность)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 апр 2006, 01:44 
Не в сети

Зарегистрирован: 26 мар 2006, 02:45
Сообщения: 11
Откуда: Воткинск
этот кусок кода большой получился, если да то пришли по адресу basv_@mail.ru, если нет то здесь покажи что у тебя вышло.
пишу в CodeVisionAVR


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 апр 2006, 02:30 
Не в сети
Модератор

Зарегистрирован: 11 ноя 2004, 03:18
Сообщения: 1274
Откуда: Москва
Дык просто же все, но писать долго, если коротко то принимаем самую длинную прекцию за 1 (мах. скорость двигателя), скорости двух других двигателей пропорционально отношению проекций с учетом знака.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 апр 2006, 14:35 
Не в сети

Зарегистрирован: 26 мар 2006, 02:45
Сообщения: 11
Откуда: Воткинск
спасибо конечно, но я кажется сам домыслил. А суть такова,
вводим начальные и конечные точки координат расчитываем дельта
т.е. расстояние от точки до точки затем ищем наибольшее из отрезков ,
этот наибольший отрезок делим на все три найденые дельта, эти полученные числа преобразуем в целое , затем в программе ставим для каждой координаты условия совпадения счетчиков такта: пример
a:=1, b:=10, c:=3  это есть числа после деления
if L=a то координата Х ; L:=0(при совпадении сбрасываем счетчик)
if M=b то координата Y ; M:=0
if N=c то координата Z ; N:=0
L:=L+1, M:=M+1, N:=N+1 эти счетчики внутри цикла движения
и считают постоянно.
так вот теперь возник вопрос о том насколько плавно будут переходы из точки в точку до конечной точки координат. И еще теперь размышляю как осуществить постоянное вращение двигателя в ПРИМЕРЕ приведенном здесь по координате X так как а:=1 т.е. как только L=1 то двигатель должен быть включен, координата Y через девять тактов счетчика M , координата Z включится через два такта счетчика N и пройдя какое-то расстояние выключится.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO