Приветствую всех снова. В прошлой статье я рассказал о том, как добавить реализма в FPV полеты за счет видеоочков с функцией 3d картинки. Сегодня я продолжу эту тему, рассказав о синхронизации движений камеры и головы. Итак, чтобы во время полета мы не глядели в одну точку, а могли и немного осмотреться по сторонам, нам необходимо такое приспособление, как HeadTracker. Сейчас трекер головы зачастую устанавливается в FPV очки (например, fatshark или те, что мы рассматривали в прошлой статье – SkyzoneSKY-02). Однако, думаю все замечали, что стоят такие очки немало. Так можно ли сделать «управление камерой головой» дешевле? Или, допустим, у вас уже есть видеошлем с наиболее лучшей картинкой, чем в очках, и вы просто хотите добавить HeadTracker к ним? Ответ – да!
Станислав @Just_Wahread-only
Хабра сосет
PPM-to-USB адаптер на STM32F3Discovery, или Подключаем авиамодельный пульт к компьютеру как HID-джойстик с STM32Cube
22 min
39KВ этой статье я расскажу, как:
- Создать проект в STM32CubeMX и настроить таймеры для захвата внешних сигналов.
- Декодировать PPM-сигнал с авиамодельного пульта.
- Сделать Human Interface Device на STM32 и написать свой HID Report Descriptor.
- Полетать в симуляторе на гоночном квадрокоптере. :)
+25
Управление GSM модулем с AVR
6 min
52KИдея проекта: спроектировать устройство на базе микроконтроллера AVR для управления готовым GSM модулем (я выбрал модуль TC35 от SIEMENS, но можно использовать любой другой, если используется связь через последовательный порт RS232). Устройство должно быть компактным, минимально простым и надёжным.
Отправка заранее записанного в память сообщения на указанный номер должна выполняться после нажатия кнопки. Всего нужно было 6 кнопок для отправки на 6 различных номеров. Для индикации процессов были выбраны 3 светодиода (Ready, Send, Error), но в последствии был добавлен алфавитно цифровой LCD 16x2 (скорее, для отладки устройства, чем для обычного использования).
Проектировалось всё дело на плате Pinboard II (Rev 2) со стандартным процессорным модулем на ATmega16. На готовом устройстве схема была немного другой (и микроконтроллер использовался ATmega8). Программа писалась в AVR Studio 4.19. В проекте были использованы различные заголовочные файлы (#include) для переключения между Pinboard и готовым устройством.
Общая схема системы:
Отправка заранее записанного в память сообщения на указанный номер должна выполняться после нажатия кнопки. Всего нужно было 6 кнопок для отправки на 6 различных номеров. Для индикации процессов были выбраны 3 светодиода (Ready, Send, Error), но в последствии был добавлен алфавитно цифровой LCD 16x2 (скорее, для отладки устройства, чем для обычного использования).
Проектировалось всё дело на плате Pinboard II (Rev 2) со стандартным процессорным модулем на ATmega16. На готовом устройстве схема была немного другой (и микроконтроллер использовался ATmega8). Программа писалась в AVR Studio 4.19. В проекте были использованы различные заголовочные файлы (#include) для переключения между Pinboard и готовым устройством.
Общая схема системы:
+16
Написание скрипта расстановки элементов по кругу для Eagle CAD
2 min
15KTutorial
Некоторое время назад я задался вопросом равномерной круговой расстановки элементов на печатной плате. Сначала расставлял вручную через полярные координаты, потом сгенерировал последовательность команд для всех 30 элементов и разом выполнил все в командной строке Орла. Сегодня же я затрону тему написания собственного ULP скрипта Eagle Cad для равномерной и автоматической расстановки элементов по кругу.
+14
Стальной манипулятор HEXAPOD
7 min
76KВ последующем изложении хотел бы продемонстрировать реализацию шестиконечного манипулятора HEXAPOD, выполненного из корабельной стали. Текущий проект не претендует на оригинальность, инновационные подходы, реализацию сложных алгоритмов управления, использования математических моделей поведения, а так же изначальное проектирование уже существующих и эффективно работающих аппаратных средств. В текущей статье я постараюсь изложить собственный подход к реализации манипулятора из максимально доступных средств и материалов периферийного города.
+85
Реверс-инжениринг драйверов USB-устройств на примере машинки на радиоуправлении
10 min
53KПеревод статьи DRIVE IT YOURSELF: USB CAR
Один из аргументов любителей Windows перед любителями Linux – недостаток драйверов для оборудования под эту ОС. С течением времени ситуация выправляется. Сейчас она уже гораздо лучше, чем 10 лет назад. Но иногда можно встретить какое-то устройство, которое не распознаётся вашим любимым дистрибутивом. Обычно это будет какая-нибудь USB-периферия.
Красота свободного софта в том, что эту проблему можно решить самостоятельно (если вы программист). Конечно, всё зависит от сложности оборудования. С трёхмерной веб-камерой у вас может и не получится – зато многие USB-устройства довольно просты, и вам не придётся нырять в глубины ядра или закапываться в С. В этом уроке мы с вами при помощи Python по шагам изготовим драйвер к игрушечной радиоуправляемой машинке.
Процесс по сути будет реверс-инженирингом. Сначала мы подробно изучим устройство, затем сохраним данные, которыми оно обменивается с драйвером в Windows, и попытаемся понять, что они означают. Для нетривиальных протоколов вам может потребоваться как опыт, так и удача.
Один из аргументов любителей Windows перед любителями Linux – недостаток драйверов для оборудования под эту ОС. С течением времени ситуация выправляется. Сейчас она уже гораздо лучше, чем 10 лет назад. Но иногда можно встретить какое-то устройство, которое не распознаётся вашим любимым дистрибутивом. Обычно это будет какая-нибудь USB-периферия.
Красота свободного софта в том, что эту проблему можно решить самостоятельно (если вы программист). Конечно, всё зависит от сложности оборудования. С трёхмерной веб-камерой у вас может и не получится – зато многие USB-устройства довольно просты, и вам не придётся нырять в глубины ядра или закапываться в С. В этом уроке мы с вами при помощи Python по шагам изготовим драйвер к игрушечной радиоуправляемой машинке.
Процесс по сути будет реверс-инженирингом. Сначала мы подробно изучим устройство, затем сохраним данные, которыми оно обменивается с драйвером в Windows, и попытаемся понять, что они означают. Для нетривиальных протоколов вам может потребоваться как опыт, так и удача.
+62
Прототип. От идеи до опытной партии. Литье в силикон
2 min
182KВ прошлой статье я описал мой путь по созданию опытной партии изделия, в ней я литье в силикон отдал на аутсорс. Пока я ждал выполнения моего заказа, потихоньку сам начал осваивать это ремесло. Статья будет полезна тем, у кого допустим есть плата какого-нибудь девайса, но нету красивого корпуса, 3д-печать не подходит по характеристикам, а делать сразу промышленную пресс-форму очень дорого.
+164
Осваиваем техническое зрение на примере Bioloid STEM и HaViMo2.0
17 min
32KДобрый день, уважаемые читатели Хабра! Данной статьей я открываю серию публикаций по робототехнике. Основными направлениями тематики статей будут являться описание практических реализаций различных задач – от простейшего программирования роботов, до реализации навигации и автономного поведения робота в различных условиях. Основная цель данных статей – показать и научить как просто решить ту или иную прикладную задачу, либо как быстро адаптировать свой робототехнический набор под конкретные условия. Я постараюсь использовать доступные и распространенные на рынке наборы, чтобы многие из вас смогли использовать мои решения и доработать их для своих целей. Надеемся, что данные статьи будут полезны как студентам различных учебных заведений, так и преподавателям робототехники.
+11
Об образовательной робототехнике и кружках
5 min
33KЗвезды так сошлись, что в прошлом году я вплотную взялся за образовательную робототехнику. Мне не пришлось организовывать кружок. Школьный LEGO-кружок сам нашел меня – у меня подрос сын.
Сначала я включился в работу кружка помощником тренера и начал готовить команду сына к всемирной олимпиаде по робототехнике. Благо соответствующая экспертиза имеется: я доцент на кафедре электроники в местном университете, преподавал теорию управления и проектирование АСУ ТП, схемотехнику и программирование микропроцессорных систем, конструирование электронной аппаратуры, измерительную технику, обработку экспериментальных данных. Отвечаю за лабораторию измерительных технологий National Instruments. Да и практику прокачал на НИОКР, потом, как предприниматель, монтировал и пускал системы автоматики, сейчас – научный консультант в робототехнической компании.
Сначала я включился в работу кружка помощником тренера и начал готовить команду сына к всемирной олимпиаде по робототехнике. Благо соответствующая экспертиза имеется: я доцент на кафедре электроники в местном университете, преподавал теорию управления и проектирование АСУ ТП, схемотехнику и программирование микропроцессорных систем, конструирование электронной аппаратуры, измерительную технику, обработку экспериментальных данных. Отвечаю за лабораторию измерительных технологий National Instruments. Да и практику прокачал на НИОКР, потом, как предприниматель, монтировал и пускал системы автоматики, сейчас – научный консультант в робототехнической компании.
+12
Обзор железок для занятий робототехникой с детьми
5 min
124KUPD: к нижеприведенному материалу поступило множество дельных замечаний, поэтому он был полностью переработан: habrahabr.ru/company/makeitlab/blog/252015
Сейчас мы готовим новую площадку для детских занятий. В процессе подготовки стал вопрос выбора платформы, на которой будем обучать. По такому случаю мы подготовили обзор имеющихся платформ с обоснованием выбора. Документ, вроде, интересный получился, решил его здесь опубликовать. Некоторые вещи изложены сильно упрощенно, поскольку текст предназначен не только для хардкорных технарей.
Сейчас мы готовим новую площадку для детских занятий. В процессе подготовки стал вопрос выбора платформы, на которой будем обучать. По такому случаю мы подготовили обзор имеющихся платформ с обоснованием выбора. Документ, вроде, интересный получился, решил его здесь опубликовать. Некоторые вещи изложены сильно упрощенно, поскольку текст предназначен не только для хардкорных технарей.
+24
Быстрый голосовой набор на Asterisk
3 min
25KСтатей по использованию сервисов распознавания речи в asterisk от Google и Яндекса на Хабре уже есть несколько. Но всегда хочется сделать что-нибудь свое и как-нибудь по-своему.
Так вот, хотелось сделать быстрый голосовой вызов абонентов из адресной книжки. Когда в организации работаешь с несколькими десятками человек, каждый день иногда забываешь и путаешь внутренние номера абонентов (а кнопок быстрого набора на всех не хватает). Поэтому просто надо, чтобы нажал кнопочку, сказал «Зина из третьего мобильный» и тебе отвечает Зина из третьего на своем мобильном.
Короткое видео с демонстрацией работы:
Так вот, хотелось сделать быстрый голосовой вызов абонентов из адресной книжки. Когда в организации работаешь с несколькими десятками человек, каждый день иногда забываешь и путаешь внутренние номера абонентов (а кнопок быстрого набора на всех не хватает). Поэтому просто надо, чтобы нажал кнопочку, сказал «Зина из третьего мобильный» и тебе отвечает Зина из третьего на своем мобильном.
Короткое видео с демонстрацией работы:
+23
Диалплан на LUA для Asterisk
8 min
27KПриветствую всех. Когда-то тема использования языка программирования lua при написании диалплана в Астериске для меня стояла довольно жёстко. Дело в том, что мне сильно не нравится работать с различными GUI (типа FreePBX) при настройке Астериска.
Когда я всё настраивал в первый раз, работал с обычным линейным extensions.conf. Время шло, потребности в функционале телефонии росли. Язык lua постепенно немного изучил. И вот пришёл я работать админом в одну крупную компанию в нашем городе (одно крупное агентство недвижимости) — около 45 филиалов на тот момент было, примерно 650 — 700 пользователей, включая межгород и т.д. Там уже стоял Asterisk, но всё настроено было с использованием FreePBX.
Почти сразу руководство начало меня заваливать различными вопросами по наворотам Астериска. Например, хотели, чтобы при входящем звонке в какой-то филиал, звонки внутри филиала были распределены случайным образом. Хотели иметь запись разговоров в mp3, хотели сделать общую группу, куда можно было бы включить вообще все филиалы и при наборе какого-то номера, чтобы случайно попасть на один из филиалов и т.д. Задачи вроде простые, однако сидеть решать даже такие вопросы средствами графического интерфейса лично мне было не очень интересно.
Когда я всё настраивал в первый раз, работал с обычным линейным extensions.conf. Время шло, потребности в функционале телефонии росли. Язык lua постепенно немного изучил. И вот пришёл я работать админом в одну крупную компанию в нашем городе (одно крупное агентство недвижимости) — около 45 филиалов на тот момент было, примерно 650 — 700 пользователей, включая межгород и т.д. Там уже стоял Asterisk, но всё настроено было с использованием FreePBX.
Почти сразу руководство начало меня заваливать различными вопросами по наворотам Астериска. Например, хотели, чтобы при входящем звонке в какой-то филиал, звонки внутри филиала были распределены случайным образом. Хотели иметь запись разговоров в mp3, хотели сделать общую группу, куда можно было бы включить вообще все филиалы и при наборе какого-то номера, чтобы случайно попасть на один из филиалов и т.д. Задачи вроде простые, однако сидеть решать даже такие вопросы средствами графического интерфейса лично мне было не очень интересно.
+9
Беспилотник на базе Raspberry Pi. Часть 1
2 min
112KПривет, %хабраюзер%. Хочу поделиться историей о своем беспилотнике (БЛА) на малинке.
Перед тем, как начать делать беспилотник, стоял выбор, какую летательную модель брать за основу: квадракоптер или самолет? Так как с коптерами я в свое время наигрался, знаю их основной минус: чаще всего время полета составляет 10-20 минут. Лично для меня это очень мало, поэтому было решено взять за основу самолет.
Перед тем, как начать делать беспилотник, стоял выбор, какую летательную модель брать за основу: квадракоптер или самолет? Так как с коптерами я в свое время наигрался, знаю их основной минус: чаще всего время полета составляет 10-20 минут. Лично для меня это очень мало, поэтому было решено взять за основу самолет.
+43
Рцборда, или Как Сделать Управляемую через Интернет Машинку
17 min
77KЗа последние несколько лет мне довелось сделать немало дистанционно управляемых устройств. Некоторые управлялись локально, с обычного ПК или со смартфона. Некоторые — через Интернет. Все устройства объединяет общий принцип — управляет ими человек, ориентируясь по картинке с видеокамеры на борту устройства. А само управление, в итоге, сводится к выдаче управляющих сигналов на сервомоторы или регуляторы (драйверы) моторов.
Так что, набравшись опыта в данном деле, решил попробовать более-менее систематизировать различные типы управления устройствами, чтоб при создании нового девайса не приходилось кучу всего переписывать, а достаточно было лишь изменить некоторые параметры конфигурации. В результате родился программный комплекс RCboard, или РЦборда. Т.к. все управляемые штуки я делаю с контролером Virt2real (Виртурилка) в качестве главного бортового мозга, то и рцборда изначально писалась именно под неё. Так что всю связку можно пафосно называть «Программно-аппаратный комплекс РЦборда».
В общем, в продолжении топика попробую написать рецепт про то как с помощью Виртурилки и РЦборды из обычной радиоуправляемой машинки сделать машинку, управляемую через Интернет (ну и локально она тоже будет управляться). Каналом связи будет обычный Wi-Fi (выход в инет через домашний роутер) или 4G связь через свисток Yota.
Краулер BSD Racing 4WD RTR 2.4Ghz 1:10
Сразу уточню — под термином «радиоуправляемая машинка» я подразумеваю не дешёвые китайские машинки, в которых вся электроника реализована на одной плате, а более-менее приличные машинки, построенные по модульной схеме — которые имеют регулятор оборотов двигателя (коллекторного, бесколлекторного — неважно) и сервомашинку для управления поворотом передних колёс.
Такую машинку я приведу в качестве подопытного кролика лишь в этом рецепте, так как проще всего для повторения. С небольшими изменениями в настройках рцборды и добавлением платки-регулятора оборотов движка всё то же самое можно сделать и с любой машинкой, главное чтобы у машинки были колёса (да хоть гусеницы) и был моторчик.
Так что, набравшись опыта в данном деле, решил попробовать более-менее систематизировать различные типы управления устройствами, чтоб при создании нового девайса не приходилось кучу всего переписывать, а достаточно было лишь изменить некоторые параметры конфигурации. В результате родился программный комплекс RCboard, или РЦборда. Т.к. все управляемые штуки я делаю с контролером Virt2real (Виртурилка) в качестве главного бортового мозга, то и рцборда изначально писалась именно под неё. Так что всю связку можно пафосно называть «Программно-аппаратный комплекс РЦборда».
В общем, в продолжении топика попробую написать рецепт про то как с помощью Виртурилки и РЦборды из обычной радиоуправляемой машинки сделать машинку, управляемую через Интернет (ну и локально она тоже будет управляться). Каналом связи будет обычный Wi-Fi (выход в инет через домашний роутер) или 4G связь через свисток Yota.
Краулер BSD Racing 4WD RTR 2.4Ghz 1:10
Сразу уточню — под термином «радиоуправляемая машинка» я подразумеваю не дешёвые китайские машинки, в которых вся электроника реализована на одной плате, а более-менее приличные машинки, построенные по модульной схеме — которые имеют регулятор оборотов двигателя (коллекторного, бесколлекторного — неважно) и сервомашинку для управления поворотом передних колёс.
Такую машинку я приведу в качестве подопытного кролика лишь в этом рецепте, так как проще всего для повторения. С небольшими изменениями в настройках рцборды и добавлением платки-регулятора оборотов движка всё то же самое можно сделать и с любой машинкой, главное чтобы у машинки были колёса (да хоть гусеницы) и был моторчик.
Что понадобится для сборки
- Машинка c регулятором двигателя, двигателем и сервой
- Аккумулятор (любой с подходящим для регулятора напряжением)
- Контролер Virt2real (Виртурилка) с камерой, переходник USB-OTG, флешка micro-SD
- Свисток Wi-Fi или Yota (можно и любой другой 4G модем)
- Руки умеренной линейности
+35
Сравнение версий Windows Server
40 min
159KТема завершения поддержки Windows Server 2003 на Хабре поднималась уже несколько раз. В продолжении серии статей, посвященных окончанию поддержки и предложений по переходу на более новые версии Windows Server (а именно, на Windows Server 2012 R2). В этой статье я проведу сравнение различных версий Windows Server (2003 R2, 2008 R2, 2012 R2), а вы уже сможете посмотреть и решить, что выбрать для своей компании. Всех заинтересовавшихся жду под катом, но предупреждаю: вся сравнительная информация содержится в больших и длинных таблицах, которые вы сможете увидеть, нажав на спойлеры.
+8
Бесплатная отправка SMS из Arduino без GSM модуля
5 min
197KПонадобилось мне слать SMS из ардуинины себе на телефон. Да так, что бы без заморочек с GSM, сим картами и оплатой. Под катом то, что из этого вышло.
+37
Строим стенд для подготовки к CCIE при помощи IOU Web Interface
3 min
56KTutorial
Данная статья посвящена созданию собственного виртуального стенда для подготовки к лабораторной работе CCIE RS.
Как известно подготовка к экзамену CCIE является своеобразным подвигом в сетевом мире. Для успешной сдачи кандидат должен вложить уйму ресурсов: времени и денег. Помимо оплаты за сам экзамен необходимо, оплатить учебные материалы, оплатить поездку и.т.д. Одной из статей затрат является организация учебного стенда для подготовки. Рассматривая популярную топологию INE из одноименного воркбука, видно, что понадобится 9 роутеров и 4 свитча. Перечислю классические способы реализации в порядке убывания стоимости:
1. Покупка полного стенда домой из старого железа на ebay.
2. Аренда стойки.
3. Смесь виртуальных роутеров из GNS3 и реальных коммутаторов.
4. IOU.
Про плюсы и минусы каждого из методов уже писали на хабре. Остановимся на самом дешевом (что выгодно, если ваш работодатель не оплачивает вам обучение).
Прежде чем поставить задачу и начать её выполнение стоит упомянуть, что использование IOU не законно, если ты не сотрудник Cisco. Даже для обучения.
Задача статьи: организовать учебный стенд используя топологию INE и веб интерфейс для IOU.
Как известно подготовка к экзамену CCIE является своеобразным подвигом в сетевом мире. Для успешной сдачи кандидат должен вложить уйму ресурсов: времени и денег. Помимо оплаты за сам экзамен необходимо, оплатить учебные материалы, оплатить поездку и.т.д. Одной из статей затрат является организация учебного стенда для подготовки. Рассматривая популярную топологию INE из одноименного воркбука, видно, что понадобится 9 роутеров и 4 свитча. Перечислю классические способы реализации в порядке убывания стоимости:
1. Покупка полного стенда домой из старого железа на ebay.
2. Аренда стойки.
3. Смесь виртуальных роутеров из GNS3 и реальных коммутаторов.
4. IOU.
Про плюсы и минусы каждого из методов уже писали на хабре. Остановимся на самом дешевом (что выгодно, если ваш работодатель не оплачивает вам обучение).
Прежде чем поставить задачу и начать её выполнение стоит упомянуть, что использование IOU не законно, если ты не сотрудник Cisco. Даже для обучения.
Задача статьи: организовать учебный стенд используя топологию INE и веб интерфейс для IOU.
+18
Самостоятельная подготовка к экзаменам CCNP (личный опыт)
6 min
65KВсем привет! В этой статье я хочу поделиться с вами личным опытом по подготовке и успешной сдаче трех обязательных экзаменов для приобретения сертификата CCNP.
+19
DFS Replication и «временные» файлы
2 min
23KВсем привет!
Это моя первая публикация, надеюсь, что в дальнейшем буду писать часто.
Если что-то неправильно оформил, поправьте, я исправлю как надо.
В работе пришлось столкнуться с интересной особенностью работы DFS Replication. И хотя сам рассматриваемый вопрос не нов, набить на нем шишки могут многие.
Итак, у нас есть стабильно работающая среда, в которой успешно настроены и работают DFS-репликации. Создана репликационная группа, в нее добавлены все нужные серверы, топология корректна, расписание тоже, все хорошо… пока однажды новые файлы, добавленные в реплицируемую папку не перестают копироваться на удаленные серверы.
Для примера я сделал тестовую среду, в которой всего два сервера — LAB-DC1 и LAB-FS1. На каждом из них есть папка C:\DFSR, между которыми и должна проходить репликация.
Копируем в эту папку на LAB-DC1 два тестовых файла и видим, что на второй сервер отреплицировался только один.
Почему?
Это моя первая публикация, надеюсь, что в дальнейшем буду писать часто.
Если что-то неправильно оформил, поправьте, я исправлю как надо.
В работе пришлось столкнуться с интересной особенностью работы DFS Replication. И хотя сам рассматриваемый вопрос не нов, набить на нем шишки могут многие.
Итак, у нас есть стабильно работающая среда, в которой успешно настроены и работают DFS-репликации. Создана репликационная группа, в нее добавлены все нужные серверы, топология корректна, расписание тоже, все хорошо… пока однажды новые файлы, добавленные в реплицируемую папку не перестают копироваться на удаленные серверы.
Для примера я сделал тестовую среду, в которой всего два сервера — LAB-DC1 и LAB-FS1. На каждом из них есть папка C:\DFSR, между которыми и должна проходить репликация.
Копируем в эту папку на LAB-DC1 два тестовых файла и видим, что на второй сервер отреплицировался только один.
Почему?
+13
Новый GNS3 — шаг вперед или прыжок на месте?
12 min
68KGNS3 1.2
В начале 2000х ситуация с эмуляторами сетевого оборудования выглядела достаточно плачевно.
Но затем появился Dynamips и Dynagen (консольный фронтэнд к Dynamips), которые предоставляли возможность эмулировать некоторые маршрутизаторы Cisco IOS.
Впервые Dynamips был представлен общественности в далеком 2005м году.
Это была по сути разработка одного человека.
Проект понемногу развивался, но был заброшен в 2007м, последняя версия от первоначального автора была с номером 0.2.8-RC2.
Управление при этом было далеко от удобного: в текстовых конфигурационных файлах приходилось описывать всю топологию вручную.
А затем, в 2007м году, Джереми Гроссман (Jeremy Grossman) начал разработку GNS3, в качестве своего дипломного проекта во время учебы в университете.
Со временем GNS3 стал самым узнаваемым и популярным решением для эмуляции сетевого оборудования, в первую очередь для тех кто готовился к сдаче сертификационных экзаменов.
И вот сейчас, в 2014м году, выходит эволюционная (с точки зрения разработчиков) версия GNS3 1.0.
Но перед тем как приступить к тщательному изучению новой версии, ненадолго вернемся в прошлый год, в тот момент когда стартовала новая веха разработки GNS3.
+29
Information
- Rating
- Does not participate
- Location
- Россия
- Date of birth
- Registered
- Activity