roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 31 окт 2011, 11:04 
Не в сети
Аватара пользователя

Зарегистрирован: 20 май 2009, 00:54
Сообщения: 25
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript
Привет всем!
Не так давно я загорелся идеей создания робота(устройства), которым я мог бы управлять через интернет и принимать видео и звук от него. Я долго думал над тем какой микроконтроллер использовать или микро компьютер. Я пришел к выводу, что большинство микроконтроллер слишком слабы для передачи видео, да и довольна сложно подключить камеру и Wi-Fi адаптер к ним. Микро компьютеры очень дорогие и у них есть проблемы с драйверами. Так вот подумав, я пришел к выводу, что лучше всего использовать обычную материнскую плату, немного слишком для моей цели но все таки первая версия робота экспериментальная, так то будет запас по мощности.
Проект назвал Cyclops(Циклоп), из за того что робот имеет одну камеру на "голове". Как я уже говорил робот построен mimi-ATX материнской плате http://www.asus.com/Motherboards/AMD_CPU_on_Board/E35M1M_PRO. Взял про версию что бы можно было настраивать энергопотребление платы. На материнскую плату поставил Wi-Fi адаптер и подключил жесткий диск от ноутбука. Все остальное железо пока подключается к материнской плате через Arduino в том числе и мой собственный DC мотор контроллер. Самой большой проблемой было запитать материнку от 12 вольтовой батареи. Я потратил много времени в попытках создать блок питания, но без успешно. Слишком мало у меня знаний в электротехники и мощность всей системы довольна высокая(в районе 2-2.5А). В общем добрые люди подсказали другое решение, правда пришлось потратиться http://www.mini-box.com/PicoPSU-80-WI-32V. Корпус сделал из алюминия, все на болтах. По завершению работ над железом, я поставил на него XP и начал писать софт. Сейчас написано не так много но принимать видео с него и посылать команды на него я могу, в общем я достиг того что хотел, может правда не в полной мере пока. Так же я написал некоторые тестовые программы, что бы испытать его возможности, например слежка за светом. В общем вот что получилось, задавайте вопросы и не скупитесь на критику:)
Вложение:
DSC_0388.JPG
DSC_0388.JPG [ 786.42 КиБ | Просмотров: 4373 ]


А вот как все начиналось:
Вложение:
DSC_03622.JPG
DSC_03622.JPG [ 392.93 КиБ | Просмотров: 4362 ]


Вложение:
DSC_0362.JPG
DSC_0362.JPG [ 374.74 КиБ | Просмотров: 4404 ]


Вложение:
DSC_03621.JPG
DSC_03621.JPG [ 300.91 КиБ | Просмотров: 4344 ]

Видео:






Ну а вообще кому интересно вот мой YouTube канал http://www.youtube.com/user/milk3dfx


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 31 окт 2011, 11:07 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Очень неплохо! Вам можно подключиться к испытаниям модуля автономной навигации от EDV:
forum88/topic6021.html

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 31 окт 2011, 15:48 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 995
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
Работа серьезная и сделано аккуратно очень. Правда когда ездит и активно крутится, страшно что упадет - т.к. его прилично болтает. Какой акк и какое время работы примерно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 31 окт 2011, 23:57 
Не в сети
Аватара пользователя

Зарегистрирован: 20 май 2009, 00:54
Сообщения: 25
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript
Спасибо всем за позитивную оценку. Действительно я вложил в него не мало труда.

=DeaD= писал(а):
Очень неплохо! Вам можно подключиться к испытаниям модуля автономной навигации от EDV:
forum88/topic6021.html

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

HarryStar писал(а):
Работа серьезная и сделано аккуратно очень. Правда когда ездит и активно крутится, страшно что упадет - т.к. его прилично болтает. Какой акк и какое время работы примерно?

Ходовая часть конечно слабенькая у него, это относится и к контроллеру моторов, и к самим моторам и трансмиссии, которой нет. Сейчас как раз пытаюсь исправить все эти недостатки, но пока нет места где можно было бы работать над железом даже отверстие просверлить не могу.
Что касается батареи, так я использовал свинцово кислотный аккумулятор 12В 7Ah от UPS около 3кг http://www.amazon.com/volt-Sealed-Battery-Alarm-Systems/dp/B000R9PYEQ/ref=sr_1_12?ie=UTF8&qid=1316926782&sr=8-12. Его заряда хватает что бы питать компьютер(XP) без нагрузки до 4 часов, но если конечно запустить какие то мощные приложения то меньше, в общем время работы ноутбука. С моторами меньше в районе 40 минуть, но это тоже зависит от нагрузки. В целом батареи хватает на достаточно долгий период времени, можно сказать в районе одного часа при нормальной работе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 01 ноя 2011, 00:40 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
:good: Круто!
А на газоне не застревает?
Клиент/сервер самодельный? Надежно работает?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 01 ноя 2011, 01:28 
Не в сети
Аватара пользователя

Зарегистрирован: 20 май 2009, 00:54
Сообщения: 25
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript
Честно сказать по газону не ездил, но обязательно попробую. С учетом того какие у нас тут газоны я думаю ездить будет.
Клиент-сервер я писал с другом на C++ под Windows. Мы сделали клиент для пользователя, сервер и клиент для робота. Все программы работали стабильно но передача видео через интернет да далекие расстояния работало весьма медленно, потому что передача шла через TCP/IP и мы решили сделать передачу видео через UDP. А что касается команд, скорость их передачи от клиента к роботу высока. Вот чего я не как не могу сделать так это наладить передачу звука, не знаю какую лучше использовать библиотеку для захвата и воспроизведения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 01 ноя 2011, 16:20 
Не в сети

Зарегистрирован: 04 окт 2011, 15:08
Сообщения: 34
Мне интересно. Подписался на YouTube. Буду следить за Циклопом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 01 ноя 2011, 16:59 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
milk3d писал(а):
Честно сказать по газону не ездил.

Просто фотка на газоне.
Такой клиент/сервер был бы полезен многим форумчанам. Надо бы довести до готового продукта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 02 ноя 2011, 03:52 
Не в сети
Аватара пользователя

Зарегистрирован: 20 май 2009, 00:54
Сообщения: 25
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript
Scorpio писал(а):
Просто фотка на газоне.

Я тогда ему просто фото сессию устроил, но вы меня заразили идеей попробовать обкатать его на "бездорожье". Пробовал его на наклонной поверхности, мощности двигателей хватает на то, что бы тянуть его в верх при склоне в 20 градусов. Правда вот трансмиссии нет и он просто с нее скатывается когда двигатели отключаются.

Scorpio писал(а):
Такой клиент/сервер был бы полезен многим форумчанам. Надо бы довести до готового продукта.

У меня в планах и есть создание опенсоурс платформы. По этому я был бы рад если кто то проявил желание помочь. Я могу подготовить простой пример клиент-сервера который передавал команды роботу и принимал видео от него, по TCP для начала. Так же в ходе создания программ я начал писать свой собственный протокол общения клиента с сервером, эту тему можно тоже развить и создать уникальный протокол для коммуникации робота и пользователя, или пойти дальше робота и робота. В общем если кому интересно то пишите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 02 ноя 2011, 20:22 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
а можно поподробней, что именно в данном случае понимается под протоколом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 03 ноя 2011, 01:41 
Не в сети
Аватара пользователя

Зарегистрирован: 20 май 2009, 00:54
Сообщения: 25
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript
milk3d писал(а):
а можно поподробней, что именно в данном случае понимается под протоколом?

Так как я начал писать клиент-сервер с нуля, я использовал только socket функции из win Api. И конечно же я столкнулся с рядом. К примеру TCP/IP это поточный протокол, это означает, что получатель должен точно знать сколько байт информации было ему отправлено. И с учетом того, что я передавал кадра в формате JPG, то размер каждого передаваемого кадра был разным. Для этого мне пришлось как бы создать заголовок(header) который содержал информацию о размере каждого кадра, и посылать его каждый раз перед посылкой самого кадра. Он выглядит примерно так:
Код:
Длинна = 6. [Версия протокола (char) | тип данных (char) | Размер(int)]

Далее для каждого из типов данный я выбрал число, к примеру
Код:
#define DATATYPE_COMMAND 100

Затем к примеру я посылал какую то команду, которая представляла собой два байта информации
Код:
Длинна = 2. [Тип команды (char)| Описание (char)]

и за каждым из типов команд я жестко закрепил определенный char
Код:
#define FORWARD_PRESS 1
#define FORWARD_RELEASE 2
#define BACKWARDS_PRESS 3
#define BACKWARDS_RELEASE 4
#define LEFT_PRESS 5
#define LEFT_RELEASE 6
#define RIGHT_PRESS 7
#define RIGHT_RELEASE 8
#define CAMERA_UP_DOWN 10
#define CAMERA_LEFT_RIGHT 11

Может звучит немного банально но теперь я использую один тот же протокол для написания клиентов на разных языках. К примеру мой друг написал клиент на Java, а я сейчас занимаюсь C# клиентом. Если бы все роботы работали по такому проколу то мои клиенты подошли бы и к другим роботам. Возможно я хватил через чур, но мне кажется, что каждый протокол разрабатывается под конкретную задачу и использование к примеру http для передачи команд роботу не имеет смысла, как и использование протокола для роботов в целях отображения страниц в интернете.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 03 ноя 2011, 02:04 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
а. если у вас дотнет, а не моно, то настоятельно рекомендую начать изучать wcf, а не возится с сокетами.
вот один простенький пример сервиса:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WcfStudentService
{
    // Defines IStudentService here
    [ServiceContract ]
    public interface IStudentService
    {

        // Define the GetStudentFullName OperationContact here….
        [OperationContract]
        String GetStudentFullName(int studentId);

        // Define the GetStudentInfo OperationContact here….
        [OperationContract]
        IEnumerable<StudentInformation> GetStudentInfo(int studentId);

    }


    // Use a data contract as illustrated in the sample below to add composite types to service operations.
    [DataContract]
    public class StudentInformation
    {
        int _studentId ;
        string _lastName;
        string _firstName;

        public StudentInformation(int studId, string firstname, string lastName)
        {
            _studentId = studId;
            _lastName = lastName;
            _firstName = firstname;
        }

        [DataMember]
        public int StudentId
        {
            get { return _studentId; }
            set { _studentId = value; }
        }

        [DataMember]
        public string FirstName
        {
            get { return _firstName; }
            set { _firstName = value; }
        }

        [DataMember]
        public string LastName
        {
            get { return _lastName; }
            set { _lastName = value; }
        }
    }
}

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WcfStudentService
{
    // StudentService is the concrete implmentation of IStudentService.
    public class StudentService : IStudentService
    {
        List<StudentInformation > Students = new List<StudentInformation>() ;

        // Create  list of students
        public StudentService()
        {
            Students.Add(new StudentInformation(1001, "Nikhil", "Vinod"));
            Students.Add(new StudentInformation(1002, "Joshua", "Hunter"));
            Students.Add(new StudentInformation(1003, "David", "Sam"));
            Students.Add(new StudentInformation(1004, "Adarsh", "Manoj"));
            Students.Add(new StudentInformation(1005, "HariKrishnan", "Vinayan"));
        }

        // Method returning the Full name of the student for the studentId
        public string GetStudentFullName(int studentId)
        {
            IEnumerable<string> Student
                         = from student in Students
                           where student.StudentId == studentId
                           select student.FirstName + " " + student.LastName;

            return Student.Count() != 0 ? Student.First() : string.Empty;
        }

        // Method returning the details of the student for the studentId
        public IEnumerable<StudentInformation> GetStudentInfo(int studentId)
        {

            IEnumerable<StudentInformation> Student =  from student in Students
                                                       where student.StudentId == studentId
                                                       select student ;
            return Student;
        }


    }
}

еще есть файл с настройками, но суть думаю будет понятна и без него.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 10 ноя 2011, 03:43 
Не в сети

Зарегистрирован: 22 дек 2010, 12:06
Сообщения: 12
Откуда: Москва
Skype: pritmix
прог. языки: C, C++(из-за наличия STL :) ), Java
ФИО: Михаил Притула
Хорошая штука. :good:
Делаю нечто похожее, но очень медленно и не так добротно построенное :) forum10/topic9467.html
1) Почему не miniITX плата? Она поменьше, и они есть такие на AMD E-350.
2) AMD E-350 хватает? Юзаете ли OpenCL или в планах?
3) Собираюсь писать практически тот же механизм на сокетах, но у меня была идея разделения соединений - одно для команд, его не зафлуживают ни та ни другая сторона и он надежный и всегда поддерживается в порядке (насколько связь позволяет), несколько - сколько угодно для "мультимедиа" данных (как то: вебкамера, микрофон, еще вебкамера, еще микрофон, ..., дисплей, динамики); соответственно, если канал стал плохим, можно просто обрывать соединения с некритичными в данный момент данными.
4) Насколько я понял, поддерживается релейная схема: на роботе клиент идет на сервер; у пользователя тоже свой клиент и он тоже идет на тот же сервер. Как мне кажется, это для работы через Интернет является единственным вариантом, не дадут же беспроводные провайдеры реальный айпишник.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 14 ноя 2011, 01:42 
Не в сети
Аватара пользователя

Зарегистрирован: 20 май 2009, 00:54
Сообщения: 25
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript
PritMick писал(а):
1) Почему не miniITX плата? Она поменьше, и они есть такие на AMD E-350.

Мне просто понравилась E35M1-M PRO, да она немного больше чем стандартная miniATX или miniITX, но за то она имеет все что необходимо. Например 2 PCI и много USB и даже USB 3.0, но решающим для меня явился тот факт что она имеет HDMI, что позволяет подключать робота к телевизорам.
PritMick писал(а):
2) AMD E-350 хватает? Юзаете ли OpenCL или в планах?

Пока в планах использовать OpenCL нет, мощности системы хватает вполне, Windows 7 работает замечательно.
Angel71 писал(а):
3) Собираюсь писать практически тот же механизм на сокетах, но у меня была идея разделения соединений - одно для команд, его не зафлуживают ни та ни другая сторона и он надежный и всегда поддерживается в порядке (насколько связь позволяет), несколько - сколько угодно для "мультимедиа" данных (как то: вебкамера, микрофон, еще вебкамера, еще микрофон, ..., дисплей, динамики); соответственно, если канал стал плохим, можно просто обрывать соединения с некритичными в данный момент данными.

Разделять и так и так надо, потому что видео и аудио должно идти через UDP, а команды через TCP.
Angel71 писал(а):
4) Насколько я понял, поддерживается релейная схема: на роботе клиент идет на сервер; у пользователя тоже свой клиент и он тоже идет на тот же сервер. Как мне кажется, это для работы через Интернет является единственным вариантом, не дадут же беспроводные провайдеры реальный айпишник.

Вы правы, Клиент робота -> Сервер <- Клиент пользователя
Сервер занимается тем, что связывает два клиента. Но это не обязательно, что через него идет весь трафик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cyclops(Циклоп) mini-ATX робот
СообщениеДобавлено: 05 янв 2012, 09:58 
Не в сети
Аватара пользователя

Зарегистрирован: 20 май 2009, 00:54
Сообщения: 25
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript
С Наступившим!=)


Вложения:
DSC_1000.JPG
DSC_1000.JPG [ 1.38 МиБ | Просмотров: 3471 ]
DSC_0995.JPG
DSC_0995.JPG [ 961.48 КиБ | Просмотров: 3442 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

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


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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 23


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

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