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

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: Цифровой журнал «Компьютерра» № 79 - Коллектив Авторов на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

Автомобили Mercedes-Benz классов E и S в базовой комплектации серийно комплектуются схожей по назначению, но менее «самостоятельной» системой слежения за самочувствием водителя Attention Assist. Эта система при помощи установленных на руле датчиков отслеживает манеру вождения водителя и составляет его индивидуальный профиль — на изучение манеры езды уходит до 30 минут.




По словам разработчиков, самую важную информацию о состоянии водителя можно получить именно по манере вращения руля: уставший водитель допускает всё больше мелких ошибок в управлении, требующих характерной коррекции. В профиле учитываются степень отклонения от заданной траектории движения, время и дальность поездки, ускорение автомобиля, угол поворота руля и даже метеоусловия — всего 70 параметров. В случае заметных изменений в манере вождения раздастся резкий звуковой сигнал, а на бортовой дисплей будет выведено предупреждение о необходимости сделать остановку. Attention Assist работает на скоростях свыше 80 км/ч.

Системы автоматической парковки остановившегося автомобиля уже давно не новинка, и они есть у всех ведущих производителей. К примеру, Volkswagen выпускает автомобили с Park Assist c 2007 года и ими могут оснащаться практически все модели — от компактных Golf до Tiguan и Passat CC. Микрокомпьютер, анализирующий информацию от ультразвуковых датчиков, позволяет припарковать автомобиль с ювелирной точностью, буквально в паре сантиметров от бампера соседней машины.

После остановки около предполагаемого места парковки водитель нажимает кнопку включения Park Assist, после чего на экран бортового компьютера выводится информация об алгоритме действий. В процессе парковки нужно отпустить руль и работать только педалями (и ручкой переключения передач в случае механической коробки).

В перспективной разработке BMW под названием Remote Controlled Parking вообще не нужно сидеть за рулём в процессе парковки. Вы выходите из машины и просто нажимаете кнопку на брелоке, после чего автомобиль плавно заезжает на свободное место или в гараж. Таким же образом вы можете «вызвать» машину: она заведётся, выкатится из гаража и встанет прямо перед вами. Выглядит чрезвычайно эффектно.

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

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


У многих крупных автомобильных концернов есть собственные программы по созданию автоматических систем управления. Например, Volkswagen работает над проектом HAVEit (Highly Automated Vehicles for Intelligent Transport — «Высокоавтоматизированные автомобили для интеллектуального транспорта»), в рамках которого в 2011 году была разработана полуавтоматическая система TAP (Temporary Auto Pilot — «Временный автопилот»), позволяющая ехать на полном автопилоте со скоростью до 130 км/с. Само название говорит о том, что водитель может доверить управление лишь в определённых условиях - к примеру, на скоростной трассе или в городской пробке. При этом человек в любой момент может взять управление на себя. В Volkswagen заявляют, что технически система TAP полностью готова к серийному производству.


Компания Google работает над проектом полностью роботизированного управления, которое испытывается на автомобилях Audi TT и гибриде Toyota Prius. В варианте Google активно используются данные GPS, сведения об окружающем пространстве, получаемые радарами и лидаром (вращающимся лазерном дальномере, устанавливаемом на крыше и собирающем трёхмерную информацию на расстоянии свыше 60 м), видеокамера, распознающая движущиеся предметы и сигналы светофора, а также датчики положения и ускорения. В 2010 году Google официально сообщила об успешном завершении автопробега в беспилотном режиме на расстояние около 225 000 км. Пробег проходил по дорогам общего пользование и систему подстраховывали сидящие на водительском месте профессионалы.

Несмотря на все успехи инженеров, главная проблема заключается в обеспечении 100% надёжности автомобильных автопилотов и в защите от случайных срабатываний. Можно себе представить, к каким чудовищным последствиям способен привести малейший сбой даже в однй машине на трассе со скоростью потока свыше 120 км/ч! К тому же совершенно не очевидно, на кого возлагать правовую ответственность в случае такого происшествия.

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

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

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

К оглавлению

StructureSynth: сыграйте мне про архитектуру

Радий Фиш

Опубликовано 26 июля 2011 года

Ещё за школьной партой мы узнаём, что любое изображение можно представить в виде множества точек. Сегодня, право, никого не удивить уже фрактальными генераторами ландшафтов или растительности, которые автоматически «отрисовывают» фотографического уровня изображения, опираясь, по сути, на математические формулы, и не более.

Использование формальных грамматик в качестве метода описания изображений впервые появилось в конце 60-х в работах венгерского биолога Аристида Линдермайера, который исследовал микроскопические грибы и бактерии и позднее распространил этот метод и на описание макрообъектов, в частности растений и деревьев. Его метод получил название L-системы (сокращение от Lindermayer-system).

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

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

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

Из числа арт-программ 2000-х одной из самых известных и канонических де-факто стал открытый проект ContextFreeArt:



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

Единственный его автор — Микаель Хвидтфельд Кристенсен (Mikael Hvidtfeld Christensen) в одиночку развивает проект в течение нескольких последних лет (с 2007 г.).

Кликните по изображению чтобы перейти на галерею изображений, полученных с помощью Structure Synth.

Проект распространяется по GPL и написан на C++ под OpenGL и QT, что позволяет портировать приложение на любые платформы (кроме разве что мобильных, для которых поддержка этих фреймворков если и появилась, то совсем недавно).

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

Основы формальных грамматик

Идеи, лежащие в основе формальных грамматик одновременно и очень просты и очень мощны. Объем теории по машинным языкам очень велик и изучается на многих специальностях, но в первом приближении нам понадобятся только аксиомы.

Для определения “языка” — то есть всех возможных цепочек символов — требуется задать:

1. Множество конечных символов

Множество самых базовых объектов, из которых строится структура или язык. Для естественного или машинного языка это символы, буквы, цифры, для двумерной фигуры это точки на плоскости, прямые, кривые, для трехмерной — соответственно точки в трехмерном пространстве, полигоны, векторы, поверхности.

2. Множество правил

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

Весьма условный пример правил для русского языка:

СЛОВО = “один или несколько слогов” СЛОГ = “согласная”+”гласный” СОГЛАСНАЯ = {б,в,г,д,ж, …, щ} ГЛАСНЫЙ = {a, е, о, .., я}

Для трехмерной структуры:

КУБ = “Полигон с координатами (0,0,0), (0,1,0), (0, 0, 1)”, “Полигон с координатами (0, 0, 0), (1, 0, 0), (1,1,0) и т.д.

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

3. Стартовое правило

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

Язык Structure Synth

Трехмерные фигуры как грамматики описываются в текстовых файлов специального формата .es (EisenScript).

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

Правила и трансформации оперируют с базовыми геометрическими фигурами (примитивами) в трехмерном пространстве. У фигур, помимо 3d-координат, есть только цвет (но, к сожалению, не текстура, не материал и т.п.).

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

Результат выполнения — трехмерная полигональная сцена с базовой моделью освещения, которая может быть экспортирована в другие форматы или сохранена как растровое изображение. Её также можно просто покрутить, увеличить или уменьшить в редакторе в окне предпросмотра, программа достаточно быстра на современных PC и начинает притормаживать на сценах от ста тысяч объектов.

Итак, посмотрим, как в Eisenscript реализованы формальные грамматики.

1. Базовые примитивы

Алфавит среды — исходные строительные блоки, из которых создается фигура. Это шар, куб, вектор, прямоугольник, точка, поверхность.

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

Пример примитивов:

box

sphere

grid

line

dot


2. Трансформации

Трансформации описывают всевозможные действия, применяемые к текущему состоянию (примитиву): сдвиг по осям x, y, z, повороты по трем осям, изменение цвета (абсолютное значение в RGB, смешивание текущего цвета с другим, изменение параметров тона-яркости-насыщенности (HSV), изменение альфа канала), масштабирование объекта в трех осях, зеркальное отражение, применение матрицы поворота.

Трансформации записываются в фигурных скобках и выглядят как буква (сокращение названия трансформации) и числовое значение-аргумент. Аргумент идет обязательно после пробела.

Аргументом является или число с плавающей запятой или целочисленное значение, зависит от типа.

Изменение в 3d-координатах это float, модификация цвета — integer.

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

Также трансформации могут быть заданы рандомным числом.

Примеры:

{ x 1} // сдвигает текущее состояние по оси x на единицу

{x 2 y 2 z 2} // равномерно сдвигает состояние на 2 единицы по трем осям

{rx 30} // поворачивает относительно оси x на 30 градусов

{sat 10 hue -30} //изменяет атрибуты цвета

{x 1 x 1 x 1} // равно {x 3 }

Трансформации записываются сразу перед примитивами (или правилами). Либо это одна трансформация, либо их список, но со знаком умножения, который означает повторение трансформации N раз (итерация).

Пример:

1 * { hue 30 x 1 } // равно { hue 30 x 1}

10 * { x 1 hue 36 } 10 * { y 1 sat 0.9 } 10 * { z 1 b 0.9 } box

Итерация из примера выше является важным элементом языка.

Запись N * { transform t }, где N и t — некоторые числа, а transform — некоторая трансформация, эквивалентна N записям вида:

{ transform t} …

{ transform t*2} …

{ transform t*3} …

{ transform t*N} …

Как пример

3 * { x 2 } box

это то же самое, что и

{ x 2 } box

{ x 4 } box

{ x 6 } box


3. Правила

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

Неявным правилом является последовательная запись трансформации и примитива из примеров выше, формально это тоже правило языка, только без кодового слова.

Правило состоит из ключевого слова rule, названия (цифробуквенный идентификатор), открывающих и закрывающих фигурных скобок, внутри которых перечислены примитивы, трансформации и другие правила.

R1



Поделиться книгой:

На главную
Назад