17
Робототехника для прикладных программистов Максим Кирюшкин Лаборатория робототехники, ИИТ, ЧелГУ vk.com/robonora 10-я конференция .NET разработчиков 19 апреля 2015 dotnetconf.ru

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

Embed Size (px)

Citation preview

Page 1: Робототехника для прикладных программистов

Робототехника для

прикладных программистов

Максим Кирюшкин

Лаборатория робототехники, ИИТ, ЧелГУ

vk.com/robonora

10-я конференция .NET разработчиков

19 апреля 2015

dotnetconf.ru

Page 2: Робототехника для прикладных программистов

2

Робототехника – это очень просто

Page 3: Робототехника для прикладных программистов

3

Границы решений сегодня

На производстве

В космосе

В медицине

В сельском хозяйстве

Домашние роботы

Развлечения

Page 4: Робототехника для прикладных программистов

4

Что использовать как «мозг»?

Raspberry Pi

Arduino

BlackSwift и подобные

Page 5: Робототехника для прикладных программистов

5

Простой пример #include <Servo.h>

#define pinLed 12 #define pinServo 3 Servo servo;

void setup() { pinMode(pinLed, OUTPUT); servo.attach(pinServo); }

void loop() { digitalWrite(pinLed, LOW); servo.write(0); delay(2000);

servo.write(90); digitalWrite(pinLed, HIGH); delay(3000); }

Page 6: Робототехника для прикладных программистов

6

Среда разработки

Page 7: Робототехника для прикладных программистов

7

Среда разработки

Page 8: Робототехника для прикладных программистов

8

Что доступно для работы?

Двигатели и энкодеры к ним

Дисплеи, сенсорные панели

Датчики угла наклона и ускорения

Дальномеры и датчики прикосновения

Климатические датчики, сенсоры газов

Модули связи

Управление нагрузкой

Аудио, видео

Page 9: Робототехника для прикладных программистов

9

Управление роботом

Автономная программа

Джойстик у оператора

Внешний центр управления

Page 10: Робототехника для прикладных программистов

10

Управление по радиоканалу

APC220

эту часть

в компьютер

Page 11: Робототехника для прикладных программистов

11

Управление по радиоканалу

void setup() { Serial.begin(9600); pinMode(pinLed, OUTPUT); }

void loop() { if (ReadCmd()) { if (cmd == "ON") digitalWrite(pinLed, HIGH); else if (cmd == "OFF") digitalWrite(pinLed, LOW); } delay(100); }

bool ReadCmd() { if (Serial.available() <= 0) return false;

String _cmd = Serial.readStringUntil(' '); if (_cmd.length() == 0) return false;

if (cmd != _cmd) { cmd = _cmd; return true; } else return false; }

сторона Arduino

Page 12: Робототехника для прикладных программистов

12

Управление по радиоканалу

SerialPort serialPort = new SerialPort(); serialPort.PortName = "COM4"; serialPort.BaudRate = 9600; serialPort.Open(); serialPort.Write("ON "); Thread.Sleep(3000); serialPort.Write("OFF "); serialPort.Close();

сторона оператора (C#)

Page 13: Робототехника для прикладных программистов

13

Современные проблемы

Распознавание предметов вокруг себя

Ориентация в пространстве

Быстрая связь на больших расстояниях

Запас батарей

Page 14: Робототехника для прикладных программистов

14

Перспективные направления

Автомобили без водителей

IoT – интернет вещей

Роботы для сельского хозяйства

Умный дом

ROS – the Robot Operating System

Page 15: Робототехника для прикладных программистов

15

База для IoT

Wi-Fi

модуль

ESP8266

$2.70

Page 16: Робототехника для прикладных программистов

16

Заключительный пример

IBM Shoebox Voice Recognition Machine, ранние 60-ые

Page 17: Робототехника для прикладных программистов

17

Спасибо за внимание

Максим Кирюшкин

Лаборатория робототехники, ИИТ, ЧелГУ

[email protected]

vk.com/robonora