Федеральное государственное автономное образовательное учреждение высшего образования
Национальный исследовательский университет
Высшая школа экономики
НИУ ВШЭ-Нижний Новгород
Курсовая работа
На тему «Разработка медицинского программного обеспечения на основе технологий виртуальной реальности для пациентов с функциональным головокружением»
Студент
Гладун Н.А.
Нижний Новгород 2019
Оглавление
Введение
1. Техническое задание
1.1 Исследование предметной области. Функциональное головокружение
1.2 Исследование предметной области. Виртуальная реальность
1.3 Постановка задачи
1.4 Требования к курсовому проекту
1.5 Анализ технического задания
2. Разработка программы
2.1 Уровень с морем. Локация
2.2 Уровень с морем. Скрипты
3. Эксплуатационная документация
3.1 Меню оператора
3.2 Интерфейс игрока
Заключение
Список литературы
Приложение
Введение
За последние два десятилетия информационные технологии совершили огромный скачок и стали играть всё большую роль в самых разных сферах человеческой жизни. Сейчас огромную популярность набирает технология Виртуальной Реальности (здесь и далее - VR). Ей уже нашли немало различных применений, но эта сфера всё ещё остаётся недостаточно исследованной и крайне перспективной.
В этой работе мы проводим исследование касательно двух крайне популярных областей прикладного использования технологии VR - медицины и компьютерных игр. Мы ставим своей целью показать возможность использования компьютерной игры в виртуальной реальности в качестве лечебной практики, направленной на помощь пациентам, страдающим функциональным головокружением. Это новый и недостаточно изученный, но очень перспективный метод, что обуславливает актуальность этой работы.
Наша задача - воплотить рабочее приложение, содержащее в себе несколько уровней, каждый из которых имеет опции для отладки оператором в соответствии с рекомендациями врача. Сцены должны представлять собой различные ситуации, которые могут быть сложными, но не критически опасными для пациентов, страдающим от функционального головокружения. В спектр моих задач входит создание сцены с иллюзией морской качки на борту дрейфующей в море лодки и всего необходимого инструментария для комфортной работы оператора со сценой.
1. Техническое задание
1.1 Исследование предметной области. Функциональное головокружение
Функциональное головокружение было впервые зафиксировано в статье «Phobischer Attacken-Schwankschwindel, ein neues. Syndrom» в 1986 году. Авторы статьи, Brandt и Dieterich, использовали термин «фобическое постуральное головокружение» для определения хронического невесибулярного колебательного головокружения, вызванного внешними (социальными или ситуативными) стимулами, которое не может быть объяснено органическими отоневрологическими расстройствами.
Только в 2015 году Brandt и его коллеги в статье «Functional dizziness: diagnostic keys and differential diagnosis» окончательно сформулировали определение и дали заболеванию официальное название - «постоянное постурально-перцептивное головокружение». В той же статье впервые был использован термин «функциональное головокружение» в качестве более простого и доступного общественности названия заболевания.
Функциональное головокружение включает в себя большой спектр симптомов, обнаруженных и задокументированных разными учёными и врачами в разные периоды времени. Далее указан весь список возможных симптомов со ссылками на статьи, в которых они впервые были упомянуты: приступообразные эпизоды нестабильности с ощущением ступора, угасания, легкости в голове или тошноты, возникающие при ходьбе или резком подъёме (Brandt и другие, 2009); постоянное и выраженное чувство головокружения в голове, продолжающееся в положении лежа (Staab, Ruckenstein, 2005); чувство головокружения и нестабильности при поездках в транспорте; сочетание головокружения с симптомами брутибула (Staab, 2000); отсутствие объективных признаков нарушения равновесия при неврологическом обследовании: диссоциация между объективными тестами и субъективным ощущением нестабильности; агорафобия и избегающее поведение; повышенное ощущение головокружения или избегания поведения в определенных обстоятельствах (например, в магазинах, театрах, на открытых пространствах, на высоте или под землей) или после стресса или конфликта; уменьшение симптомов во время физической активности, отвлечения или после небольшой дозы алкоголя (Brandt и другие, 2009); использование постуральных контрольных стрессовых стратегий; страх падений без падений в анамнезе; необоснованная и чрезмерная забота о будущем; отсутствие нистагма при вращательном головокружении; необычная или эксцентричная осанка или походка (Balaban и другие, 2013).
На данный момент существует пять известных методов борьбы с функциональным головокружением: образовательные программы, призванные дать пациенту понять причину головокружения и частично помочь преодолеть его (Brandt и другие, 2009); психотерапия (Edelman и другие, 2011); фармакотерапия (Staab, 2006), а также снижение повышенного чувства нестабильности и вестибулярная гимнастика. Согласно исследованиям (Thompson и другие, 2012), последние два метода показывают наилучшие результаты - в среднем 60% человек отмечают значительные улучшения после прохождения лечения по этим методам.
Методика понижения чувства нестабильности направлена на погружение пациента в сложные для его вестибулярного аппарата ситуации (такие, как морская качка, поездка в метро или лифте) таким образом, чтобы со временем обратить их из критических в обычные.
Задача вестибулярной гимнастики состоит в том же, с той лишь разницей, что пациент получает физическую нагрузку на вестибулярный аппарат вместо психологической. Наше приложение использует обе эти методики. Используя технологии виртуальной реальности, мы погружаем пациента в разнообразные стрессовые ситуации, причём не испытываем ограничений, неизбежных при классической терапии, направленной на снижение чувства нестабильности. С помощью шлема и нашего приложения, врач получает возможность погружать пациента в самые разные ситуации, не выходя из кабинета, а также самостоятельно настраивать различные особенности сцен, такие, как скорость движения или амплитуду морской качки.
Кроме того, в приложении используются элементы вестибулярной гимнастики - пациент, так или иначе, должен вращать головой и изучать окружающий мир. Элементы гимнастики подаются в игровой форме, что повышает мотивированность пациента выполнять их и упрощает работу врача.
1.2 Исследование предметной области. Виртуальная реальность
Нашей задачей было создание не полностью готового приложения (поскольку эта тема крайне обширна, и для её реализации потребовалось бы значительно больше ресурсов, чем имеется в нашем распоряжении), но рабочего прототипа, имеющего самые минимальные функции и способного показать релевантность дальнейших исследований этой темы. Основываясь на этом ограничении, мы составили список задач, необходимых для реализации в проекте.
Во-первых, необходимо было сделать достаточное количество сцен, чтобы показать функционал движка Unity, а также иметь возможность уже с прототипа погружать пациентов в различные ситуации. Моей задачей была работа над сценой, симулирующей плавание на лодке и морскую качку. Мной была выбрана именно эта сцена, поскольку она соответствовала следующим критериям: полезность (морская качка - серьёзный симптом функционального головокружения, и погружение в такую обстановку должно помочь пациентам научиться переживать стрессовые ситуации), доступность тематических бесплатных моделей для Unity (несколько вариантов сцен были отброшены, поскольку для них не удалось найти подходящих моделей), многофункциональность (возможность менять управление игровым персонажем, отдавая его пациенту, либо оператору, отлично вписывается в легенду сценки - вёсельной лодкой пациент управляет сам, в то время, как контроль над моторной принадлежит оператору) и удобство исполнения (управление вёслами за счёт джойстиков даёт больше возможностей, чем физическое перемещение игрока по игровому миру с помощью VR шлема, так как позволяет создать игровой мир больших размеров, не сковывая себя размерами комнаты или длинной провода VR шлема). Во-вторых, необходимо было сделать меню, в котором оператор сможет настраивать параметры сцены. Нами было выбрано четыре параметра, доступные для изменения в сцене с морем - это непосредственная скорость лодки, скорость ветра (влияющая на скорость морской качки), сила качки (влияющая на угол отклонения лодки при качке) и способ управления лодкой (по заданному маршруту или игроком с помощью джойстиков).
В-третьих, логирование. Поскольку, наше приложение направлено не только на терапию, но и на выявление заболевания и симптомов, врачу необходимо знать, что именно происходило в процессе работы с приложением. Поэтому, оно должно включать в себя запись видео в процессе всей работы и текстового файла, содержащего в себе временные метки и информацию о самых серьёзных изменениях (таких, как резкие повороты лодки или головы пациента).
1.3 Постановка задачи
Создать рабочий прототип игрового приложения в виртуальной реальности для помощи в адаптации пациентов с функциональным головокружением. Приложение должно содержать в себе: сцену в море с возможностью управления лодкой как через заданную оператором программу, так и вручную джойстиками; меню, позволяющее оператору настраивать сцену соответственно рекомендациям врача; запись видео в процессе работы с приложением и детальное логирование серьёзнейших изменений, содержащее в себе временные метки.
1.4 Требования к курсовому проекту
Функциональные требования:
1. Оператору доступна сцена, содержащая в себе путешествие пациента в виртуальной реальности на лодке.
2. Управление в сцене может быть в руках как оператора, так и пациента.
3. Сцена должна содержать в себе симуляцию морской качки, т.е. лодка должна раскачиваться при движении.
4. Оператор может вручную задавать скорость движения лодки и волн, а также амплитуду качки.
5. Весь процесс работу с приложением записывается на видео.
6. По окончанию работы с приложением врач имеет возможность получить текстовый лог, содержащий в себе список важнейших изменений, привязанных к временным меткам.
Количественные требования:
1. Приложение доступно лишь для одного пользователя одновременно.
2. Скорость лодки измеряется в километрах в час и не может быть меньше 0 км/ч. Верхней границы нет.
3. Скорость ветра измеряется в метрах в секунду и не может быть меньше 0 м/с. Верхней границы нет.
4. Сила качки измеряется в абстрактных единицах, а её значение находится в интервале от 0 до 20.
Требования совместимости:
Планируется совместимость приложения исключительно с HTC Vive и семейством систем Windows.
1.5 Анализ технического задания
В начале работы мы провели исследование, чтобы определить, какой игровой движок использовать в своей работе. В качестве двух вариантов рассматривались Unity и Unreal Engine 4, поскольку они оба являются бесплатными и предлагают наибольший функционал из всех, существующих на сегодняшний день.
Первым пунктом, по которым мы анализировали движки, стал язык программирования, на котором пишутся скрипты для каждого из них. В случае Unity это C#, в то время как Unreal Engine использует C++. Оба эти языка на момент начала разработки были хорошо нам знакомы и, в рамках данной задачи, они не имеют существенных различий, поэтому по данному пункту нам в равной степени подходили оба движка.
Следующим пунктом стал функционал. Более богатым функционалом обладает Unreal Engine 4, однако, большая часть предоставляемых эксклюзивно им функций имеет отношение к анимациям и моделированию, а эту часть разработки проекта наша работа не затрагивает - в процессе разработки мы планировали использовать бесплатные модели, находящиеся в свободном доступе в интернете. Исходя из этого, по функциональным особенностям нам также подходили оба движка в разной степени.
И последним, на что было обращено внимание, оказались системные требования. Unreal Engine 4 потребляет значительно больше ресурсов, чем Unity, что сказывается на низкой работоспособности этого движка на слабых компьютерах, или же полном её отсутствии. Поскольку в нашем распоряжении были лишь домашние компьютеры, не обладающие мощными вычислительными мощностями, мы остановились на движке Unity, обладающем всеми необходимыми нам функциями при меньших системных требованиях.
Когда вопрос с инструментарием был решён, предстояло принять ещё одно решение - давать ли в наших сценах возможность пациентам самостоятельно перемещаться по игровому миру, или же дать оператору полный контроль над ситуацией. Этот вопрос был рассмотрен со многих сторон.
Если пациент обладает возможностью перемещаться по сцене самостоятельно, это значительно усиливает его погружение, что крайне положительно сказывается на успешности симуляции. В то же время, это порождает несколько проблем. Во-первых, находясь в закрытой комнате и будучи привязанным к оборудованию и VR-шлему, пациент находится в своеобразной «скованности», поскольку его действия и свобода перемещения ограничены стенами и длинной шнура - а, следовательно, ограничены так же размер сценки и наши возможности для её разработки. В-вторых, это также ограничивает функционал сцены, поскольку не даёт возможности оператору изменять скорость и амплитуду движения. В-третьих, становится невозможным симуляция движения вокруг пациента, такого, как качающийся пол.
Если же всё движение в сцене запрограммированно оператором, то данные проблемы нивелируются, но это сильно уменьшает погружение, делая пациента не участником происходящего, а лишь сторонним наблюдателем, в то время как смысл терапии через VR заключается именно в погружении.