roboforum.ru

Технический форум по робототехнике.

Cyclops(Циклоп) mini-ATX робот

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Cyclops(Циклоп) mini-ATX робот

Сообщение milk3d » 31 окт 2011, 11:04

Привет всем!
Не так давно я загорелся идеей создания робота(устройства), которым я мог бы управлять через интернет и принимать видео и звук от него. Я долго думал над тем какой микроконтроллер использовать или микро компьютер. Я пришел к выводу, что большинство микроконтроллер слишком слабы для передачи видео, да и довольна сложно подключить камеру и 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_03622.JPG


DSC_0362.JPG


DSC_03621.JPG

Видео:






Ну а вообще кому интересно вот мой YouTube канал http://www.youtube.com/user/milk3dfx
Аватара пользователя
milk3d
 
Сообщения: 25
Зарегистрирован: 20 май 2009, 00:54
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение =DeaD= » 31 окт 2011, 11:07

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

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение HarryStar » 31 окт 2011, 15:48

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

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение milk3d » 31 окт 2011, 23:57

Спасибо всем за позитивную оценку. Действительно я вложил в него не мало труда.

=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 минуть, но это тоже зависит от нагрузки. В целом батареи хватает на достаточно долгий период времени, можно сказать в районе одного часа при нормальной работе.
Аватара пользователя
milk3d
 
Сообщения: 25
Зарегистрирован: 20 май 2009, 00:54
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение Scorpio » 01 ноя 2011, 00:40

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

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение milk3d » 01 ноя 2011, 01:28

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

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение formfoam » 01 ноя 2011, 16:20

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

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение Scorpio » 01 ноя 2011, 16:59

milk3d писал(а):Честно сказать по газону не ездил.

Просто фотка на газоне.
Такой клиент/сервер был бы полезен многим форумчанам. Надо бы довести до готового продукта.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение milk3d » 02 ноя 2011, 03:52

Scorpio писал(а):Просто фотка на газоне.

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

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

У меня в планах и есть создание опенсоурс платформы. По этому я был бы рад если кто то проявил желание помочь. Я могу подготовить простой пример клиент-сервера который передавал команды роботу и принимал видео от него, по TCP для начала. Так же в ходе создания программ я начал писать свой собственный протокол общения клиента с сервером, эту тему можно тоже развить и создать уникальный протокол для коммуникации робота и пользователя, или пойти дальше робота и робота. В общем если кому интересно то пишите.
Аватара пользователя
milk3d
 
Сообщения: 25
Зарегистрирован: 20 май 2009, 00:54
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение Angel71 » 02 ноя 2011, 20:22

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

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение milk3d » 03 ноя 2011, 01:41

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 для передачи команд роботу не имеет смысла, как и использование протокола для роботов в целях отображения страниц в интернете.
Аватара пользователя
milk3d
 
Сообщения: 25
Зарегистрирован: 20 май 2009, 00:54
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение Angel71 » 03 ноя 2011, 02:04

а. если у вас дотнет, а не моно, то настоятельно рекомендую начать изучать 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;
        }


    }
}

еще есть файл с настройками, но суть думаю будет понятна и без него.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение PritMick » 10 ноя 2011, 03:43

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

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение milk3d » 14 ноя 2011, 01:42

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) Насколько я понял, поддерживается релейная схема: на роботе клиент идет на сервер; у пользователя тоже свой клиент и он тоже идет на тот же сервер. Как мне кажется, это для работы через Интернет является единственным вариантом, не дадут же беспроводные провайдеры реальный айпишник.

Вы правы, Клиент робота -> Сервер <- Клиент пользователя
Сервер занимается тем, что связывает два клиента. Но это не обязательно, что через него идет весь трафик.
Аватара пользователя
milk3d
 
Сообщения: 25
Зарегистрирован: 20 май 2009, 00:54
Откуда: Ставрополь
прог. языки: С++, PHP, JavaScript

Re: Cyclops(Циклоп) mini-ATX робот

Сообщение milk3d » 05 янв 2012, 09:58

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

След.

Вернуться в Наши проекты

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

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