roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 13:17

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




Начать новую тему Ответить на тему  [ Сообщений: 437 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 30  След.
Автор Сообщение
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 19 июл 2015, 23:59 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
это от человека зависит. вам программирование совершенно не интересно, вот оно мимо и проходит. я же вам писал, что лучше делать то, что нравится и получается, остальную работу предоставить тем, кто лучше вас это сделает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 10:15 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
Angel71 писал(а):
это от человека зависит. вам программирование совершенно не интересно, вот оно мимо и проходит. я же вам писал, что лучше делать то, что нравится и получается, остальную работу предоставить тем, кто лучше вас это сделает.

солидарен с вами 8)

Добавлено спустя 8 минут 35 секунд:
Родил сегодня простенький скетч, написал как умею. Но сервомашинки быстро двигаются(не мудрено там ведь команды на поворот на заданный угол)
как сделать что бы они медленно двигались.
Подскажите плизз :sorry:





Добавлено спустя 27 минут 58 секунд:

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Последний раз редактировалось robovan 17 авг 2015, 01:02, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 14:38 
Не в сети
Аватара пользователя

Зарегистрирован: 07 сен 2014, 19:29
Сообщения: 645
Откуда: Севастополь
Skype: slom_3d
прог. языки: 3d max :)
жуть какая!
чтобы сделать протез вам нужны датчики взаимодействующие с человеком... четко определяющие что человек хочет сделать. далее нужен четкий софт и датчики обратной связи, чтобы программа знала в каком положении конечности находятся сейчас... в случае с ногами какаята инверсная кинематика, гироскопы для стабилизации и прочее. это все на самом деле безумно сложно.

а у вас извините какие то конвульсии серв, с задержкой дейли...

п.с. лучше бы вы доделали проект страйкбольного бота!
это в разы проще и дешевле. ответственности при производстве меньше, да и ввиду последних событий, на Украине как раз нужны такие боты, для того же разминироваения... лучше пусть машина на мине подорвется и колеса потеряет чем человек - ногу, и потом получит ваш протез, который поможет ему шею свернуть :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 16:15 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
slom писал(а):
жуть какая!
чтобы сделать протез вам нужны датчики взаимодействующие с человеком... четко определяющие что человек хочет сделать. далее нужен четкий софт и датчики обратной связи, чтобы программа знала в каком положении конечности находятся сейчас... в случае с ногами какаята инверсная кинематика, гироскопы для стабилизации и прочее. это все на самом деле безумно сложно.

а у вас извините какие то конвульсии серв, с задержкой дейли...

п.с. лучше бы вы доделали проект страйкбольного бота!
это в разы проще и дешевле. ответственности при производстве меньше, да и ввиду последних событий, на Украине как раз нужны такие боты, для того же разминироваения... лучше пусть машина на мине подорвется и колеса потеряет чем человек - ногу, и потом получит ваш протез, который поможет ему шею свернуть :)

Спасибо за совет конечно, но я сам решаю чем мне заниматься! :crazy:
Если интересен страйкольный бот, то пожалуйста. За ваши деньги любой каприз :wink:
А насчет сложно там и все такое, нужно самому понимать для чего это нужно и на основе этого уже конструировать

Добавлено спустя 3 минуты 3 секунды:
Вот то что я хочу сделать
у этого человека нет возможности двигать ногами. Какие датчики вы предлагаете использовать?)))) :D

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Последний раз редактировалось robovan 17 авг 2015, 01:08, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 16:19 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
программировать это умение составлять алгоритм, т.е. составлять последовательность действий. для этого нужно понимать что и как работает на достаточном для определённой задачи уровне. и только в последнюю очередь это знание языка. где-то в сторонке еще знание математики, физики и т.д.
тренируйся путешествовать во времени. есть несколько временных рядов, представь, что это рядышком лежит несколько старых фотоплёнок с разными размерами снимков. для микроконтроллера у тебя 2 или больше таких временных ряда, вот тебе и нужно вникать, в каком состоянии находится что-либо (серва, контроллер и т.д.) в каждый момент. нужно одновременно понимать, как всё работает в общем и как каждая штука в частности, уметь абстрагироваться и понимать, насколько детально что-то нужно рассматривать.
один временной ряд - это прерывание таймера, очень условно допустим с шагом 20мс. вот каждые 20мс прекращает работать основной код и мк начинает выполнять код ф-и прерывания, в которой в нужный момент на определённых ножках мк выставляется высокий или низкий уровень. потом этот код прекращает работать и продолжает выполнятся основной код. разобрался. допустим в основном коде ты уже присвоил переменным нужные значения (вызвал ф-ю servo.write). а теперь нажимаешь конопочку плэй и проигрываешь эту плёночку, смотря, что у тебя на сигнальном пине сервы. как-то так
Вложение:
s.png
s.png [ 64.34 КиБ | Просмотров: 2251 ]

у тебя есть сервы. им переодически подаётся управляющий сигнал, выше было предположение, что это с переодичностью 20мс. в секунде 1000мс, т.е. 50 раз в секунду. электроника сервы получает этот сигнал, получает данные с потенциометра (переменного резистора) и пытается вращать мотор, что бы провернуть вал в нужную позицию. как быстро будет проварачиваться вал это зависит от сервы и в данном случае может зависить от напряжения питания сервы и от нагрузки на валу. вот для сервы 20-ти миллисекундные интервалы. у микроконтроллера кроме ряда прерывания есть ряд, где основной код выполняется. у него совсем мелкий шаг - это такты микроконтроллера, а их за секунду миллионы (8млн или 16млн или ещё сколько). что происходит прям каждый такт в данном случае рассматривать не нужно, так что короткими перебежками.
Код:
void loop()
{
  servo3.write(10); // нога назад
  servo4.write(20); // колено разогнуто
  delay(500);
  servo3.write(60); // нога вперед
  servo4.write(60); // колено согнуть
  delay(500);
  servo4.write(20);  // колено разогнуть
  servo3.write(40);  // нога чуток назад
  delay(500);
}

задал положения для серв. ждешь пол секунды. опять задал положения. опять ждешь. в третий раз задал положение. опять ждешь. а потом весь цикл по новой.
абстрагирование. знаешь, что каждые 20мс на управляющих пинах для серв выставляются соответствующие уровни (в зависимости от неких переменных, которые ты задал через servo.write). что там как работает в этом прерывание для данной задачи, как серва сравнивает сигналы и управляет мотором, значения не имеет. абстрагируешся от этих ненужностей. т.е. у тебя остаётся два временых ряда - основной код и положение серв. примерно прикидываешь, на какой угол проворачивается серва за некий период. вот попробуй совместить эти два ряда и одновременно их проиграть. проигрывать это всё в уме или в экселе/на листочке табличкой чиселки записывать или ещё как значения не имеет, придумай как тебе удобней будет понимать, что и когда происходит. для понимания разницы между желаемым положением и реальным поиграйся с изменением значения задержки. замени в delay 500 на 1 и опять проиграй. замени на 2000 и проиграй. позаменяй углы в вызовах servo.write.
вот создавать алгоритм это в данном случае и означает придумывание, в какой момент какие значения задавать функцией servo.write и как это делать. можно потренироваться управлять скоростью вращения сервы. допустим задаёшь для сервы почти крайнее положение (10, 20, 160 или 170 или ещё какой угол, который для твоей сервы безопасно устанавливать), делаешь задержку в 1-2 секунды. а потом в цикле с небольшой задержкой понемногу меняй угол
Код:
int servoDelay=15;

Код:
void loop(){
for (pos=20; pos<=160; pos=pos+1) {
  servo.write(pos);
  delay(servoDelay);
}
for (pos=160; pos>=20; pos=pos-1) {
  myPointer.write(pos);
  delay(servoDelay);
}

или так
Код:
void loop(){
servoDelay=15;
servo.write(20);
delay(2000);
for (pos=20; pos<=160; pos=pos+1) {
  servo.write(pos);
  delay(servoDelay);
}

поиграйся со значениями. а потом можно усложнить, управляя двумя сервами. выставляешь первоначальное значение, делаешь достаточную задержку и с небольшими задержками изменяешь значение желаемого положения для серв. знаешь, с какой примерно скоростью вал вращается? начальные положения такие-то, а за некое время хочешь переместить в такие-то. вот и вычисляешь значения задержек и на какой угол проворачивать.
поигравшись так, можно и с другим вариантом пробовать. для дуни есть возможность получать значение миллисекунд, прошедших с момента включения дуни. https://www.arduino.cc/en/reference/millis. присвоив переменной в каком-нибудь месте это значение получаешь возможность определять, сколько времени прошло с некоего момента. вот зная первоначальное положение, желаемое конечное и за какое время оно должно в него переместится, можно вычислять, какое положение задавать при вызове servo.write. накидал примерно как это может выглядеть
Код:
void loop() {
  int pos = 0;
  int tergetPos = 110;
  unsigned long time, diff;
  unsigned long travelTime = 1500; //milliseconds
  servo.write(20);
  delay(2000);
  time = millis();
  while(pos < tergetPos)
  {
    diff = time - millis();
    pos = вычисли здесь сам;
    servo.write(pos);
  }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 16:39 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
спасибо, буду пытаться понять что там к чему :shock:

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 16:41 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
да там простенькие математические вычисления. а, ну и на код особо не смотри, я примерно накидал для понимания принципа. travelTime это за сколько миллисекунд серве желательно провернуться с первоначального угла до желаемого.


Последний раз редактировалось Angel71 20 июл 2015, 16:42, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 16:45 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
Angel71 спасибо, я впринципе написал неплохой алгоритм движения сер, единственное что нужно, что бы они медленней двигались.

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

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 16:49 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
пробуй придумывать, как в нужный момент и с каким значением вызывать servo.write. отот последний пример с вычислением значения тебе еще пригодится. переписать под себя библиотеку для серв или написать свою библиотеку управления моторами привода (если серву переделаешь или другой привод возьмёшь). для нормального управления тебе нужно будет знать реальное положение (ну то потом), а не пытаться управлять сервой по принципу "ну по идеи она должна сейчас быть тут". подпаяться к потенциометру сервы. мотором или управлять напрямую (свой h-мост/драйdер мотора прикрутить) или временно оставить через электронику сервы.
язык это не то, что бы второстепенное. само по себе хорошее знание бесполезно, если не можешь алгоритмы придумывать. как бы взаимодополняющее получается. язык вообще можно отдельно изучать. отдельно сам язык это даже полезней. просто самоучитель и в какой среде разработки (в контроллер дуни заливать не очень удобно - нет отладчика, в котором можно хоть пошагово выполнять и смотреть, какие значения у переменных/констант и т.д.), хоть консольное приложение. читаешь книжки, решаешь там задачки. можно порешать какие задачники по программированию. и т.д.
для начала из языка вообще не обязательно много знать. просто разок-другой прочитай небольшой самоучитель, где вкратце опишут основное и уже потом постепенно и из книжек и со всяких статеек по языку и программированию ардуинок будешь узнавать больше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 17:37 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
Angel71 писал(а):
пробуй придумывать, как в нужный момент и с каким значением вызывать servo.write. отот последний пример с вычислением значения тебе еще пригодится. переписать под себя библиотеку для серв или написать свою библиотеку управления моторами привода (если серву переделаешь или другой привод возьмёшь). для нормального управления тебе нужно будет знать реальное положение (ну то потом), а не пытаться управлять сервой по принципу "ну по идеи она должна сейчас быть тут". подпаяться к потенциометру сервы. мотором или управлять напрямую (свой h-мост/драйdер мотора прикрутить) или временно оставить через электронику сервы.
язык это не то, что бы второстепенное. само по себе хорошее знание бесполезно, если не можешь алгоритмы придумывать. как бы взаимодополняющее получается. язык вообще можно отдельно изучать. отдельно сам язык это даже полезней. просто самоучитель и в какой среде разработки (в контроллер дуни заливать не очень удобно - нет отладчика, в котором можно хоть пошагово выполнять и смотреть, какие значения у переменных/констант и т.д.), хоть консольное приложение. читаешь книжки, решаешь там задачки. можно порешать какие задачники по программированию. и т.д.
для начала из языка вообще не обязательно много знать. просто разок-другой прочитай небольшой самоучитель, где вкратце опишут основное и уже потом постепенно и из книжек и со всяких статеек по языку и программированию ардуинок будешь узнавать больше.

Эх, буду стараться.. Вообще у меня с механикой дела обстоят куда лучше :roll:

Добавлено спустя 6 минут 14 секунд:
я где то находил код управление сервами, в котором описывалось как медленно вращать.

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 17:38 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
с механикой сколько возишся? вот если мозги в нужную сторону повёрнуты, будет так же и с программированием/электроникой. :) предыдущее сообщение не цитируют, это как при обычном разговоре постоянно повторять сказаное собеседниками.
всё нужное уже знаешь, сам придумывай, а не гоняйся за призраками примеров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 17:44 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
Код:
void loop() {
  int pos = 0;
  int tergetPos = 110;
  unsigned long time, diff;
  unsigned long travelTime = 1500; //milliseconds
  servo.write(20);
  delay(2000);
  time = millis();
  while(pos < tergetPos)
  {
    diff = time - millis();
    pos = вычисли здесь сам;
    servo.write(pos);
  }
}

я так понял, что этот кусок кода описывает время которое нужно что бы повернутся серве на какой то угол?

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 17:46 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 995
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
Медленно сервы двигать очень просто.
Нужно не сразу задавать конечную точку, а постепенно
т.е. не
Код:
servo4.write(20); // колено разогнуто
delay(500);
servo4.write(60); // колено согнуть


а нужен цикл
Код:
for(i=20;i<60;i++)
{
   servo4.write(i);
   delay(100);
}

Т.о. серва будет плавно и постепенно двигаться к нужному углу. Задержка подбирается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 17:53 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
хм, попробую сейчас

Добавлено спустя 3 минуты 52 секунды:
пишет ошибку при компилировании..

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 20 июл 2015, 17:59 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
:D так по печени компилятор, по печени. пускай тренируется писать правильные логи при компиляции. :) хотя можешь прочитать, что пишет и поискать ошибку.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 437 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 30  След.

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


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

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


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

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