Технический форум по робототехнике.
Про задачу я неоднократно спрашивал, вот ответ:Angel71 писал(а):без конкретной задачи обсуждать это смысла мало. непонятно как минимум какие нужные датчики.
Чтобы ответить на этот ответ, настоящих железных агентов имхо не стоит строить. Нужен эмулятор роя. И желательно с открытым кодом, чтобы ответ был не в общих фразах, а в конкретном примере. Надо гуглить "ant simulator" или "swarm simulator", во вкусу добавляя что-то типа "open sources".setar писал(а): топик был заведен для получения информации что такое вообще рой, и как он "работает".
kran писал(а):Цитирую статью по вашей ссылке:Кстати, полную цену новинки швейцарцы пока не называют, упоминая лишь, что боты — недорогие.
Вот, назвали "полную цену" чуть попозжа - в той статье, на которую я дал ссылку. Там переписка ну с самым что ни на есть первоисточником.
Ценообразование - это такая тонкая вещь... Я вот тоже считал комплектующие PR2 по отдельности, и у меня ну никак $400000 не получалось.
А вообще по-моему тут ещё по божески - спаять радиодеталей на 450 рублей и получить изделие ценой в 3500 рублей. Производство-то совсем не массовое. Это при миллионных тиражах стоимость конечного изделия сравнима со стоимостью комплектующих... плюс миллиард на рекламу.
Добавлено спустя 10 минут 7 секунд:Nesenin писал(а):при наличии навыков\знании\инструментов, можно за день заказать все комплектующие, развести плату, заказать ее изготовление и обозначить планы на монтаж.
Кто-то про контроллер имхо забыл. И зарядник. Вроде ерунда, а тоже время и деньги. Монтаж тоже не один день, потом тестирование. Что-то ещё испоганить можно при монтаже. Какие-то баги в железе вылезут не один раз, не один раз всё переделывать. Не знаю, мне кажется дешевле 60 тысяч рублей всё это не обойдётся, особенно учитывая время работы такого специалиста. Можно, конечно, сказать, что он для себя это делает, как хобби, бесплатно. Но так вроде не совсем честно.
This zip file contains the following..
1. Kilobot user guide, which describes how to build, configure, and program the Kilobot system.
2. Skeleton code for Kilobot
3. Code for the overhead controller
4. Code for the calibration board
5. Software to operate the overhead controller
6. Documents nessicary to build the robots, overhead controller, and calibration board. These include pcb files, Bill of material, and Schematics.
Я тоже покопался. Скорее всего, с точки зрения железячника всё сделано на высшем уровне, это я не могу оценить, полагаюсь на ваше мнение. Но с точки зрения программиста...Nesenin писал(а):покопался я. тут есть все. и схема программатора (с использованием ИК) и все детали. даже отдельные файлы для станков (металлизация, маски, отверстия).хоть сейчас в производство отправляй.
if(special_mode_message==0x01)
{
//stop motors and ir led
OCR2B = 0x00;
OCR2A = 0x00;
PORTD &= ~(1<<4);
enable_tx=0;
TCCR0B=0x00;//turn off timer0
asm("jmp 0x7000");//jump to bootloader
}
if(special_mode_message==0x02)
{
enable_tx=0;
wakeup=0;
enter_sleep();//will not return from enter_sleep() untill a special mode message 0x03 is received
}
if((special_mode_message==0x03)||(special_mode_message==0x04))
{
//wakeup already set to 1 in timer1 interrupt
//special_mode=0;
set_color(0,0,0);
OCR2B = 0x00;
OCR2A = 0x00;
PORTD &= ~(1<<4);
enable_tx=0;
while(special_mode==0)//loop untill another special mode message is received
{
set_color(7,7,0);
_delay_ms(10);
set_color(0,0,0);
_delay_ms(1000);
}
enable_tx=1;
}
//get_message();
//take oldest message off of rx buffer
//message is only new if message_rx[5]==1 !
//if so, message is in message_rx[0],message_rx[1]
//distance to transmitting robot (in mm) is in message_rx[3]
//Example:
get_message();
if(message_rx[5]==1)
{
data=message_rx[0];
distance=message_rx[3];
}
Возможно, мне надо было ещё несколько примеров "нормального стиля" подкинуть:Dmitry__ писал(а):Хм, я увидел только одну асмовскую вставку - прыжок на бутлоадер, совершенно нормальный стиль.
Еще обьяснять кривому компилятору где бутлоадер...
asm volatile("nop\n\t");
asm volatile("nop\n\t");
asm volatile("wdr\n\t");
SMCR|= (1<<SE);
asm volatile("sleep\n\t");
kran писал(а):asm volatile("nop\n\t");
kran писал(а):asm volatile("wdr\n\t");
SMCR|= (1<<SE);
asm volatile("sleep\n\t");
kran писал(а):Даже если без таких вещей не обойтись, их надо прятать в функции или макросы, которые надо убирать из файла программы.
kran писал(а):Возможно, мне надо было ещё несколько примеров "нормального стиля" подкинуть:
"а для чего же этот рой нам может быть полезен"? без убер-супер-пупер замашек, а для начала что-то простое (механика, электроника и софт) и не сильно дорогое, что можно собрать самому дома и не тратя на это пару лет.
Ясен перец, что программистов должно быть два. API (интерфейс прикладного уровня) - это то, что разделяет работу embeded программиста, и прикладного программиста. Только в данном случае embedded программист схалтурил, и на места его халтуры я и указываю. API кривой, документация на API крайне неполная. Я, как программист-прикладник, крайне возмущён И каждый программист "белоручка" меня поймёт, надеюсь. А некоторые embeded программисты будут защищать собрата, типа "да и так сойдёт".Dmitry__ писал(а):Ну, дык, программирование и делится на программирование железа (оно у вас есть в роботе?) и программирование остального.
Если тебя это пугает, значит вас должно быть 2: Ембеддед программист и программист белоручка.
Я же написал - "в функции ИЛИ МАКРОСЫ". Я понимаю, что не всё можно запихать в функцию. Хотя в данном случае, если постараться... Есть соглашения о вызовах, где можно стека избежать. Есть такие функции, которые не предусматривают возврата из них. С этим в Си всё нормально, не надо на него капать.Dmitry__ писал(а):Нельзя спрятать прыжок на бутлоадер в функцию, т.к. потом этот бутлоадер делает харакири всем стекам и кучам СЫkran писал(а):Даже если без таких вещей не обойтись, их надо прятать в функции или макросы, которые надо убирать из файла программы.
turn(LEFT, 5);
int red1 = saw_light(RED);
if (red1 > red0)
{
say("Saw %s %d", RED, red1);
move(FORWARD, 10);
}
else
{
turn(RIGHT, 10);
}
kprints("Saw ");
kprints(RED);
kprints(", ");
kprinti(itoa(red1));
set_motor(cw_motor,ccw_motor);
_delay_ms(10 * 1000);
set_motor(0,0);
kran писал(а):Ладно, без обид, это вечный спор железячников и "белоручек", не будем холивар разводить. Пришли вроде к общему мнению, что это пока заготовка, именно как заготовка она совсем не плоха, может даже и вполне себе хороша.