Смекни!
smekni.com

Разработка программного обеспечения сенсорной системы мобильной платформы iRobot Create (стр. 8 из 13)

Рисунок 3.1 – Интерфейс программы RealTerm


Начинать работу с роботом необходимо с команды Старт, которой соответствует код операции номер 128. После неё необходимо указать режим работы (при первом обращении к iRobot Create), а потом интересующий нас код. Например: последовательность 128 132 142 9 переведет робот в полный режим и прочтет состояние датчика спада левого колеса.

Как видно из Рисунка 3.1 программа RealTerm будет сложной для понимания пользователям, плохо разбирающимся в аппаратном и программном обеспечении. Поэтому, будет целесообразно написать программу с более дружественным интерфейсом. Это возможно сделать с помощью таких языков как C#, C++, Delphi.

3.2 Описание программного обеспечения

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

Delphi – язык программирования, который используется в одноимённой среде разработки. Сначала язык назывался Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.

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

Delphi – результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal – динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией – данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.

Также отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу - там и буду лежать». Соответственно организуется и «многокучность».

Object Pascal (Delphi) является результатом функционального расширения Turbo Pascal.

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

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

Далее идет пример некоторых процедур программы.

Процедура, выполняющая получение данных с датчиков:

procedure TfrmCreateMain.doRequestSensorData(logit: boolean);

begin

// очистить буфер и приготовится получить данные с датчиков

bufptrstart:= 0; // сделать значения равными 0

bufptrend:= 0;

buflength:= 0;

sensor_index:= 0;

refreshtimercnt:= 0;

reading_sensors:= true;

doSend('142 6', logit);

end;

С помощью этой процедуры робот переводится в пассивный режим:

procedure TfrmCreateMain.btnPassiveModeClick(Sender: TObject);

begin

reading_sensors:= false;

doSend('128'); // отправка команды, устанавливающая робот в пассивный // режим

doRequestSensorData(true);

PageControl1.ActivePage:=tabSensors; // вывод значений датчиков

end;

Следующая процедура получает данные о спаде колес, датчиках бампера и ИК-датчиках, находящихся под бампером:

procedure TfrmCreateMain.ProcessSensorData;

var

i: integer;

dist,angl: smallint;

begin

// Спад колес

if (sensors[SenBumpDrop] and 16) = 16 then // проверка ролика на спад

shCaster.Brush.color:= clRed // закрасить фигуру в красный, если есть спад

else

shCaster.Brush.color:= clGreen; // закрасить в зеленый

if (sensors[SenBumpDrop] and 8) = 8 then // проверка на спад левого колеса

shLeftWheel.Brush.color:= clRed

else

shLeftWheel.Brush.color:= clGreen;

if (sensors[SenBumpDrop] and 4) = 4 then // проверка на спад правого колеса shRightWheel.Brush.color:= clRed

else

shRightWheel.Brush.color:= clGreen;

// Бампер

if (sensors[SenBumpDrop] and 2) = 2 then // проверка значения 1-го датчика

// бампера

shBumpLeft.Brush.color:= clRed // если есть касание, закрасить фигуру в // красный

else

shBumpLeft.Brush.color:= clGreen;

if (sensors[SenBumpDrop] and 1) = 1 then

shBumpRight.Brush.color:= clRed

else

shBumpRight.Brush.color:= clGreen;

// ИК-датчики под бампером

if (sensors[SenCliffL] = 1) then // проверка 1 ИК-датчика под бампером

shCliffLeft.brush.color:= clRed // если под датчиком нет поверхности – // закрасить его на схеме в красный

else

shCliffLeft.brush.color:= clGreen;

lblCliffLeft.caption:= inttostr((sensors[SenCliffLSig1] shl 8) + sensors[SenCliffLSig0]);

if (sensors[SenCliffFL] = 1) then// аналогично к первому проверка 2-го // датчика

shCliffFrontLeft.brush.color:= clRed

else

shCliffFrontLeft.brush.color:= clGreen;

lblCliffFrontLeft.caption:= inttostr((sensors[SenCliffFLSig1] shl 8) + sensors[SenCliffFLSig0]);

if (sensors[SenCliffFR] = 1) then

shCliffFrontRight.brush.color:= clRed

else

shCliffFrontRight.brush.color:= clGreen;

lblCliffFrontRight.caption:= inttostr((sensors[SenCliffFRSig1] shl 8) + sensors[SenCliffFRSig0]);

if (sensors[SenCliffR] = 1) then

shCliffRight.brush.color:= clRed

else

shCliffRight.brush.color:= clGreen;

lblCliffRight.caption:= inttostr((sensors[SenCliffRSig1] shl 8) + sensors[SenCliffRSig0]);

Интерфейс программы показан на рисунке 3.2.

Рисунок 3.2 – Интерфейс программы

Подключение к COM-порту осуществляется с помощью компонента TComPort. Для установки этого компонента и подключения его к программе необходимо в меню Delphi выбрать Component->Install Component, далее открыть вкладку «Into new package tab» и открыть файл CPort.pas, находящийся на диске, приложенном к дипломному проекту, и нажать кнопку «ОК» для компиляции и установки компонента.

3.3 Руководство пользователя

После открытия программа имеет интерфейс показанный на Рисунке 3.2. Для начала работы с программой необходимо открыть вкладку «Датчики» и нажать на кнопку «Открыть Com-порт…». После нажатия на эту кнопку, появится окно с установками для подключению к Com-порту (рис. 3.3).

Рисунок 3.3 – Установки для подключения к Com-порту

Baud rates устанавливает скорость передачи данных, Stop Bits устанавливает стоповый бит, data bits устанавливает количество бит в слове, Pfrity утанавливает проверку на четность. Необходимо установить следующие значения: количество бит в слове – 8; стоповый бит – 1; проверка четности – нет; скорость – 57600.

Потом выбрать «Пассивній режим», для того, чтобы убедиться, что программа считывает данные с датчиков робота, и установить фляжок «Автоматическое обновление» равное 300 мс. После этого программа должна отобразить значения всех датчиков. Для осуществления полного контроля над роботом необходимо нажать на кнопку «Полній режим». С помощью кнопок «Отправить 2» и «Отправить 3» можно отправлять роботу собственные скрипты. Кнопки «Вперед» и «Назад» позволяют осуществлять движение вперед и назад, соответственно, а кнопки «Вправо» и «Влево» – поворот вправо и влево, соответственно. В программе существуют следующие поля: «Пройденная дистанция» – показывает пройденное расстояние, мм; «Угол поворота» – показывает угол поворота, мм; «Скорость» – скорость, мм/с; «Левого колеса» и «Правого колеса» – скорость левого и правого колес, соответственно; «Состояние зарядки» – состояние заряда батареи; «Напряжение батареи» – напряжение батареи, мВ; «Температура батареи» – температура батареи, оC.

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

На вкладке «Log» показываетя код команды отправленной роботу.


4. БЕЗОПАСНОСТЬ ЖИЗНИ И ДЕЯТЕЛЬНОСТИ ЧЕЛОВЕКА

4.1 Анализ условий труда

Анализ условий труда проводится с точки зрения выявления возможных (потенциальных) опасных и вредных производственных факторов, созданных техническими средствами, технологическими процессами, неправильной организацией труда в производственных помещениях и на рабочих местах [17].

Помещение, где разрабатывается программное обеспечение сенсорной системы мобильной платформы iRobot, представляет собой вычислительный центр, который расположен на шестом этаже двенадцатиэтажного кирпичного здания. Производственное помещение имеет размеры 12x9x4 м. Таким образом площадь помещения составляет 108 м2, а его объем 432 м3. В помещении вычислительного центра работают 7 человек, находятся 7 ПЭВМ типа IBM PC, лазерный принтер и сканер. На каждого работающего отводится 15,4 м2 площади и 61.7 м3 объема помещения, что соответствует требованиям ДНАОП 0.00-1.31-99, при норме 6 м2 и 20 м3 на 1 работающего.

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

Для данного помещения выделим и проанализируем систему «Человек-Машина-Среда». Подсистемами данной системы являются: «Человек», «Машина», «Среда». Составляющими элементами подсистемы «Человек» являются операторы ЭВМ (для моего случая это программист). Составляющими элементами подсистемы «Машина» являются ПЭВМ, принтеры и другие периферийные устройства (для моего случая это ПК, лазерный принтер и сканер). Составляющими элементами подсистемы «Среда» является производственная среда в помещении. Предмет труда- то с чем человек работает (в моем случае с разработкой программ).

Элемент “человек” рассматривается с трех сторон.

Ч1 – это человек, управляющий машиной главным образом для выполнения основной задачи системы – производства выходного продукта, а также обеспечения возможности этого производства;

Ч2- это человек (коллектив), рассматриваемый с точки зрения непосредственного влияния на окружающую среду (за счет тепло- и влаговыделения, потребление кислорода и т.д.);