Анализ и разработка программных средств для одновременного использования нескольких манипуляторов типа «мышь» на одном компьютере

А.Р. Верещагин,
 студ.,
ver_art@mail.ru,
МГТУ «Станкин», г. Москва

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

 

This article describes selection of solution, allowing to use more then one optical mice for imitation input catheters inside the medical training simulator. Article considered general view to the problem of connection several manipulators to one computer.

Введение

Для подготовки квалифицированных хирургов, практикующих в области кардиохирургии, был разработан тренажер. Он позволяет ускорить процесс освоения различных видов операций на сердце [1]. Одной из самых распространенных операций в кардиохирургии является стентирование. Ее суть в том, что внутрь сосуда вводится специальный катетер, через который проводится тонкий металлический проводник, снабженный стентом для расширения сосудов. В зависимости от размера пораженного сосуда, хирурги могут использовать один или несколько стентов. Ввод катетеров и проводников необходимо совершать одновременно. При разработке тренажера для имитации ввода инструментов, в качестве датчиков перемещения, было решено использовать датчики, установленные в манипуляторах ввода, а именно оптических мышах. Но при подключении второй мышки в Windows обе мыши управляют одним курсором. Поэтому было необходимо найти решение, позволяющее подключить несколько манипуляторов к компьютеру и способное обрабатывать показания от них.

1.    Появление проблемы

Изначально необходимость использования нескольких оптических мышек появилась в крупных компаниях. Это связано с тем, что руководство, проводя информатизацию отделов, стремится сэкономить на покупке оборудования. Действительно, в большинстве компаний сотрудники используют лишь офисные приложения, которые слабо загружают современные компьютеры. Наравне с этим, привлекает возможность сэкономить на программном обеспечении, цена на которое довольно высока, а лицензионные соглашения запрещают их повторную установку на другом компьютере. В связи с этим возникает вопрос об использовании одного компьютера несколькими людьми одновременно. Многие компании решают этот вопрос использованием терминальных серверов, но все же в этом случае вопрос разрешается не полностью. Так как при работе с терминальным сервером необходимо использовать тонкие клиенты, а это влечет за собой покупку дополнительного оборудования. В связи с этим возникла задача использования одного оборудования несколькими пользователями, в этом случае необходима покупка лишь периферийного оборудования (монитора, мышки и клавиатуры). Разработчики программного обеспечения начали задумываться о создании приложения, способного разделить мощность одного компьютера на нескольких пользователей, таким образом, сэкономив на покупке оборудования.

2.     Обзор программных реализаций, разделяющих ресурсы компьютера на нескольких пользователей

В результате появился ряд программных средств, позволяющих двум, а в некоторых случаях и более, пользователям одновременно использовать один системный блок. К таким решениям относятся: ibik Астер, BeTwin, Jetway и другие. Суть работы таких систем в том, что к системному блоку подключается дополнительный комплект оборудования - мышь, клавиатура, монитор, после чего формируется новый пользователь, который может полноценно работать отдельно от другого оператора на том же системном блоке (то есть, у него будет свой рабочий стол и т.п.). Рассмотрим подробнее каждую программу.

Jetway [2] использует специальную материнскую плату, ценой порядка 100$. На основе такой платы собирается компьютер, причем функциональные возможности компьютера будут сильно ограничены возможностями платы. Например, нельзя использовать оперативную память DDR2 и выше, наравне с этим, материнская плата поддерживает только видеокарты NVIDIA. После сборки компьютера и установки операционной системы, необходимо установить программное обеспечение MagicTWIN, которое дает возможность работы двух пользователей. В итоге появляется возможность создания 2 рабочих мест на одном компьютере, но существуют определенные ограничения, а именно ресурсы на рабочих станциях распределяются неравномерно. Больше мощности достается первой станции, несмотря на это, работать одновременно двум пользователям на одном компьютере вполне возможно, если они не собираются одновременно играть в 3d игры. Можно полноценно работать в нескольких офисных приложениях и пользоваться Интернетом.

Ibik Астер [3] является отечественной разработкой. Для работы с этой программой нужна покупка дополнительных видеокарт, в зависимости от количества рабочих мест. Необходимо установить программу, подключить монитор, мышь, клавиатуру и рабочие станции готовы. Астер позволяет подключить до 6 пользователей к одному компьютеру, но адекватно работать на нем могут лишь трое. Как заявляет руководство пользователя, Астер полностью совместим с 1С и не нужно дополнительных лицензионных соглашений. Продукт обеспечивает возможность совместного доступа к данным (например, совместной работы с документами, базами данных и пр.). В результате мы получаем минимум 2, полноценно работающих офисных компьютера. Разработчики обещают, что с этим решением экономия достигнет 50%. Цена продукта около 80$.

BeTwin [4]. Для работы программы, как минимум, нужна еще одна видеокарта. Максимальное количество пользователей, подключаемых к одному компьютеру, достигает пяти человек. Отличительной особенностью этой реализации является возможность разделения аудио, то есть один пользователь может смотреть фильм, а другой в это время слушать радио, правда для этого необходима специальная звуковая карта. Все ресурсы компьютера разделяются равномерно между станциями. Цена продукта 100$.

Основной вывод по этому ряду программных реализаций следующий. Если необходимо сэкономить на покупке оборудования и программного обеспечения, разделение ресурсов ПК самое оптимальное решение, однако нужно учитывать, что полноценная работа в ресурсоемких приложениях AutoCad, SolidWorks и других, невозможна, потому что возможности компьютера делятся между пользователями. Такие системы не применимы к построению тренажера, потому что при разделении рабочего места пропадает возможность использовать несколько мышек в одном приложении.

3.     Обзор программных реализаций, позволяющих использовать несколько манипуляторов

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

Microsoft MultiPoint Mouse [5]. Отделению Microsoft Research в Индии была поставлена следующая задача. Бюджет индийских школ не позволяет обеспечить каждого ученика класса отдельным компьютером и это значительно мешает школьникам осваивать IT технологии. Было необходимо разработать продукт, с помощью которого появлялась возможность подключить к компьютеру несколько оптических мышек, чтобы они работали одновременно. В результате компания выпустила Microsoft MultiPoint (SDK). Пакет Windows MultiPoint Mouse Software Development Kit (SDK) - это среда разработки, с помощью которой появляется возможность создавать приложения, поддерживающие одновременное функционирование до 25 оптических мышек на одном компьютере. Данное решение не предназначено для выполнения несколькими устройствами стандартных операций, в этих случаях системе обычно не удается определить, с помощью какой мыши сделаны те или иные изменения. Пакет MultiPoint Mouse SDK содержит среду разработки, с помощью которой появляется возможность создавать приложения, использующие преимущества нескольких устройств мыши -  возможность независимой обработки щелчков мыши от различных пользователей, отслеживание перемещения, то есть присутствует возможность одновременно выполнять действия нескольким мышкам. В настоящее время существуют только учебные приложения для школ с ограниченной инфраструктурой.

Mouse Mischief.  Использование нескольких мышек стало настолько востребованной задачей, что Microsoft создало надстройку для Microsoft PowerPoint - Mouse Mischief. Mouse Mischief интегрируется в Microsoft PowerPoint 2010 и Microsoft Office PowerPoint 2007 и позволяет добавлять в слайды опросы, тестовые задания и поля для рисования. Таким образом, появляется возможность проведения мультипользовательских презентаций. Каждый пользователь имеет свою мышку, свой указатель и посредством него отвечает на вопросы. Приложение обеспечивает работу до 25 мышек, причем одна из них является главной, она переключает слайды и управляет системой, так называемая преподавательская мышь. Распространение надстройки абсолютно бесплатно, если не брать в счет цену Microsoft PowerPoint. В результате Mouse Mischief нашла широкое применение по всему миру.

Peanut Butter Pointer [6].  С похожей задачей столкнулась компания Peanut Butter Software, которая разрабатывает программное обеспечение для упрощенного использования компьютера маленькими детьми. Для случая использования одного компьютера несколькими детьми была разработана специальная программа Peanut Butter Pointer. После установки программы, при подключении 2-х мышек появляется 2-ой указатель. Оба указателя могут выполнять любые действия курсора в Windows, однако есть существенная оговорка. Отсутствует возможность одновременной работы двух указателей: в то время как один из них совершает манипуляцию, например перемещение ярлыка, у другого отсутствует возможность сделать какое-либо действие. Максимальное число мышек, работающих в программе – 3. Распространение продукта платное, стоимость 22$.

MultiMouse [7]. Немецкая компания Bartels Media, создала продукт MultiMouse. Программа позволяет нескольким пользователям по сети удаленно контролировать центральный компьютер с помощью мыши и клавиатуры. После запуска программы пользователи перетаскивают свои курсоры на монитор центрального компьютера, у каждого указателя появляется подпись, название соответствующего компьютера, с которого происходит управление. Также пользователи могут вводить текст с клавиатуры, таким образом, осуществляя совместное редактирование документа. Центральный компьютер является администратором и может подключать и отключать пользователей. К сожалению, отсутствует возможность одновременно выполнять действия несколькими указателями. Приложение позволяет подключить до 50 пользователей к центральному компьютеру. Цена продукта доходит до 638$ за версию для 50 пользователей.

MMTk [8]. Ученый из Токио Масафуми Уэда, создал библиотеку для программирования – MMTk (Multi-Mouse Toolkit), дающую инструментарий к написанию приложений использующих несколько мышек. Разработка программ возможна на языках C++ и C#. Для разработки не требуется установка специальных драйверов. К сожалению, документация для разработчиков написана на японском языке, английский вариант отсутствует, что затрудняет работу с библиотекой. Распространение библиотеки абсолютно бесплатно и с разрешения автора можно включать ее в свои проекты.

CPNMouse. [9] В рамках проекта CPN Tools, созданного для моделирования цветных сетей Петри, появилась задача использования нескольких указателей: для перемещения плавающих палитр и одновременного выбора инструмента, при этом использовалось несколько манипуляторов. Разработчики не остановились на этом и, в результате, появился отдельный проект CPNMouse, позволяющий использовать несколько мышек. В его рамках был создан драйвер и API для обеспечения интерфейса между аппаратными средствами и пользовательским приложением. Драйвер обрабатывает события мыши, полученные от аппаратных средств, а API позволяет удобным образом обрабатывать эти события в пользовательском приложении. Драйвер необходимо установить на всех мышках системы, чтобы пользовательское приложение использовало единый интерфейс. В решении используется так называемый драйвер-фильтр, который позволяет войти в стек устройств мышек и установить собственный интерфейс в дополнение к интерфейсу стандартной мышки, также он анализирует какое из событий необходимо передать к системной мыши. Драйвер создавался при помощи Microsoft Windows Driver Development Kit.[10] API предоставляет функции: для назначения курсорам картинки, для определения состояния нажатия кнопок мыши, а также для определения и установки положения курсоров в абсолютных и относительных координатах, представляющую наибольший интерес. В продукте присутствует приложение, имитирующее работу нескольких мышек в Windows, но параллельная работа остается недоступной. Однако можно создавать пользовательские приложения, полностью использующие преимущества нескольких указателей. Решение включает в себя драйвер, библиотеки и исходный код с комментариями на английском языке. Распространение программы бесплатное. Как заявляют разработчики, возможно подключение до 100 мышек к одному компьютеру. Программа написана на языке C.

4.     Выбор программной реализации для одновременного использования нескольких манипуляторов типа «мышь» в медицинском тренажёре

Для одновременного использования нескольких манипуляторов в медицинском тренажере требуется программная реализация, обладающая следующими характеристиками:

·      бесплатное распространение;

·      возможность  подключения 3 и более манипуляторов;

·      программная реализация должна предоставлять инструменты для разработки приложений, использующих несколько манипуляторов. Обрабатывать перемещения и снимать показания о текущем месторасположении;

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

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

Литература

1.    Артамонов Е.И., Балабанов А.В., Ромакин В.А., Смирнов С.В. Структурное проектирование медицинских тренажёров // Материалы международной конференции “CAD/CAM/PDM-2009”. М.: ИПУ РАН, 2009.

2.    http://www.jetway.com.tw/evisn/download/driver/index-6.htm

3.    http://www.ibik.ru/

4.    http://www.thinsoftinc.com/

5.    http://www.microsoft.com/multipoint/mouse-sdk/

6.    http://www.peanutbuttersoftware.com/

7.    http://www.multimouse.com/

8.    http://icculus.org/manymouse/

9.    http://cpnmouse.sourceforge.net/

10.  Westergaard M. Supporting multiple pointing devices in Microsoft Windows. Department of Computer Science, University of Aarhus IT-parken.