20 удивительных роботов, способных заменить человека. Под робот


Роботы под прикрытием (2014-2017) смотреть онлайн мультфильм сериал в хорошем качестве HD мультсериал все серии

1-26 серия 4 сезон

Бамблби вызывают, чтобы спасти Землю от новой группы десептиконов, сбежавших из рухнувшего на планету корабля-тюрьмы. Автобот собирает группу неопытных воинов, включающих в себя бунтующего «плохиша», кадета элитной гвардии, напыщенного динобота и гиперактивного миникона. Вместе отряд пытается поймать новых врагов.

  • Страна:

  • Жанр:

  • Год выхода:

  • Режиссер:

  • Сценарий:

  • В ролях:

  • Время:

    ~ 22 мин.

  • Перевод:

    Профессиональный (полное дублирование)

Трансформеры: Роботы под прикрытием (2014-2017) Transformers: Robots in Disguise смотреть онлайн в хорошем качестве HD на русском языке

Смотреть онлайн Трейлер

Пример сезона

Сообщить об ошибке

Оценить фильм!

Добавить отзыв.

На КиноФлакс вы можете смотреть онлайн фильм сериал "Трансформеры: Роботы под прикрытием (2014-2017) Transformers: Robots in Disguise" совершенно бесплатно, без регистрации, в хорошем качестве HD и в хорошей озвучке (с хорошим переводом) на русском языке. Кино можно смотреть на компьютере, на телефоне, на планшете, если это сериал, то новые / последние серии и все серии подряд. Видео относится к следующим разделам: сериал 2017 » сериал 2016 » зарубежный сериал » зарубежный мультфильм » боевик » комедия » приключения » фантастика. Режиссер данной кинокартины - Дэвид Хартман, Тодд Ватерман, Фрэнк Марино, сценарий - Zac Atkinson, Адам Бичен, Дуан Капиззи, продюсер фильма - Адам Бичен, Стивен Дэвис, Джефф Клейн. Главные роли в ленте исполнили - Хари Пэйтон, Митчелл Уитфилд, Уилл Фридел, Констанс Зиммер, Даррен Крисс, Тед... и другие актеры. Страна, где происходили съемки киноленты - США. Время длительности кинофильма составляет 22 мин.. Смотрите онлайн новинки фильмов 2018, сериалов 2018, а так-же русский, зарубежный, документальный, советский, индийский, корейский, турецкий фильм сериал или мультфильм. Так-же на сайте собрана огромная коллекция аниме. После просмотра просим Вас оставить в комментариях свое мнение о фильме. Проведите время с пользой вместе с Кино Флакс KinoFlux КиноФлакс КиноФлюкс КиноФлукс.

kinoflux.org

Hexapod-робот под управлением ROS / Хабр

Робот гексапод — это платформа, использующая для передвижения шесть ног. После просмотра множества видео в интернете, стало ясно, что очень интересно наблюдать за передвижением подобных роботов. И тут возникло желание сделать что-то похожее, но с одноплатным компьютером BeagleBone Black (далее BBB) на борту, потому что подобных проектов еще не было. Информацию о таких роботах было найти непросто, особенно, что касается программной составляющей. Некоторое время было непонятно с чего начинать, но вскоре было решено начать с изготовления конструктива робота — шасси и электронной составляющей, а затем заняться программированием того, что получилось. Изучив на Robocraft.ru некоторые статьи про операционную систему для роботов — ROS — было принято решение построить управление именно на ней, тем более мощности BBB должно было хватить на это. К тому же, ROS очень перспективное направление в робототехнике со множеством инструментов и готовых решений для разработки.

Выбор «железа»
Как отмечено выше, мозгом системы стал BeagleBone Black:

Также BBB поддерживает Ubuntu, но с ядром для ARM архитектуры.

Экспериментальный режим, в котором пока работает ROS для ARM, на процесс работы никак не повлиял, так как были использованы инструменты, стабильно работающие на linux-arm.

Следующая важная часть — это серво-контроллер. BBB обладает несколькими каналами PWM, но их явно не достаточно для 18ти сервоприводов. К тому же управление PWM излишне будет нагружать процессор. Логичнее использовать готовый серво-контроллер с управлением через какой-нибудь интерфейс. Выбор пал на подходящий Mini Maestro 18-Channel USB Servo Controller:

Этот контроллер обладает 18ю каналами для серво, имеет интерфейс UART и USB. Управляется он через «свой» протокол, в который входят установки целевого угла сервопривода, а также его скорости и ускорения, кроме этого обладает удобными средствами калибровки в графической оболочке.

Но быстро подключить Mini Maestro к BBB не получится, так как уровни UART интерфейса у них различные: 5 V и 3.3 V. Выходом стало использование дополнительного устройства — конвертера логических уровней, которой преобразует 3.3 V в 5 V и обратно. Такая штука пришла со Sparkfaun.com. Это BOB-08745:

Теперь можно без проблем соединить BBB и контроллер, чтобы они общались по UARTу.

Для будущих исследований захотелось IMU, чтобы робот хоть как-то ощущал себя в пространстве. IMU с акселерометром, магнитометром и гироскопом так же заказана на Pololu:

Это маленькая плата MinIMU-9 v2 с двумя чипами L3GD20 и LSM303DLHC, связывающиеся с периферией по интерфейсу I2C. MiniIMU способна работать от 2.5V до 5.5V, поэтому никаких конвертеров не понадобилось.

На многих видео гексаподы управлялись геймпадом от различных приставок. И не зря. Обладающий множеством кнопок и двумя «аналоговыми» ручками, джойстик становится удобным устройством управления. В ROS нашелся драйвер для стандартного джойстика и, чтобы избежать проблем с подключением, было решено приобрести оригинальный PS3 Dual Shock 3:

Для подключения по Bluetooth, очевидно, необходим был USB адаптер. В итоге их у меня оказалось два, потому что один из них не захотел работать с имеющимся драйвером (об этом далее). А MobileData UBT-206 — заработал.

Для связи BBB с настольным компьютером используется протокол SSH, который в свою очередь использует, к примеру, Ethernet, Ethernet-over-USB (технология, позволяющая эмулировать ethernet-сеть через USB) или Wi-Fi. Подключать каждый раз провода не очень удобно и чтобы избавиться от этого был добавлен еще USB Wi-Fi адаптер. Ознакомившись, какой лучше адаптер подойдет для BBB, стало ясно, что ядро arm-linux поддерживает драйвер rtl8192cu на базе которого работает широкий круг устройств. Был выбран компактный NetGear WNA1000M (на картинке вместе с MobileData UBT-206):

Хотя многие рекомендуют использовать адаптеры с внешней антенной, этот работает довольно стабильно.

Ну и чтобы расширить всего один USB Host разъем BBB, необходим USB концентратор. Понравился вот этот — MobileData HDH-700, потому что у него есть кнопочки-выключатели на каждое из четырех устройств:

Следующим пунктом идет элементы питания всех бортовых устройств. Аккумулятор — Li-Po 2200mAh, состоящий из двух банок. Вместе с ним два стабилизатора напряжения преобразуют напряжение аккумулятора в необходимые 5V (для BBB и серво-контроллера) и 6V (для сервоприводов). Также на аккумулятор установлен сигнализатор низкого заряда, который пронзительно пищит, когда напряжение батареи падает до минимума.

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

Различны материалы и технологии изготовления частей подвески. Это может быть печать на 3d принтере или лазерная резка из листов пластика, фанеры или металла. Так как 3d принтера под рукой не было и прочность напечатанных деталей оставляет желать лучшего, была выбрана конструкция из металла, а именно из алюминия и дюралюминия. Тем более на работе у меня был доступ к фрезерному станку с ЧПУ, поэтому детали было решено изготовить из листов металла путем фрезеровки.

Главным примером, по образу которого создана собственная конструкцию, является Lynxmotion Phoenix:

В создании также очень помогла модель с GrabCAD.

Одной из главных частей робота являются сервоприводы. Они должны обладать достаточным крутящим моментов и, для надежности, редуктор стоит выбрать из металла. Такие сервы от известных фирм Hitec и Futaba стоят порядка $20-$30. Поэтому, вместо «не дешевых» сервоприводов Hitec HS-645/485MG были заказаны китайские, которые в два раза дешевле Turnigy TGY-S901D:

При питании в 6V они способны справляться с максимальной нагрузкой в 12.5 кг/см, чего с запасом хватало для робота с расчетной массой в 2 кг. А запас в китайских сервах необходим, так как качество у них оставляет желать лучшего. Некоторые из них работают с посторонними звуками с самого начала. Также они имеют довольно большой люфт и кривые оси. Но за 10$ за штуку — это приемлемо.

К сервам был куплен алюминиевый дисковый крепеж на вал для повышения прочности и упругости конструкции:

Создание 3d модели в SolidWorks и изготовление деталей
Таким образом, определившись с базовым набором комплектующих деталей, я начал создавать 3d чертеж, используя SolidWorks. Вот рендер того, что получилось (все винтики прорисовывать не стал):

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

Развертка этих деталей получена с помощью специального инструмента в SolidWorks. Вырезаны они из листа алюминия 2 мм, снятого с корпуса ненужного прибора. На нем присутствовала гибка, поэтому марка алюминия видимо была подходящая для этого. Проблема согнуть все детали одинаково и ровно была решена с помощью специальной приспособы, тисков и молотка. Получилось даже лучше, чем я ожидал от ручного способа изготовления.

Следующий пункт — это втулки на противоположной от вала стороне сервы. Через эти втулки сервоприводы крепится в нижней части рамы.

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

И последнее, на чем стоит остановиться — детали на окончаниях ног.

Они напечатаны на 3d принтере из ABS пластика. Далее в их круглые пазы вклеиваются резиновые ножки для приборных корпусов. В итоге получается завершенная деталь, способствующая увеличению трения контакта с поверхностью. Без них, соотношение инерции робота и «цепкости» лапок, ведет к проскальзыванию последних при ходьбе и других действиях на любой ровной поверхности.

Остальные плоские части изготовлены из дюралюминия толщиной 2.2 мм.

Сборка робота
Сборка происходила в несколько этапов. Это связано с отладкой его отдельных частей. Сначала были собраны только шасси с сервоконтроллером, а управление осуществлялось с настольного компьютера amd64 через USB. Затем появился BBB с хабом, и в последнюю очередь — батарея со стабилизаторами и IMU.

На фото — различные этапы сборки и конечный результат.

BeagleBone
На BBB установлена система Ubuntu 13.04 из готового образа. Сегодня уже нет доступной для скачивания этой версии дистрибутива, а есть только последняя и LTS. Версия ядра 3.8.

eMMC прошивалась через microSD карту. Самый простой способ записи образа на флешку — это с помощью программы Image Writer для Windows. Инструкции по прошивке можно найти здесь.

Теперь про инициализацию UART в BBB. Это делается через Device Tree Compiler (DTC) и подробнее об этом можно узнать здесь. Установить на BBB можно таким способом:

wget -c https://raw.github.com/RobertCNelson/tools/master/pkgs/dtc.sh chmod +x dtc.sh ./dtc.sh

Взято отсюда.

После того как Rx и Tx UART появились на пинах P9_11 и P9_13 (в случае с uart5), можно передавать данные. А для того, чтобы менять битрейт используется утилита stty. Запускается она через скрипт, перед началом работы с серво-контроллером:

stty -F /dev/ttyO4 cs8 115200

На контроллере скорость устанавливается через Maestro Control Center.

Чтобы UART «заводился» каждый раз при старте системы, стоит добавить строчку sudo bash -c "echo enable-uart5 > /sys/devices/bone_capemgr.*/slots" в rc.local.

Как было описано выше, IMU использует интерфейс I2C. I2C на BBB работает по умолчанию, никаких дополнительных действий для его запуска не требуется. Но прежде чем писать узел ROS для IMU, была полезна проверка правильности подключения интерфейса посредствам утилиты i2c-tools для Linux. Разобраться с I2C еще помогло видео.

Большой проблемой оказалось заставить нормально работать джойстик по bluetooth. Подключить его не составило труда — всё в соответствии с описание узла ps3joy и учебником к нему. Только драйвер для джойстика, начиная с версии ядра 3.5, стал получать события с устройства с низкой частотой: порядка 5Гц. Этого недостаточно для нормального управления. О проблеме как раз говорится здесь. Поэтому, перепробовав кучу других драйверов, нашел один рабочий для arm-linux. Это драйвер sixad. Но чтобы он заработал на BBB, его необходимо собрать вручную. Это было сделано для Raspberry PI и подробно описано здесь. При компиляции у меня почему-то возникла ошибка:

error: ... was not declared in this scope

Она разрешилась добавлением хедера unistd.h в каждый исходный файл драйвера.

После того, как драйвер собран и установлен, геймпад все равно не подключился сразу. Это решилось изменением конфигурации bluetooth:

echo "DisablePlugins = input" >> /etc/bluetooth/main.conf

После этого можно было сделать запуск драйвера как демона и свободно подключать джойстик по нажатию кнопки PS3.

USB Wi-Fi работает из коробки. Чтобы он клиентом подключался к роутеру, нужно изменить в /etc/network/interfaces поля:

wpa-ssid "" wpa-psk ""

ROS
Для начала ROS был установлен на настольный компьютер. Версия дистрибутива Hydro Desktop-Full, установилась без проблем на Ubuntu 13.04. На «большом» компьютере удобно заниматься отладкой написанных узлов и кинематической модели в средствах визуализации ROS. Вдобавок, компиляция идет гораздо быстрее, чем на BBB. Поэтому все разрабатывалось на компьютере, а потом только переносилось на BBB и компилировалось там. К сожалению кросс-компиляция для ROS пока является трудной задачей.

Для визуализации существует удобный инструмент — rviz. Он использовался для просмотра получившейся модели и того, как она ведет себя при управлении. Для этого есть joint_state_publisher — пакет содержащий инструменты настройки и изменения положения «суставов» и robot_state_publisher — пакет транслирующий положение робота в tf. Сама модель содержится в URDF файле. В нем описываются все сегменты (links) и их сочленения (joints), а также их взаимное расположение. Для наглядности прикрепляются 3d модели частей в формате STL. Но так как робот содержит повторяющиеся части (ноги), удобно использовать формат XACRO (XML Macros), который затем преобразуется в URDF. Главные преимущества XACRO: наличие макросов, математических операций и констант. Таким образом, можно минимизировать код, описывающий модель робота. На рисунке структура и визуализация модели в rviz.

При написании основных узлов на С++ использовалась IDE Eclipse Kepler. Про конфигурацию Eclipse можно почитать тут. А вообще перед началом стоит ознакомиться с учебником, roscpp и catkin.

Разработка ПО
В этой статье не будет описываться код узлов, будут представлены только их общая структура и назначение. Подробнее про написание кода — в следующей статье.

Итак, общая схема структуры узлов ROS на BBB (в эллипсах — название узлов, в прямоугольниках — название топиков):

joy_node — готовый пакет, позволяет преобразовывать данные из файла стандартного устройства Linux (/dev/input/js) в сообщения «Joy» и транслировать их в топики ROS. Полезным будет посмотреть в tutorial пакета. Почти всегда в них кроются многие ответы на вопросы.

crab_teleop_joy — узел, который обрабатывает данные с джойстика и преобразует их в сообщения для управления гексаподом. Например, из положения по двум осям «аналоговой» ручки вычисляется угол курса, а удаленность его от центра влияет на длину шага. Эти величины затем используются в генераторе походки. Также строится логика использования определенных комбинаций и последовательностей нажатия кнопок. Полученные сообщения передаются дальше в три топика.

crab_leg_kinematics — узел-сервис. Его назначение — решение задачи инверсной кинематики, то есть на основе координат end-effector'а (в моем случае — это кончики ножек) вычислять углы положения суставов (углы сервоприводов). Запрос сервису формируется в виде шести векторов целевого положения кончиков ног, а ответ приходит в виде 18'ти углов сервоприводов. Написан узел с использованием Kinematics and Dynamics Library (KDL), которая интегрирована в ROS. Клиентами узла являются crab_body_kinematics и crab_gait.

crab_body_kinematics — вычисляет векторы положения концов ног на основе модели робота URDF и данных из сообщения, которое содержит желаемые линейные и угловые отклонения рамы от начального положения, а также радиус раскрытия ног. Также реализованы команды подъема из стартового положения (когда робот лежит на раме, а ноги сложены) и возврат в стартовое положение.

crab_gait — узел, генерирующий векторы положения концов ног для реализации двух типов походки. На входе — сообщения, содержащие команды о типе и состоянии походки (идти/стоять) и величины управления: углы курса и рыска и размер шага. Типы походки следующие — tripod и ripple:

Походка типа tripod быстрее, но при этом нагрузка на центральные ноги больше, чем на передние и задние, что плохо сказывается на продолжительность жизни серв.

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

crab_imu — драйвер MinIMU-9, собран из частей Arduino скетча. Содержит алгоритм расчета углов Эйлера на основе данных с MEMS датчиков. Также содержит простой П-регулятор, формирующий воздействия, компенсирующие отклонения по тангажу и крену. Эти воздействия передаются через топик move_body в crab_body_kinematics для задания нужного положения ног.

crab_maestro_controller — последний узел-драйвер для Mini Maestro. На входе у него 18 угловых положений сервоприводов, которые он преобразует в протокол общения сервоконтроллера по UART.

Структурная схема визуализации незначительно отличается от схемы системы робота. В визуализации всё те же узлы, кроме узла crab_maestro_controller, который заменяют узлы crab_joint_publisher, joint_state_publisher, robot_state_publisher и tf.

О последних было написано выше.

crab_joint_publisher — преобразует сообщения предназначенные для контроллера, в сообщения «JointState», которые подаются на вход joint_state_publisher.

Теперь о некоторых этапах разработки с видео.

Сначала всё управление гексаподом осуществлялось с компьютера. Началом послужило испытание инверсной кинематики с помощью рисования окружности одной из ног:

Затем собраны части управления положением и ориентацией тела:

И воплощение этого на настоящем роботе:

После этого запустил всё это на BBB и испытывал узел IMU:

Потом робот пошел ripple походкой, управляемый с джойстика:

И в конце возможности гексапода на сегодняшний день:

Заключение
Создание гексапода было очень интересным процессом, а возможности ROS и производительность BeagleBone Black позволяют добавлять и совершенствовать программную составляющую робота. В этой статье хотелось показать в первую очередь возможности удобной разработки при помощи ROS, а также обратить внимание, какие инструменты использовались для создания робота, не вдаваясь в подробности. На начальном этапе было наиболее сложным разобраться с чего же начать и какими средствами при этом пользоваться. Надеюсь, статья поможет сориентироваться в выборе пути разработки.

P. S. Исходники проекта на github

habr.com

робот под управлением вашего смартфона

Всем известно, роботы, даже очень крохотные, - удовольствие не из самых дешёвых. В основном, из-за дорогих электронных элементов, датчиков, процессоров, интерфейсов. Все эти устройства есть и в Вашем смартфоне – так зачем же переплачивать?

        Всем известно, роботы, даже очень крохотные, - удовольствие не из самых дешёвых. В основном, из-за дорогих электронных элементов, датчиков, процессоров, интерфейсов. Все эти устройства есть и в Вашем смартфоне – так зачем же переплачивать? Так почему бы просто не подключить его к Вашему роботу? И вот эта идея реализуется - появляются один за другим роботы Romo, Botiful, Polaris. Сейчас уже на подходе – SmartBot от фирмы Overdrive Robotics.

        Стандартная платформа смартбота (SmartBot) напомнит Вам тележку на двух колесиках. Он оснащен бортовым микропроцессорным блоком, динамиком, передними фарами на светодиодах, а также портом для обновления программного обеспечения (или для дополнительного подключения платы Arduino). Смартфон (на базе iOS, Android или Windows) необходимо ставить на клейкую, которая покрыта силиконом платформу, она установлена на передней панели (угол наклона можно регулировать). Его связь с роботом реализуется с помощью провода, который вставляется в гнездо чтобы подключить наушники.

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

        Эти способности имеют зависимость от специального мобильного приложения. Вот пару задач, которые уже отработаны: управлять роботом на расстоянии в режиме реального времени (и смотреть «сквозь» его видеокамеру) с помощью второго смартфона, научить робота узнавать друзей и говорить с ними; просто отправить его в незнакомую компанию, чтобы SmartBot, с помощью ПО по распознаванию лиц, фотографировал их; и конечно, играть в самые разные игры.

        Создатели побеспокоились о возможности подключения и дополнительного оборудования. Вы сможете приспособить сервомотор, захватывающее устройство, адаптер LEGO, ручку для рисования (которая позволит SmartBot рисовать по поверхности) и оружие стреляющее шариками.

        Приобрести cмартбот можно будет уже в этом месяце, нужно лишь сделать предварительный заказ стоимость которого €165 (Европа) или $180 (США).

econet.ru

торговый робот, робот для Quik, MA, SMA, EMA, тренд, падающая скользящая

Всех приветствую.

Представляю вашему вниманию робота для торговли растущей/падающей скользящей. Данный робот позволит вам торговать движение скользяще средней и автоматизировать свою торговлю. С помощью этого робота можно торговать как трендовые алгоритмы так и контртренд. В этой статье рассмотрим тесты трендовой составляющей, опишу как быстро установить и запустить торговлю.

План:

1) Тестирование стратегии;

2) Как установить робота для торговли растущей/падающей MA;

3) Как использовать;

4) Заключение

1) Тестирование стратегии

Стратегия предлагается как пример. Тесты проводились на прошлых ликвидных фьючерсных контрактах с одинаковыми параметрами(без «подгона»):

Таймфрейм 5мин., SMA по Close с периодом сглаживания 72

Тесты делались на торговлю в тренд(то есть в роботе это, «при росте MA» Long)

Учтена комиссия 1р. Для всех контрактов.

SiH6

RIH6

2) Как установить робота

Разархивируйте и сохраните в удобном месте. Для запуска нескольких копий сделайте доп. копии папок робота и установите соответствующие настройки.

Запускаем MA_UPDN.exe и настраиваем.

  • Класс - класс инструмента (смотреть надо в таблице всех параметров Квика "Код класса") для Сбербанка - TQBR, Газпрома - TQBR, для их текущих фьючерсов SPBFUT
  • Инструмент - торгуемый инструмент (смотреть надо в таблице всех параметров Квика "Код бумаги") для Сбербанка - SBER, Газпрома - GAZP, для их текущих фьючерсов SRM6 и GZM6
  • Таймфрейм – это используемый таймфрейм для индикатора
  • Кол-во – это количество торгуемых лот роботом
  • Тип MA – это тип Moving Average используемой в роботе.
  • Сглаживание – это период сглаживания
  • Способ – это значения используемые для построения скользящей средней.
  • На выбор можно строить мувинги по: открытиям свечи, вершинам, низам, закрытиям, среднему по тенями, сренему по телу и (Open+High+Low+Close)/4

  • Id – это точка отсчета для id транзакций робота. Если будете запускать нескольких роботов, увеличьте данное число у следующего на 1000
  • При росте MA – здесь можно настроить действие, которое будет применять робот при росте относительно предыдущего значения. Перерасчет ведется по закрытым барам. Если значение MA не изменится , то робот оставит текущее направление тренда.
  • Вкл. – если установить галочку робот начнет торговать, если снять, то робот закроет свою позицию.
  • Примечание! Все изменения вступают в силу только после нажатия кнопки Применить.

    Примечание! Для работы робота можно не располагать на графике индикатор.

    Примечание! Для более удобного визуального отображения можно добавить индикатор moving average при этом выбрав в настройках отображения в виде гистограммы(Вид графика).

    Важно! ТФ, Класс , Инст. нельзя менять на лету, после изменения этих параметров придется остановить main.luac и перезапустить. Все остальные параметры можно менять на лету.

    В Quik выбираем Создать Окно->Все типы окон

    Добавляем таблицу обезличенных сделок. Это нужно для дополнительного контроля идущих транзакций.

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

    У вас появится таблица.

    Отлично.

    После этого запускаем main.luac в Quik Сервисы ->Lua скрипты

    Если у вас стоит галочка Вкл. в MA_UPDN.exe , то робот сразу начнет торговать.

    3) Как использовать

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

    Робот является переворотным и все время находится в позиции когда включен.

    Как видно из скрина можно торговать и контртренд, устраивая сиртаки :)

    Какие стратегии можно торговать:

  • Трендовые
  • Для этого надо в пункте «при росте MA» установить режим Long.
  • Контртренд
  • Для этого надо в пункте «при росте MA» установить режим Short.

    Можно запустить несколько ботов на одном или разных инструментах, для этого надо просто сделать копию папки, настроить нужные параметры и запустить.

    СКАЧАТЬ

    4) Заключение

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

    o-s-a.net

    Hexapod-робот под управлением ROS / Блог им. tuuzdu / RoboCraft. Роботы? Это просто!

    Робот гексапод — это платформа, использующая для передвижения шесть ног. После просмотра множества видео в интернете, стало ясно, что очень интересно наблюдать за передвижением подобных роботов. И тут возникло желание сделать что-то похожее, но с одноплатным компьютером BeagleBone Black (далее BBB) на борту, потому что подобных проектов еще не было. Информацию о таких роботах было найти непросто, особенно, что касается программной составляющей. Некоторое время было непонятно с чего начинать, но вскоре было решено начать с изготовления конструктива робота — шасси и электронной составляющей, а затем заняться программированием того, что получилось. Изучив на Robocraft.ru некоторые статьи про операционную систему для роботов — ROS — было принято решение построить управление именно на ней, тем более мощности BBB должно было хватить на это. К тому же, ROS очень перспективное направление в робототехнике со множеством инструментов и готовых решений для разработки. Выбор «железа» Как отмечено выше, мозгом системы стал BeagleBone Black: Также BBB поддерживает Ubuntu, но с ядром для ARM архитектуры. Экспериментальный режим, в котором пока работает ROS для ARM, на процесс работы никак не повлиял, так как были использованы инструменты, стабильно работающие на linux-arm. Следующая важная часть — это серво-контроллер. BBB обладает несколькими каналами PWM, но их явно не достаточно для 18ти сервоприводов. К тому же управление PWM излишне будет нагружать процессор. Логичнее использовать готовый серво-контроллер с управлением через какой-нибудь интерфейс. Выбор пал на подходящий Mini Maestro 18-Channel USB Servo Controller: Этот контроллер обладает 18ю каналами для серво, имеет интерфейс UART и USB. Управляется он через «свой» протокол, в который входят установки целевого угла сервопривода, а также его скорости и ускорения, кроме этого обладает удобными средствами калибровки в графической оболочке. Но быстро подключить Mini Maestro к BBB не получится, так как уровни UART интерфейса у них различные: 5 V и 3.3 V. Пришлось использовать еще дополнительное устройство — конвертер логических уровней, которой преобразует 3.3 V в 5 V и обратно. Такую штуку я заказал со Sparkfaun.com. Это BOB-08745: Теперь можно без проблем соединить BBB и контроллер, чтобы они общались по UARTу. Для будущих исследований захотелось IMU, чтобы робот хоть как-то ощущал себя в пространстве. IMU с акселерометром, магнитометром и гироскопом я заказал так же на Pololu: Это маленькая плата MinIMU-9 v2 с двумя двумя чипами L3GD20 и LSM303DLHC, связывающиеся с периферией по интерфейсу I2C. MiniIMU способна работать от 2.5V до 5.5V, поэтому никаких конвертеров не понадобилось. На многих видео гексаподы управлялись геймпадом от различных приставок. И не зря. Обладающий множеством кнопок и двумя «аналоговыми» ручками, джойстик становится удобным устройством управления. В ROS нашелся драйвер для стандартного джойстика и я решил не отходить от «традиций» и приобрел оригинальный (чтобы было меньше проблем с подключением) PS3 Dual Shock 3: Для подключения по Bluetooth, очевидно, необходим был USB адаптер. В итоге их у меня оказалось два, потому что один из них не захотел работать с имеющимся драйвером (об этом далее). А MobileData UBT-206 — заработал. Для связи BBB с настольным компьютером используется протокол SSH, который в свою очередь использует, к примеру, Ethernet, Ethernet-over-USB (технология, позволяющая эмулировать ethernet-сеть через USB) или Wi-Fi. Подключать каждый раз провода не очень удобно и чтобы избавиться от этого был добавлен еще USB Wi-Fi адаптер. Ознакомившись, какой лучше адаптер подойдет для BBB, стало ясно, что ядро arm-linux поддерживает драйвер rtl8192cu на базе которого работает широкий круг устройств. Был выбран компактный NetGear WNA1000M (на картинке вместе с MobileData UBT-206): Хотя многие рекомендуют использовать адаптеры с внешней антенной, этот работает довольно стабильно. Ну и чтобы расширить всего один USB Host разъем BBB, необходим USB концентратор. Понравился вот этот — MobileData HDH-700, потому что у него есть кнопочки-выключатели на каждое из четырех устройств: Следующим пунктом идет элементы питания всех бортовых устройств. Аккумулятор — Li-Po 2200mAh, состоящий из двух банок. Вместе с ним два стабилизатора напряжения преобразуют напряжение аккумулятора в необходимые 5V (для BBB и серво-контроллера) и 6V (для сервоприводов). Также на аккумулятор установлен сигнализатор низкого заряда, который пронзительно пищит, когда напряжение батареи падает до минимума. Выбор конструкции и сервоприводов Существует множество конструкций гексаподов, сделанных из различных материалов. Я не буду здесь выкладывать фото, так как их легко найти в интернете. Классический вариант состоит из трех приводов на каждую ногу, что дает достаточную степень свободы. Конечно, можно обойтись и двумя приводами — но движения при этом станут более «дерганными». Различны материалы и технологии изготовления частей подвески. Это может быть печать на 3d принтере или лазерная резка из листов пластика, фанеры или металла. Так как 3d принтера под рукой не было и прочность напечатанных деталей оставляет желать лучшего, я выбрал конструкцию из металла, а именно из алюминия и дюралюминия. Тем более на работе у меня был доступ к фрезерному станку с ЧПУ, поэтому детали было решено изготовить из листов металла путем фрезеровки. Главным примером, по образу которого я создавал собственную конструкцию, является Lynxmotion Phoenix: В создании также очень помогла модель с GrabCAD. Одной из главных частей робота являются сервоприводы. Они должны обладать достаточным крутящим моментов и, для надежности, редуктор стоит выбрать из металла. Такие сервы от известных фирм Hitec и Futaba стоят порядка $20-$30. Поэтому, вместо «не дешевых» сервоприводов Hitec HS-645/485MG были заказаны китайские, которые в два раза дешевле Turnigy TGY-S901D: При питании в 6V они способны справляться с максимальной нагрузкой в 12.5 кг/см, чего с запасом хватало для робота с расчетной массой в 2 кг. А запас в китайских сервах необходим, так как качество у них оставляет желать лучшего. Некоторые из них работают с посторонними звуками с самого начала. Также они имеют довольно большой люфт и кривые оси. Но за 10$ за штуку — это приемлемо. К сервам был куплен алюминиевый дисковый крепеж на вал для повышения прочности и упругости конструкции:Создание 3d модели в SolidWorks и изготовление деталей Таким образом, определившись с базовым набором комплектующих деталей, я начал создавать 3d чертеж, используя SolidWorks. Вот рендер того, что получилось (все винтики прорисовывать не стал): Отдельно, наверное, стоит остановится на некоторых деталях и узлах. Кроме плоских деталей, особую сложность представляли детали, полученные путем гибки: Развертка этих деталей получена с помощью специального инструмента в SolidWorks. Вырезаны они из листа алюминия 2 мм, снятого с корпуса ненужного прибора. На нем присутствовала гибка, поэтому марка алюминия видимо была подходящая для этого. Проблема согнуть все детали одинаково и ровно была решена с помощью специальной приспособы, тисков и молотка. Получилось даже лучше, чем я ожидал от ручного способа изготовления. Следующий пункт — это втулки на противоположной от вала стороне сервы. Через эти втулки сервоприводы крепится в нижней части рамы. Втулки необходимы для равномерного распределения нагрузки на две пластины рамы, иначе вал сервопривода может изогнуться. Втулки сделаны всё на том же фрезерном станке из капролона — полимера, применяемого в антифрикционных деталях. И последнее, на чем стоит остановиться — детали на окончаниях ног. Они напечатаны на 3d принтере из ABS пластика. Далее в их круглые пазы вклеиваются резиновые ножки для приборных корпусов. В итоге получается завершенная деталь, способствующая увеличению трения контакта с поверхностью. Без них, соотношение инерции робота и «цепкости» лапок, ведет к проскальзыванию последних при ходьбе и других действиях на любой ровной поверхности. Остальные плоские части изготовлены из дюралюминия толщиной 2.2 мм.Сборка робота Сборка происходила в несколько этапов. Это связано с отладкой его отдельных частей. Сначала были собраны только шасси с сервоконтроллером, а управление осуществлялось с настольного компьютера amd64 через USB. Затем появился BBB с хабом, и в последнюю очередь — батарея со стабилизаторами и IMU. На фото — различные этапы сборки и конечный результат.BeagleBone На BBB установлена система Ubuntu 13.04 из готового образа. Сегодня уже нет доступной для скачивания этой версии дистрибутива, а есть только последняя и LTS. Версия ядра 3.8. eMMC прошивалась через microSD карту. Самый простой способ записи образа на флешку — это с помощью программы Image Writer для Windows. Инструкции по прошивке можно найти здесь. Теперь про инициализацию UART в BBB. Это делается через Device Tree Compiler (DTC) и подробнее об этом можно узнать здесь. Установить на BBB можно таким способом:wget -c https://raw.github.com/RobertCNelson/tools/master/pkgs/dtc.sh chmod +x dtc.sh ./dtc.sh Взято отсюда. После того как Rx и Tx UART появились на пинах P9_11 и P9_13 (в случае с uart5), можно передавать данные. А для того, чтобы менять битрейт используется утилита stty. Запускается она через скрипт, перед началом работы с серво-контроллером:stty -F /dev/ttyO4 cs8 115200 На контроллере скорость устанавливается через Maestro Control Center. Чтобы UART «заводился» каждый раз при старте системы, стоит добавить строчку sudo bash -c "echo enable-uart5 > /sys/devices/bone_capemgr.*/slots" в rc.local. Как было описано выше, IMU использует интерфейс I2C. I2C на BBB работает по умолчанию, никаких дополнительных действий для его запуска не требуется. Но прежде чем писать узел ROS для IMU, была полезна проверка правильности подключения интерфейса посредствам утилиты i2c-tools для Linux. Разобраться с I2C еще помогло видео. Большой проблемой оказалось заставить нормально работать джойстик по bluetooth. Подключить его не составило труда — всё в соответствии с описание узла ps3joy и учебником к нему. Только драйвер для джойстика, начиная с версии ядра 3.5, стал получать события с устройства с низкой частотой: порядка 5Гц. Этого недостаточно для нормального управления. О проблеме как раз говорится здесь. Поэтому, перепробовав кучу других драйверов, нашел один рабочий для arm-linux. Это драйвер sixad. Но чтобы он заработал на BBB, его необходимо собрать вручную. Это было сделано для Raspberry PI и подробно описано здесь. При компиляции у меня почему-то возникла ошибка:error: ... was not declared in this scope Она разрешилась добавлением хедера unistd.h в каждый исходный файл драйвера. После того, как драйвер собран и установлен, геймпад все равно не подключился сразу. Это решилось изменением конфигурации bluetooth:echo "DisablePlugins = input" >> /etc/bluetooth/main.conf После этого можно было сделать запуск драйвера как демона и свободно подключать джойстик по нажатию кнопки PS3. USB Wi-Fi работает из коробки. Чтобы он клиентом подключался к роутеру, нужно изменить в /etc/network/interfaces поля:wpa-ssid "" wpa-psk ""ROS Для начала я установил ROS на свой настольный компьютер. Версия дистрибутива Hydro Desktop-Full, установилась без проблем на Ubuntu 13.04. На «большом» компьютере удобно заниматься отладкой написанных узлов и кинематической модели в средствах визуализации ROS. Вдобавок, компиляция идет гораздо быстрее, чем на BBB. Поэтому все разрабатывалось на компьютере, а потом только переносилось на BBB и компилировалось там. К сожалению кросс-компиляция для ROS пока является трудной задачей. Для визуализации существует удобный инструмент — rviz. Он использовался для просмотра получившейся модели и того, как она ведет себя при управлении. Для этого есть joint_state_publisher — пакет содержащий инструменты настройки и изменения положения «суставов» и robot_state_publisher — пакет транслирующий положение робота в tf. Сама модель содержится в URDF файле. В нем описываются все сегменты (links) и их сочленения (joints), а также их взаимное расположение. Для наглядности прикрепляются 3d модели частей в формате STL. Но так как робот содержит повторяющиеся части (ноги), удобно использовать формат XACRO (XML Macros), который затем преобразуется в URDF. Главные преимущества XACRO: наличие макросов, математических операций и констант. Таким образом, можно минимизировать код, описывающий модель робота. На рисунке структура и визуализация модели в rviz. При написании основных узлов на С++ использовалась IDE Eclipse Kepler. Про конфигурацию Eclipse можно почитать тут. А вообще перед началом стоит ознакомиться с учебником, roscpp и catkin.Разработка ПО В этой статье не будет описываться код узлов, будут представлены только их общая структура и назначение. Подробнее про написание кода — в следующей статье. Итак, общая схема структуры узлов ROS на BBB (в эллипсах — название узлов, в прямоугольниках — название топиков): joy_node — готовый пакет, позволяет преобразовывать данные из файла стандартного устройства Linux (/dev/input/js) в сообщения «Joy» и транслировать их в топики ROS. Полезным будет посмотреть в tutorial пакета. Почти всегда в них кроются многие ответы на вопросы.crab_teleop_joy — узел, который обрабатывает данные с джойстика и преобразует их в сообщения для управления гексаподом. Например, из положения по двум осям «аналоговой» ручки вычисляется угол курса, а удаленность его от центра влияет на длину шага. Эти величины затем используются в генераторе походки. Также строится логика использования определенных комбинаций и последовательностей нажатия кнопок. Полученные сообщения передаются дальше в три топика.crab_leg_kinematics — узел-сервис. Его назначение — решение задачи инверсной кинематики, то есть на основе координат end-effector'а (в моем случае — это кончики ножек) вычислять углы положения суставов (углы сервоприводов). Запрос сервису формируется в виде шести векторов целевого положения кончиков ног, а ответ приходит в виде 18'ти углов сервоприводов. Написан узел с использованием Kinematics and Dynamics Library (KDL), которая интегрирована в ROS. Клиентами узла являются crab_body_kinematics и crab_gait.crab_body_kinematics — вычисляет векторы положения концов ног на основе модели робота URDF и данных из сообщения, которое содержит желаемые линейные и угловые отклонения рамы от начального положения, а также радиус раскрытия ног. Также реализованы команды подъема из стартового положения (когда робот лежит на раме, а ноги сложены) и возврат в стартовое положение.crab_gait — узел, генерирующий векторы положения концов ног для реализации двух типов походки. На входе — сообщения, содержащие команды о типе и состоянии походки (идти/стоять) и величины управления: углы курса и рыска и размер шага. Типы походки следующие — tripod и ripple: Походка типа tripod быстрее, но при этом нагрузка на центральные ноги больше, чем на передние и задние, что плохо сказывается на продолжительность жизни серв. Управление осуществляется с помощью двух «аналоговых» ручек джойстика: левый — изменение курса при постоянном рыске (перемещение «крабиком»), правый — изменение курса с изменением рыска (передвижение вперед-назад и влево-вправо).crab_imu — драйвер MinIMU-9, собран из частей Arduino скетча. Содержит алгоритм расчета углов Эйлера на основе данных с MEMS датчиков. Также содержит простой П-регулятор, формирующий воздействия, компенсирующие отклонения по тангажу и крену. Эти воздействия передаются через топик move_body в crab_body_kinematics для задания нужного положения ног.crab_maestro_controller — последний узел-драйвер для Mini Maestro. На входе у него 18 угловых положений сервоприводов, которые он преобразует в протокол общения сервоконтроллера по UART. Структурная схема визуализации незначительно отличается от схемы системы робота. В визуализации всё те же узлы, кроме узла crab_maestro_controller, который заменяют узлы crab_joint_publisher, joint_state_publisher, robot_state_publisher и tf. О последних было написано выше. crab_joint_publisher — преобразует сообщения предназначенные для контроллера, в сообщения «JointState», которые подаются на вход joint_state_publisher. Теперь о некоторых этапах разработки с видео. Сначала всё управление гексаподом осуществлялось с компьютера. Началом послужило испытание инверсной кинематики с помощью рисования окружности одной из ног: Затем собраны части управления положением и ориентацией тела: И воплощение этого на настоящем роботе: После этого запустил всё это на BBB и испытывал узел IMU: Потом робот пошел ripple походкой, управляемый с джойстика: И в конце возможности гексапода на сегодняшний день:Заключение Создание гексапода было очень интересным процессом, а возможности ROS и производительность BeagleBone Black позволяют добавлять и совершенствовать программную составляющую робота. В этой статье хотелось показать в первую очередь возможности удобной разработки при помощи ROS, а также обратить внимание, какие инструменты использовались для создания робота, не вдаваясь в подробности. На начальном этапе было наиболее сложным разобраться с чего же начать и какими средствами при этом пользоваться. Надеюсь, статья поможет сориентироваться в выборе пути разработки.

    robocraft.ru

    20 удивительных роботов, способных заменить человека

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

    Самые удивительные роботы планеты собрались на этой неделе в центре столицы на Международном форуме "Мобильные роботы-2010", организованном при поддержке Министерства образования и науки РФ. В рамках форума во Дворце спорта сразятся роботы-сумоисты, свои способности продемонстрируют умные машины, объезжающие препятствия, сборщики урожая и уборщики мусора…

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

    Космонавт

    В сентябре 2010 года первый робот под именем Робонавт Второй приступит к выполнению своих обязанностей на борту шаттла Discovery. Уникальность этого устройства в том, что, будучи ловким и подвижным, он может с легкостью поднимать груз массой свыше 9 кг. В отличие от человека ему не нужен скафандр, а значит Робонавт может делать многое из того, что делают люди, но в вакууме и без специальной защиты, сообщает gzt.ru.

    Домохозяйка

    Одно из самых популярных направлений в роботостроении – создание помощников по хозяйству. Вообще, робот – это машина с антропоморфным поведением. Слово это впервые появилось в пьесе чешского писателя Карела Чапека "Р. У. Р", сам термин происходит от чешского robota - подневольный труд. Получается, что прислуживание людям – их основная задача. Вот и корейский Mahru-Z умеет наводить порядок в доме, загружать стиральную машину, подогревать пищу в микроволновке и приносить ее хозяину, пишет zhelezyaka.com.

    Шахматист

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

    Робот-чемодан

    Российские изобретатели говорят, что уже в следующем году в продаже появится робот-чемодан. Устройство будет само ездить за хозяином, точнее, за обладателем карточки-маяка. Оно преодолевает препятствия и учитывает особенности ландшафта, например, умеет останавливаться перед лестницами и замедляет ход по наклонной плоскости. Заряда аккумулятора хватает на 2 часа работы, выполнен он из ударопрочного и влагонепроницаемого материала, пишет robotronic.ru.

    Ребенок

    Перед тем, как решиться стать родителями, японские изобретатели советуют завести робота-симулятора ребенка. Называется он Yotaro и способен доставить все трудности, которые ждут молодых родителей. Он может выражать эмоции, в частности, умеет плакать водой.

    Медсестра

    Конечно, механизмы прежде всего призваны облегчить жизнь человеку. Ученые постоянно создают медицинских микророботов, способных проникать в организм человека, механизированные руки и т.д. А американские ученые, например, разработали прототип инвалидного кресла, которое может самостоятельно двигаться. Лазерные детекторы оценивают особенности ландшафта и прокладывают маршрут. В Японии в больницах уже трудятся механизированные медсестры и братья, а в будущем они еще и смогут носить больных на руках. Устройство весом до 180 кг с покрытым мягким материалом "руками" подхватит больного и, руководствуясь данными, получаемыми с сенсоров, перенесет пациента с места на места. Робот реагирует на голос и распознает лица.

    Пациент

    Роботы могут оказаться и тренажером. Например, стоматологическим. Внешне модель Hanako похожа на человека, пока начинающие медики "чинят" ей "зубы", она может изображать боль, закатывать глаза и пускать слюни. Кроме того, Hanako говорит "мне больно" и еще несколько стандартных фраз.

    Морские санитары

    На помощь экологам и океанологам приходят небольшие автономные роботы AUE (autonomous underwater explorers). Они могут работать "стаями" (по 5-6 машин размером с футбольный мяч и по 20 устройств поменьше), патрулируя морские глубины и собирая данные о состоянии воды, течениях, давлении, уровне загрязненности и т.д.

    Фотомодель

    Робот-модель разработали японские специалисты. Механическая девушка, в теле которой находится 30 моторчиков, может грациозно передвигаться по подиуму, принимать различные позы и выражать различные эмоции. Модель HRP-4C ростом 158 см весит 43 кг, пишет pinktentacle.com.

    Учитель

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

    Нюхач

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

    Кухонный помощник

    Первый робот-повар был сконструирован в 2006 г в Китае. Модель AIC-AI готовила самые разные блюда, конечно, китайской кухни. Она умеет жарить, парить, варить, кипятить, печь и т.д. А Robo Waiter 1 работал в гонконгском ресторане. Робот курсировал между столиками, принимал заказы и, конечно же, приносил заведению дополнительный доход.

    Эморобот

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

    Самый маленький

    Самого маленького робота собрали в  Японии в 1992 году. Длина механизма составила всего 1 см. А самым маленьким человекоподобным роботом является модель BeRobot высотой чуть более 15 см. Он может ходить, танцевать, отжиматься и владеет нехитрыми приемами восточной борьбы тай-чи. Управлять механизмом можно голосом или пультом.

    Рыбы

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

    Тараканы

    А тараканороботы могут уничтожать популяции вредных насекомых. Ученые Франции, Бельгии и Швейцарии создали модель, которая выглядит как таракан, передвигается на колесиках, оснащено камерами и инфракрасными сенсорами. В будущем изобретатели намерены создать модели посерьезней, например, для управления овечьим стадом.

    Помощник

    Французская компания Robosoft недавно представила устройство под названием Kompai, предназначенное для помощи пожилым людям и людям с ограниченными возможностями. Kompai не только разговаривает и понимает речь, но и выполняет множество различных дел по дому. Кроме того, с помощью камеры, встроенной в робота, можно устанавливать связь с друзьями и знакомыми в Интернете.

    Музыканты

    Творчество тоже перестало быть прерогативой человека. Современные роботы умеют играть на музыкальных инструментах и писать картины. По данным Daily Mail, Модель WF-4RIV, придуманная специалистами университета Васседа, виртуозно играет на флейте, при этом она "прислушивается" к аудитории и музыкантам оркестра. Робот Haile, подобно живому барабанщику, подстраивается под звучащую мелодию и сам импровизирует. А созданная в Харбине четырехпалая рука играет на электронном органе.

    Художник

    Швейцарец Salvador DaBot с усами и в берете - робот, который рисует портреты. Сначала он делает снимок лица, а затем по специальному алгоритму делает рисунок. При этом он может "общаться".

    Любитель пива

    Изобретатели Австрии в 2004 году создали робота-алкоголика, пишет membrana.ru. Bar Bot сидит в баре, выискивая "жертву". Поймав на себе любопытный взгляд, он начинает просить монетку, а собрав необходимую сумму принимается крутиться вокруг своей оси, приговаривая: "Пожалуйста, одно пиво". Бармен вставляет банку пива в "руку". "Большое спасибо", - благодарит Bar Bot, и не спеша выливает напиток в напоминающий раковину "рот". Затем швыряет банку на пол, и процесс начинается снова.

    Материал подготовлен интернет-редакцией www.rian.ru на основе информации РИА Новости и открытых источников

    ria.ru

    Робот, ездящий по линии под управлением Arduino [Амперка / Вики]

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

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

    В нашем примере будет собран робот на лёгкой платформе с двумя колёсами и двумя датчиками линии, расположенными на днище робота перед колёсами.

    В результате выглядеть он будет так:

    Что понадобится

    Для нашего примера понадобятся следующие детали:

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

    Собираем робота

    Сначала соберём робота, установим всю механику и электронику.

    Собираем платформу

    Для начала прикрепим колёса к моторам.

    Затем с помощью пластиковых П-образных креплений прикручиваем моторчики к платформе. Обратите внимание на взаимное расположение крепления и моторчики: в креплении есть небольшие углубления, так что если всё соединить правильно, то моторчики будут крепко держаться и никуда не выскочат.

    Теперь крепим балансировочный шар.

    Отлично! Платформа собрана. Если вам кажется, что колёсам отведено слишком мало места и они трутся о платформу, то скорее всего вам нужно посильнее надавить на колёса, чтобы они плотнее сели на вал мотора.

    Крепим сенсоры

    Закрепим их, как показано на фото:

    Можно было бы выбрать и другое место. Это могло бы сделать контроль проще или сложнее, а самого робота более или менее эффективным. Оптимальное расположение — вопрос серии экспериментов. Для этого проекта просто был выбран такой способ крепления.

    Крепим Arduino

    Arduino закрепим с противоположной стороны двумя винтиками и гайками.

    Опять же, можно выбрать и другое место. Например над колёсами, если приподнять Arduino на латунных стойках. Это изменило бы положение центра масс и повлияло бы на эффективность робота в лучшую или худшую сторону.

    Крепим Motor Shield и соединительные провода

    Установим Motor Shield на Arduino и подсоединим соединительные провода. Обратите внимание, чтобы соотвествовать программному коду из примера ниже, моторчики соединены с Motor Shield так: правый — к клеммам M1 с прямой полярностью (плюс к плюсу), а левый — к M2 с обратной (плюс к минусу).

    В этом проекте, для экономии времени концы соединительных проводов просто скручены с контактами моторов. При работе «начисто» стоит жёстко припаять провода к моторам.

    Крепим Troyka Shield

    Присоединяем сверху Troyka Shield и подключаем датчики к 8 и 9 цифровым контактам. В итоге получаем следующую конструкцию:

    Программирование

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

    Основная идея алгоритма

    Пусть у нас усть белое поле, и на нём чёрным нарисован трек для нашего робота. Используемые датчики линии выдают логический ноль, когда «видят» чёрное и единицу, когда «видят» белое.

    На прямой робот должен пропускать трек между сенсоров, то есть оба сенсора должны показывать единички.

    При повороте траектории направо, правый сенсор наезжает на трек и начинает показывать логический ноль. При повороте налево, ноль показывает левый сенсор.

    Таким образом получаем простую систему с тремя состояниями:

    • STATE_FORWARD — нужно ехать вперёд

    • STATE_RIGHT — нужно поворачиваться направо

    • STATE_LEFT — нужно поворачиваться налево

    На вход системы поступает информация с сенсоров. Получаем следующую логику переходов:

    Левый Правый Целевое состояние
    0 0 STATE_FORWARD
    0 1 STATE_RIGHT
    1 0 STATE_LEFT
    1 1 STATE_FORWARD

    Реализация на Arduino

    LineRobot_v1.ino // Моторы подключаются к клеммам M1+,M1-,M2+,M2- // Motor shield использует четыре контакта 6,5,7,4 для управления моторами #define SPEED_LEFT 6 #define SPEED_RIGHT 5 #define DIR_LEFT 7 #define DIR_RIGHT 4 #define LEFT_SENSOR_PIN 8 #define RIGHT_SENSOR_PIN 9   // Скорость, с которой мы движемся вперёд (0-255) #define SPEED 35   // Коэффициент, задающий во сколько раз нужно затормозить // одно из колёс для поворота #define BRAKE_K 4   #define STATE_FORWARD 0 #define STATE_RIGHT 1 #define STATE_LEFT 2   int state = STATE_FORWARD;   void runForward() { state = STATE_FORWARD;   // Для регулировки скорости `SPEED` может принимать значения от 0 до 255, // чем болше, тем быстрее. analogWrite(SPEED_LEFT, SPEED); analogWrite(SPEED_RIGHT, SPEED);   // Если в DIR_LEFT или DIR_RIGHT пишем HIGH, мотор будет двигать соответствующее колесо // вперёд, если LOW - назад. digitalWrite(DIR_LEFT, HIGH); digitalWrite(DIR_RIGHT, HIGH); }   void steerRight() { state = STATE_RIGHT;   // Замедляем правое колесо относительно левого, // чтобы начать поворот analogWrite(SPEED_RIGHT, SPEED / BRAKE_K); analogWrite(SPEED_LEFT, SPEED);   digitalWrite(DIR_LEFT, HIGH); digitalWrite(DIR_RIGHT, HIGH); }   void steerLeft() { state = STATE_LEFT;   analogWrite(SPEED_LEFT, SPEED / BRAKE_K); analogWrite(SPEED_RIGHT, SPEED);   digitalWrite(DIR_LEFT, HIGH); digitalWrite(DIR_RIGHT, HIGH); }     void setup() { // Настраивает выводы платы 4,5,6,7 на вывод сигналов for(int i = 4; i <= 7; i++) pinMode(i, OUTPUT);   // Сразу едем вперёд runForward(); }   void loop() { // Наш робот ездит по белому полю с чёрным треком. В обратном случае не нужно // инвертировать значения с датчиков boolean left = !digitalRead(LEFT_SENSOR_PIN); boolean right = !digitalRead(RIGHT_SENSOR_PIN);   // В какое состояние нужно перейти? int targetState;   if (left == right) { // под сенсорами всё белое или всё чёрное // едем вперёд targetState = STATE_FORWARD; } else if (left) { // левый сенсор упёрся в трек // поворачиваем налево targetState = STATE_LEFT; } else { targetState = STATE_RIGHT; }   if (state == targetState) { // мы уже делаём всё что нужно, // делаем измерения заново return; }   switch (targetState) { case STATE_FORWARD: runForward(); break;   case STATE_RIGHT: steerRight(); break;   case STATE_LEFT: steerLeft(); break; }   // не позволяем сильно вилять на прямой delay(50); }

    Проблема инертности и её решение

    Однако если выставить скорость моторов побольше, мы столкнёмся со следующей проблемой: наш робот будет вылетать с трека, не успевая отреагировать на поворот. Это связано с тем, что наши моторчики не умеют тормозить мгновенно.

    В этом легко убедиться поставив следующий эксперимент: с заданной скоростью робот будет двигаться по поверхности, и в некоторый момент будет установлена нулевая скорость и измерен тормозной путь робота. Пусть робот разгоняется по монотонной поверхности и тормозится при фиксировании импровизированной стоп-линии.

    Эксперимент проведём для разных скоростей. Код программы для эксперимента таков:

    stopping_distance_experiment.ino #define LEFT_SENSOR_PIN 8 #define RIGHT_SENSOR_PIN 9 #define SPEED_LEFT 6 #define SPEED_RIGHT 5 #define DIR_LEFT 7 #define DIR_RIGHT 4   // Для того чтобы убедиться, что именно тормозной путь долог, а не команда остановиться // приходит слишком поздно, будем включать светодиод, когда отдаётся команда. #define LED_PIN 13   int currSpeed = 40; void setup() { for(int i = 4; i <= 7; ++i) pinMode(i, OUTPUT);   analogWrite(SPEED_RIGHT, currSpeed); digitalWrite(DIR_RIGHT, HIGH);   analogWrite(SPEED_LEFT, currSpeed); digitalWrite(DIR_LEFT, HIGH);   pinMode(LED_PIN, OUTPUT); }   void loop() { if (currSpeed > 120) return;   boolean white[] = { !digitalRead(LEFT_SENSOR_PIN), !digitalRead(RIGHT_SENSOR_PIN) };   if (white[0] && white[1]) { // едем пока не упрёмся return; }   // зажигаем светодиод, останавливаем моторы // и наблюдаем digitalWrite(LED_PIN, HIGH); analogWrite(SPEED_RIGHT, 0); analogWrite(SPEED_LEFT, 0); delay(5000);   // повторяем эксперимент, увеличивая скорость // на 10 пунктов currSpeed += 10; if (currSpeed > 120) return;   digitalWrite(LED_PIN, LOW); analogWrite(SPEED_RIGHT, currSpeed); analogWrite(SPEED_LEFT, currSpeed); }

    На той поверхности, на которой проводился эксперимент, были получены следующие результаты:

    Таким образом, начиная с некоторого момента у нашего робота нет никакой возможности успеть среагировать и остаться на треке.

    Что можно сделать?! После того, как сенсоры улавливают поворот, можно остановиться и вернуться назад на некоторое расстояние, зависящее от скорости перед остановкой. Однако мы можем отдать команду роботу ехать с какой-то скоростью, но не можем приказать ему проехать какое-то расстояние.

    Для того, чтобы понять зависимость расстояния при заднем ходе от времени, был проведён ещё один замер:

    time_distance_rate.ino #define SPEED_LEFT 6 #define SPEED_RIGHT 5 #define DIR_LEFT 7 #define DIR_RIGHT 4   void go(int speed, bool reverseLeft, bool reverseRight, int duration) { analogWrite(SPEED_LEFT, speed); analogWrite(SPEED_RIGHT, speed); digitalWrite(DIR_LEFT, reverseLeft ? LOW : HIGH); digitalWrite(DIR_RIGHT, reverseRight ? LOW : HIGH); delay(duration); }   void setup() { for(int i = 4; i <= 7; ++i) pinMode(i, OUTPUT); }   void loop() { // Задержка 5 секунд после включения питания delay(5000);   for (int i = 200; i <= 1000; i += 100) { // Несколько сотен мс вперёд go(50, false, false, 200); go(0, false, false, 0);   // Задержка 5 секунд delay(5000); }   // Остановка до ресета или выключения питания go(0, false, false, 0);   // Приехали while (true) ; }

    На скорости 50, например, робот проделывал путь, зависящий от времени следующим образом:

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

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

    Адаптивное поведение

    Перед финальным экспериментом произведём ещё несколько поправок.

    Во-первых, нам необязательно давать команду ехать назад перед каждым поворотом, как мы помним, на маленькой скорости робот прекрасно справляется и без этого. К тому же лучше ему двигаться не прямо назад, а немного поворачивая, всё-таки робот находится перед поворотом.

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

    В итоге наш код будет выглядит следующим образом:

    Robot_v02.ino // Моторы подключаются к клеммам M1+,M1-,M2+,M2- // Motor shield использует четыре контакта 6,5,7,4 для управления моторами #define SPEED_LEFT 6 #define SPEED_RIGHT 5 #define DIR_LEFT 7 #define DIR_RIGHT 4 #define LEFT_SENSOR_PIN 8 #define RIGHT_SENSOR_PIN 9   // Скорость, с которой мы движемся вперёд (0-255) #define SPEED 100   // Скорость прохождения сложных участков #define SLOW_SPEED 35   #define BACK_SLOW_SPEED 30 #define BACK_FAST_SPEED 50   // Коэффициент, задающий во сколько раз нужно затормозить // одно из колёс для поворота #define BRAKE_K 4   #define STATE_FORWARD 0 #define STATE_RIGHT 1 #define STATE_LEFT 2   #define SPEED_STEP 2   #define FAST_TIME_THRESHOLD 500   int state = STATE_FORWARD; int currentSpeed = SPEED; int fastTime = 0;   void runForward() { state = STATE_FORWARD;   fastTime += 1; if (fastTime < FAST_TIME_THRESHOLD) { currentSpeed = SLOW_SPEED; } else { currentSpeed = min(currentSpeed + SPEED_STEP, SPEED); }   analogWrite(SPEED_LEFT, currentSpeed); analogWrite(SPEED_RIGHT, currentSpeed);   digitalWrite(DIR_LEFT, HIGH); digitalWrite(DIR_RIGHT, HIGH); }   void steerRight() { state = STATE_RIGHT; fastTime = 0;   // Замедляем правое колесо относительно левого, // чтобы начать поворот analogWrite(SPEED_RIGHT, 0); analogWrite(SPEED_LEFT, SPEED);   digitalWrite(DIR_LEFT, HIGH); digitalWrite(DIR_RIGHT, HIGH); }   void steerLeft() { state = STATE_LEFT; fastTime = 0;   analogWrite(SPEED_LEFT, 0); analogWrite(SPEED_RIGHT, SPEED);   digitalWrite(DIR_LEFT, HIGH); digitalWrite(DIR_RIGHT, HIGH); }     void stepBack(int duration, int state) { if (!duration) return;   // В зависимости от направления поворота при движении назад будем // делать небольшой разворот int leftSpeed = (state == STATE_RIGHT) ? BACK_SLOW_SPEED : BACK_FAST_SPEED; int rightSpeed = (state == STATE_LEFT) ? BACK_SLOW_SPEED : BACK_FAST_SPEED;   analogWrite(SPEED_LEFT, leftSpeed); analogWrite(SPEED_RIGHT, rightSpeed);   // реверс колёс digitalWrite(DIR_RIGHT, LOW); digitalWrite(DIR_LEFT, LOW);   delay(duration); }     void setup() { // Настраивает выводы платы 4,5,6,7 на вывод сигналов for(int i = 4; i <= 7; i++) pinMode(i, OUTPUT);   // Сразу едем вперёд runForward(); }   void loop() { // Наш робот ездит по белому полю с чёрным треком. В обратном случае не нужно // инвертировать значения с датчиков boolean left = !digitalRead(LEFT_SENSOR_PIN); boolean right = !digitalRead(RIGHT_SENSOR_PIN);   // В какое состояние нужно перейти? int targetState;   if (left == right) { // под сенсорами всё белое или всё чёрное // едем вперёд targetState = STATE_FORWARD; } else if (left) { // левый сенсор упёрся в трек // поворачиваем налево targetState = STATE_LEFT; } else { targetState = STATE_RIGHT; }   if (state == STATE_FORWARD && targetState != STATE_FORWARD) { int brakeTime = (currentSpeed > SLOW_SPEED) ? currentSpeed : 0; stepBack(brakeTime, targetState); }   switch (targetState) { case STATE_FORWARD: runForward(); break;   case STATE_RIGHT: steerRight(); break;   case STATE_LEFT: steerLeft(); break; }   }

    Результат

    Что дальше?

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

    Нет ничего лучше, чем обставить оппонента на секунду-другую.

    wiki.amperka.ru


    Читайте также
    • Гиперскоростная звезда – более 1.000.000 миль в час
      Гиперскоростная звезда – более 1.000.000 миль в час
    • Астрономы обнаружили самую большую спиральную галактику
      Астрономы обнаружили самую большую спиральную галактику
    • Млечный путь содержит десятки миллиардов планет, схожих с Землей
      Млечный путь содержит десятки миллиардов планет, схожих с Землей
    • Млечный путь разорвал своего спутника на четыре отдельных хвоста
      Млечный путь разорвал своего спутника на четыре отдельных хвоста
    • Найден источник водородных газов для нашей Галактики
      Найден источник водородных газов для нашей Галактики