Г. Шилдт - Полный справочник по C++ (1109478), страница 148
Текст из файла (страница 148)
Язык С++ и робототехниха Этот робот создан на основе шасси игрушечного танка НоЬЬ!со М! АЬгапъз К/С. (Я обнаружил, что шасси игрушечных танков и автомобилей прекрасно полходят лля создания роботов.) Я улалил все внутренние детали танка, включав приемник и средства управления скоростью, сохранив лишь моторчик. Танк НоЬЬ!со очень хорошо подходит для создания роботов, поскольку имеет крепкое шасси, хороший моторчик, может нести большой вес, и его колеса не отваливаются.
Благодаря тракам он имеет нулевой радиус поворота и может перемещаться по неровной поверхности. Шасси имеет примерно 18 дюймов в длину и приблизительно 8 дюймов в ширину. Итак, опустошив шасси, я стал добавлять к нему следующие компоненты. Для обеспечения бортового управления я использовал простой, но гиошный микропроцессор ВАБ!С В!акр 2 компании Рагайах, 1пс. (херов.рага!!ах!пс.соуп). Микросхема К8-232, видеокамера и передатчик также производятся компанией Рагайах. Беспроводной передатчик К8-232 и перелатчик видеосигналов действуют в радиусе 300 футов. Моторчик танка я снабдил устройством управления скоростью.
Устройства такого типа применяются в скоростных гоночных автомобилях. Они управляются микропроцессором ВА81С В!агар. Вот как работает мои робот. Удаленный компьютер запускает основную программу управления роботом. Эта программа управляет основными системами его жизнедеятельности: устройствами технического зрения, средствами контроля и пространственной ориентации. Она может разучивать серию движений, а затем воспроизводить их. Удаленныи компьютер передает роботу команды >правления движением (через беспроводную связь на основе микросхемы КВ-323). Микропроцессор ВА81С Бгапзр получает эти команды и выполняет их. Например, гюлучив команду "вперед", микропроцессор ВАБ!С Бгагпр посылает соответствующие сигналы электронному контроллеру скорости, связанному с двигателем.
Выполнив команду, робот возвращает подтверждение. Таким образом, обмен информацией между удаленным компьютером и роботом является двусторонним, и робот может подтверждать выполнение каждой команды. Поскольку основная работа выполняется на удаленном компьютере, ее объем практически не ограничен. Например, робот может следовать за объектом, находящимся в его поле зрения. Эта способность связана с обработкой большого массива информации, которую было бы затруднительно выполнять с помощью бортового процессора. Недавно я начал работу над механической р>кой робота.
Ее прототип показан на рис. Б.2. Хотя экспериментаторам и любителям робототехники доступны несколько коммерческих устройств, выполняюгдих функцию руки робота, я решил создать свою собственную модель, которая была бы сильнее и могла поднимать более тяжелые объекты. Механическая рука использует шаговый двигатель, вмонтированный в ее основу. Он позволяет выдвигать и вращать устройство захвата. Рука управляется своим собственным микропроцессором 5!акр. Таким образом, основной контроллер робота просто перелает команды управления рукой второму контроллеру. Это позволяет роботу и его механической руке выполнять параллельные операции, предотвращая перегрузку основного контроллера.
Хотя основной код управления роботом написан на языке С++, я попробовал переписать некоторые подсистемы на языке Сл. Он предоставляет удобный интерфейс с устройствами илентификации положения робота и позволяет дистанционно управлять роботом через Интернет, что, как известно, является весьма трудной задачей. Приложение Б. Язык С++ и робототвхника Рис. Б.2 Прототип руки робота ~4ото Кена Кайзера) Приложение Б. Язык С++ и робототехники Предметный указатель А Битовая маска йгайайь, 418 Битовое поле, !63 Блок, ЗЗ; 97 в Выражение, 40; 70 условное, 80 Декрементация, 59 Деструктор, 248 Предметный ухазагепь Аааптер, 506 Ааресация косвенная„125 обычная„125 Алгоритм, 505 аг!Засея! г!!йегеисе, 718 аг!Засепг йпг1, 529; 662 Ыпагу ьеагсЬ, 529; 662 сору, 529; 662 сору Ьас!очагг1, 529; 663 сопи!„529; 531; 663 соцпг !Г, 530; 531; 663 ег!иа1, 530; 663 ег!па! гапйе, 530; 663 йП, 530; 664 й!! и, 530; 664 йпд, 530; 664 йпг! епсг, 530; 664 йпг! йгьг ой 530; 664 йпс! !й 530; 665 !ог еасЬ, 530; 665 Зепегаге, 530; 665 Зепегаье и, 530; 665 !пс!иг!еь, 530; 665 !ппег ргог!исг, 719 !пр1асе и1егйе, 530; 665 Ьег ьчгар, 530; ббб 1ех!сойгарЬкя! согпраге, 530; 666 1очгег Ьоипг1, 530; 666 гпа!ге Ьеар, 530; ббб игах, 530; 667 гпах е!егпепг, 530; 667 гиегйе, 530; 667 ппп, 530; 667 ппп е1егпепг, 530; 668 пйыпагсЬ, 530; 668 пехг реппгиайоп, 530; 668 пгЬ е!еп1епг, 530; 668 ран!а! ьогг, 530; 669 рагйа! ьои сору, 530; 669 рагйа1 ха, 720 ран!т!ои, 530; 669 рор Ьеар, 530; 669 ргеч реппигагюп, 531; 670 риьЬ Беар, 531; 670 гапйнп ьЬпйЗе, 531; 670 гегпоче, 531; 670 гепюче сору, 531'„533; 670 гепюче сору !й 531; 670 гегпоче !Б 531; 670 гер1асе, 531; 671 гер!асе сору, 531; 533; 671 гер!асс сору !Г, 531; 67! гер1асе !Г, 531; 671 гечегье, 531; 535; 672 гечегье сору, 531; 672 гогаге, 531; 672 гога!с сору, 531; 672 ьеагсЬ, 531; 672 ьеагсЬ п, 531; 672 ьег г!!Пегепсе„531; 673 ьег !пгегьесг!оп, 673 ьег упппегпс г!!йегеисе, 531; 673 ьег пи!оп, 531; 674 ьои, 531; 674 ьои Ьеар.
531; 674 ьгаЫе ран!г!оп, 531; 675 ьгаЫе ьои, 531; 675 ьтчар, 531; 675 ьтчар гапйеь, 531; 675 ггапь1опп, 531; 535; 675 нищие, 531; 676 опщпе сору, 531; 676 баррет Ьоипг1, 531; 676 Аргумент, 46 по умолчанию, 312 Класс 61еЬиГ, 438 !гопс !пяегс йегасог, 682 Сзггсащ, 433; 63! функция-член с!озе, 440 сой 447 м орел, 440 орел, 438; 633 8з!ссе„716 !гясгеапс, 433; 631 юяеп !сегасог, 680 юз функция-член Ьасс, 629 ссеаг, 629 еой 629 ехсерйопз, 630 га6„630 66, 424; 630 йайз, 422; 630 йизЬ, 630 йоогС, 633 ргсс!з!оп, 424; 634 ггСзсасе, 635 зесг, 419 яупс гг!1Ь зсс!!о, 638 ипяесГ, 420; 639 гг!г!сЬ, 423; 639 юя Ьазе, 417 !ояасе, 628 ай ген функция-член 8соипс„ 631 йес, 442; 631 3есйпе, 446; 632 !8поге, 449; 633 рееК, 450; 634 рсяЬас1с, 450; 634 геаС1, 444; 635 геагСзогпе, 635 зесК8, 450; 635 яееКр, 635 яесй 636 зссзсасе, 637 ясг, 637 Сейй, 453„.638 ятпсе, 444 гясгеагп !сегасог, 683 !зсгеагпЬиг" !сегасог, 684 !зсппйясгеагп, 637 !ясгзсгеапс, 496 йегасог, 679 Пега!от сга!ся, 679 Пяг, 646 гоар, 648 пю16гпар, 650 пси!с!зес, 652 пигпепс Пгп!сз, 728 ойлгеат, 438; 631 ореппсосСс, 623 ожгеагп функция-член й!ияЬ, 450 рис, 634 яееКр, 450 сеПр, 453; 638 тгг!сс, 639 оагеагп йегасог, 684 оыгеагпЬий иегасог, 685 озсппйзсгеаю, 637 огагзсгеапс, 496 ра!г, 727 рпогйу гсиеие, 655 гатг ягогайе Пега!от, 728 гетегзе йегасог, 632 зееКг11г, 628 зес, 655 я1юе, 716 мас!г, 657 Мппй, 542 ясппсясгеагп„637 мгясгеащ, 496 суре спСЬ, 453; 728 тайагау, 706 тес!ос, 658 абстрактный, 376 базовый, 247 виртуальный, 364 вложенный, 274 дружественный, 261 локальный, 274 обобщенный, 339 производный, 247 Ключевое слово, 35 аЬзссасс, 730 Ьох, 780 сСе1ейаге, 781 стелс, 781 бпаПу, 781 8с, 731 !гСепг!6ег, 781 юсег!асе, 781 пойс, 781 ргп, 781 ргорепу, 781 Предметный указатель Манипулятор формата пояйов рок, 425 пок31регк„425 поцпйЬц1; 425 попррегсаяе, 425 осг, 425 геке!!окйайя, 425 пййг, 425 кс1спг1бс, 425 кегЬакс, 425 ко!01!, 425 кейокйайк, 425 кегргес!к|оп, 425 ксцт, 425 кйовЬаке, 425 кйоктроя, 425 к!г!ркгк, 425 ип11Ьп1; 425 иррсгсакс, 425 ткк, 425 Массив, 100 безразмерный, 112 лвухмсриый, 104 ипициализироваииый, 232 многомерный, 108 объектов, 280 одномерный, 100 строк, 107 указателей, 124 Метка сам, 81 дебаий, 81 Модификатор типа, Р34 1оп8, 41 яйоп.
41 к!8псг1, 4! пня!3псг1, 41 точности, 133 формата №, 185 'г, 135 н Наследование, 229; 243 зашишеиное, 352 множественное, 353 Обобщенная функция конкретизация, 381 специализация, 331; 382 Обобщенный класс специализация, 389; 396 Объелииеиие, 63; 165; 256 безымянное, 257 Объект, 228 возвращение из Функции, 277 передача функции, 275 Объявление, 49 Оператор, 56 ?:, 65 аяш, 494 сагой, 400 г!е1егс, 295 пагпекрасе, 237 пеш, 295 альтериа'гила погйгоь; 302 буФеризованный, 302 мхсой 67 гйппг, 400 г у,4ОО гурег!еГ 170 гуре!г1, 458 иявг3, 479 арифметический %„59 *, 59 .
1, 59 +, 59 ++, 59 взятия адреса и, 66 доступа к члену массива !1, 69 доступа к члену структуры . !точка), 68 логический !, 61 егег, 61 !1, 61 перегруженный, 243 перехода Ьгеа!г, 82; 94 сопцпце, 96 3ою, 93 гещгп, 93„143 побитовый Зг, 62 , 62 ~, 62 , 62 Предметный указатель «, 62 », 62 повышения приоритета (), 69 последовательного вычисления, (запятая), 68 препроцессора №, 220 №№, 220 приведения типа сопя! сазг, 471 дупагп(с сазг, 465 ге!пгсгргег сазг, 473 з(аг(с сазг, 473 присваивания, 57 сокращенный, 72 составной, 72 пустой, 97 разрешения области видимости ., 274 разыменования указателя *„66 составной, 97 сравнения 1=, 61 <, 6! <=„61 >, 61 >=, 61 ссылки на член структуры ->, 68 условный !(, 75 зитгсЫ 8! вложенный !Г, 76 тернарная альтернатива, 78 цепочка (Г-гпеп-евое, 77 фиктивный, 97 цикла г!о-ттЫ!е, 91 Гог, 84 ттЫ1е, 89 Определение, 49 Параметр, 46 формальный, 45 Перегрузка конструктора, 305 оператора, 322 (), 342 , (, 344 !1, 339 ++, 329 ->, 343 де1еге, 332 пегт, 332 бинарного, 322 унарного, 322 функции, 304 шаблонной, 384 Передача параметров по значеникг, 137 по ссылке, 137; 138 Переменная, 43 автоматическая, 43 глобальная, 46 локальная, 43 статическая глобальная, 52 локальная, 5 ! член класса, 238 статическая, 267 Перечисление, 167 Подкласс, 247 Полиморфизм, 228 динамический, 247 Поток, 192 бинарный, 193 ввода тбуферизованный, 497 ввода-вывода буферизованный, 499 вывода буферизованный, 496 станлартный, 208 сегг, 418 с!и, 418 с!ой, 418 сощ, 4!8 зМегт, 208 згг)(п, 208 згг!оог, 208 текстовый„193 П реди кат бинарный, 506 унарный, 506 Преобразование типов, 57 Препроцессор„212 Приведение типа, 71 Признак знака, 41 Приоритет операторов, 69 Пространство имен, 236; 476 иг(, 483 неименованное, 480 Предметный указатель Распрелеление памяти динамическое, 130 Распределитель, 506 Расширение типа, 70 целочисленное, 70 Расширенный символ, 443 Редактирование связей, 37 Редактор связей, 506; 541 Ыпг))зг, 541 Ь)пг)2пг), 541 Рекурсия, 148 с Связывание позднее, 373 раннее, 373 Система счисления восьмеричная, 55 шестнадцатеричная, 55 Спецификатор доступа рпчаге, 252 ргогесгег1, 252; 349 риЫ!с, 252 формата %%, 180 %с, 180 %г), 180 %е, 180 %1, 180 %8, 180 %г, 130 %п, 130 %о, 180 %р, 180 %з, 180 %и, 180 %х„180 хранения, 49 ашо, 49 ехгегп, 49 пшгаЫе, 49 гей!яег, 53 яаГ!с, 51 Ссылка, 289 возвращение из функции, 293 на объект производного типа, 294 независимая, 294 перелача функции, 292 Стандартная библиотека шаблонов, 504 Статус ввода-вывода, 453 Стиль, 295 Строка„55 завершающаяся нулевым байтом, 103 Структура, 63; 154„254 объявление, 154 поле, 154 Суперкласс, 247 Тип данных, 31 Ьоо), 60; 234 сЬаг, 40 г)оиЫс, 41 ГП.Е, 194 йоаг, 41 фоз ), 194 шг, 40 !опй доиЫе, 41 !опй Ьц, 41 зйогг 1пг, 40 зй3пед сЬаг, 40 яйпег) 1пг, 40 яйпег) 1опй )п), 41 айнем зЬогг )пг, 41 з)хе г, 194 ипз18пег) сйаг, 40 ипяйпег) 1пг, 40 ипз)8пег) 1оп8 1пг, 41 ипяйпег) зЬоп !пг, 40 чок), 41 чсЬаг г, 54 Указатель, 66; 118 )Ыз„284 на массив, 101 на объект, 282 на объект производного типа, 235 на структуру, 160 на функцию, 127 на член класса, 287 файла, 194 Управляющая символьная константа 'т', 56 'т", 56 'т?, 56 'т~, 56 'т0, 56 Предметный указатель ~а, 56 ')Ь, 56 ~Г, 56 ~п, 56 г,г, 56 ~г, 56 'тт„56 ~хЬ), 56 Файл.