15
Программирование роботов на языке высокого уровня

DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Embed Size (px)

Citation preview

Page 1: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Программирование роботов на языке высокого уровня

Page 2: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Роботы которые развлекают

1%

Page 3: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Роботы которые работают

99%

Page 4: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Средние века

Сложная электроника

Низкоуровневое программирование

Page 5: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Программирование для кухарок

#include "stm32f10x_lib.h"

GPIO_InitTypeDef GPIO_InitStructure;ErrorStatus HSEStartUpStatus;

void RCC_Configuration(void);void NVIC_Configuration(void);void Delay(vu32 nCount);

int main(void){ RCC_Configuration(); NVIC_Configuration(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure);

while (1) { GPIO_SetBits(GPIOC, GPIO_Pin_4); Delay(0xAFFFF);

GPIO_ResetBits(GPIOC, GPIO_Pin_4); Delay(0xAFFFF); }}

void RCC_Configuration(void){ RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp();

if(HSEStartUpStatus == SUCCESS){ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH_Latency_2); RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK2Config(RCC_HCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); RCC_PLLCmd(ENABLE);

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {} RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while(RCC_GetSYSCLKSource() != 0x08) {} }}

void NVIC_Configuration(void){#ifdef VECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif}

void Delay(vu32 nCount){ for(; nCount != 0; nCount--);}

int led = 13;

void setup() { pinMode(led, OUTPUT); }

void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);}

Было Стало

Page 6: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Электроника для кухарок

Было Стало

Page 7: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Эпоха просвещения

Модульная электроника

Высокоуровневое программирование

Page 8: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Python

Raspberry PI

Курсы

Массы

HackerSpace

Page 9: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Raspberry PI

Broadcom ARM 11 700мГц512Мб ОЗУГрафический процессор

2х USB 2.0HDMI и RCA3.5 аудио jackEthernet 10/1008xGPIO, UART, I2C, SPI

Page 10: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Распространение Raspberry PI

Page 11: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Python

Высокоуровневый

Объектно-ориентированный

С минималистичным синтаксисом

С огромной кучей библиотек

Page 12: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Курсы

1.Базовый курс (что такое ШИМ, АЦП, LCD)

2.Мобильный робот (основы движения, машинное зрение)

3.Манипулятор (геометрия сложных движений)

4.Домашняя автоматика (камеры, реле, веб-интерфейс)

5.Беспилотные ЛА (авионика, навигация, телеметрия)

Page 13: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Кружок неюных техников - HackerSpace

Page 14: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Пилотный курс робототехники в УрФУRobotClass.ru

Page 15: DUMP-2013 Наука и жизнь - Опыт программирования роботов на языке высокого уровня - Евсегнеев Олег

Платформа МР1Raspberry PI + python

RobotClass.ru