C-BISCUIT: Мониторинг на здравето на вашия робот

The Great Gildersleeve: Minding the Baby / Birdie Quits / Serviceman for Thanksgiving (Юли 2019).

$config[ads_text] not found
Anonim

C-BISCUIT: Мониторинг на здравето на вашия робот


В последната статия разгледахме основите на инсталирането на Ubuntu и ROS на Wandboard. Този път трябва да променим настройките на системата и да я настроим така, че да можем лесно да я модифицираме и надграждаме, тъй като се нуждаем от по-конкретна информация от системата.

C-BISCUIT серия

  1. C-BISCUIT: платформа за роботика за хакерите и любителите на хабитатите
  2. C-BISCUIT: Избор на дизайн и обосновка
  3. C-BISCUIT Мощност: 5V 3A Buck регулатор за Wandboard
  4. C-BISCUIT Мощност: Защита на циркуляра за 5V регулатор
  5. C-BISCUIT: Мозъците на операцията
  6. C-BISCUIT Мощност: монтаж и тестване на регулатори и циркулационни кръгове
  7. C-BISCUIT: Мониторинг на здравето на вашия робот
  8. C-BISCUIT: Архитектура на роботната система
  9. C-BISCUIT: Схематичен дизайн за RCB-микроконтролера, моторни контролери
  10. C-BISCUIT: Схематичен дизайн за RCB-Power, Stepper
  11. C-BISCUIT: Разпределение и монтаж на контролния панел на роботите
  12. C-BISCUIT: Системна интеграция и тестване

Задължително четене

За разлика от статията "Мозъците на операцията", където част от съдържанието представляваше кондензирана и променена версия на инструкциите за инсталиране на Ubuntu и ROS, би било несправедливо (и много ненужно) да се възстановят обширните ROS уроци, налични в тяхната уики. Би било идеално, ако можете да ги разгледате като част от подготовката, за да продължите тук, стигайки поне до издателя / абоната в Python. След като сте го направили, ще бъдете готови за следващите няколко статии относно софтуерен стек.

И накрая, тъй като тази статия ще се фокусира сериозно върху някои баш скриптове, препоръчваме ви да получите кратък преглед, ако не сте запознати с командния ред - препоръчвам LinuxCommand.

Бележка за Wi-Fi Проблеми и актуализации

Ако погледнете в интернет, ще откриете, че някои потребители са имали проблеми с Wi-Fi връзката с Wandboard.

Макар да не сме се сблъскали с тази точна ситуация досега, в нашите тестове видяхме някои проблеми с актуализирането на софтуера на борда с apt-get, където понякога системата ще замръзне по време на инсталирането на конкретен пакет. Най-простото решение за това изглежда е да рестартирате системата и да инсталирате пакета поотделно, преди да опитате отново командите за актуализиране и надстройване .

Ако имате проблеми с Wi-Fi или актуализиране, не забравяйте да коментирате по-долу и да ни кажете какво виждате, за да можем по-добре да разследваме.

Информация по време на вход чрез SSH

Едно от първите неща, които ще направим, е Wandboard да ни каже какво е и не работи, когато влезем. За целта ще трябва да редактираме отново файла .bashrc, създавайки изцяло нова секция, където ще създадем нов скрипт, който ще създадем, наречен .ros_status_script .

Важно е тези модификации да се правят върху самия Wandboard, защото, докато можете да редактирате вашите конфигурационни файлове ssh, за да направите това, това ще се превърне в кавга, ако се опитвате да влезете от различни машини и / или среди. След като направите промените, всяко влизане ще ви предостави този основен набор от информация. Пълно копие на скрипта в текстова форма можете да намерите на нашата страница на GitHub.

По-долу са включени картина на първото повторение на скрипта за основен контролен списък. Погледнете го и след това продължете, за да получите кратко обяснение за това, което се случва:

Всъщност в това не се случва всичко. Двете неща, които казах, че можем да направим с тази част от статията, могат да включват много повторения, така че е добра идея да напишем някои кратки функции, за да е лесно да ги правите отново и отново. Първата секция съдържа променливи, съдържащи изхода на команда, наречена tput, която за съжаление има доста неясна ръководна страница. Използваме го, за да оцветяваме определени части от изхода на скрипта в зелено или червено, така че ще бъде по-лесно да се чете и да се намери някаква ключова информация.

Първата от функциите, с които се сблъскваме, prog_check, е основната част на този скрипт - той използва изхода на ps cax, който предоставя списък с активни програми и PID и търси своята продукция с grep за ключова дума, която определяме (следователно $ 1, което означава да вземем първия аргумент след името на функцията, когато го наричаме). Ако повикването на grep намира нещо, то ще задейства следната, ако е част, за да изведе линия, съдържаща името на програмата, като "Онлайн" е в зелено до него; в противен случай той отпечатва "Офлайн" в червено.

Втората функция, ssh_check, е по-проста функция, която би трябвало да помогне за ограничаването на прекалено много отдалечени влизания, които се изпълняват едновременно (нещо, за което определено съм виновен). Променливата sshlist използва кой да ни каже кои сесии са активни, а тръбата за grep -v localhost гарантира, че само резултатите, които не съвпадат с localhost, се поставят в променливата. Следващите две променливи използват wc -l, за да получите броя върнати линии (и следователно броя на сесиите) и някои основни аритметични черупки, за да осигурите броя на останалите сесии, които се изпълняват, и след това отпечатайте всичко като преди.

И накрая, има секцията за изпълнение. Можете да видите, че понастоящем съм го настроил така, че да проверяваме котките, които са били част от предишните уроци по ROS. Можете да направите това за много по-важни ключови думи за нещата, които сте изпълнявали, като например възлите на Listener и Talker намерени тук.

Създавайки този файл на ваш собствен Wandboard и добавяне на линия, състояща се от "source .ros_status_script" във файла .bashrc в домашната ви директория на Wandboard, този скрипт ще работи всеки път, когато стартирате. По-долу е друга екранна снимка, показваща изхода на друг терминал, след като сте готови с roscore, turtlesim_node и turtle_teleop_key, заедно със 7 SSH сесии!

Считането на ssh може да изглежда малко странно, особено ако забележете, че скриптът ви разказва само за други сесии, но изброява всички от тях (включително този, който току-що сте влезли). Написах това при допускането, че когато тръгнете, отдалечените ви влизания могат да идват от различни места (и по този начин различни IP), което би трябвало да направи по-ясно и по-лесно да се определи кой е ваш.

Допълнителна информация за системата (и красотата й)

Това е добро начало, но вероятно ще помогне, ако имаме малко информация за свободното пространство на системата, използването на паметта и зареждането на процесора, когато влезем. Също така забравих да оцветя изхода на функцията ssh_check, не е необходимо, но определено ще бъде хубаво докосване. Да направим това сега.

Първо, нека добавим някакъв цвят към функцията sshcheck. Този път ще направим номерацията циан. Ще искате да добавите линията cyan = `tput setaf 6` близо до червените и зелените променливи и цветните индикатори за цветовете към отчетите за отпечатване в ssh_check, както можете да видите по-долу:

Ако сега запазвате и затваряте файла, а след това напишете source .ros_status_script, ще видите променения изход с броя цветни ssh връзки.

Ще използваме awk, за да ни помогне да форматираме някои изходи от командите свободни (памет), df (дисково пространство) и отгоре (различни статистики, но показва натоварване на процесора). Има страхотен отговор на Stack Exchange, който има добро форматиране за това, което искаме да направим, затова ще използваме примерите оттук (с леки модификации на повикването към df, за да можем да видим по-висока точност на изхода). Да ги добавим към функция, така че ако искаме да направим някакви промени, трябва само да ги направим на едно място.

По-долу можете да видите нова функция, която създадох, наречена system_check :

След като запазите файла, можете отново да използвате източника .ros_status_script, за да го изпробвате, или просто опитайте да влезете отново в ssh.

Свързани устройства

Като последно допълнение към нашия скрипт за мониторинг, би било добре да знаете какво е свързано с робота - независимо дали е истинско устройство или не. Това няма да е толкова полезно в момента, но след като се върти около Wi-Fi, ще бъде полезно да разберем как се справят всички екстри, които са свързани.

Има няколко добри начини да направите проверката на устройството. Тъй като изходът на ls / dev трябва да бъде сравнително малък, ще използваме отново grep, сравнявайки базовата линия на ls, когато се използва в директорията / dev към същия изход, когато нещата трябва да бъдат свързани.

Първото нещо, което трябва да направите, е да се отправите към нашата домашна директория (ако вече не е там). Оттам въведете ls / dev> default_devices.txt и ще видите, че сте създали файл с съдържанието на директория / dev в него. Сега трябва да редактираме отново файла .ros_status_script . По-долу съдържах екранна снимка на функция, която добавих, наречена devices_check :

Това вероятно е най-сложното от всички функции, които сме направили. В него временно проверяваме текущия списък с файлове в / dev чрез пренасочване на изхода на ls към него. ls е труден инструмент, който не се справя добре, когато сложите изхода си директно в променлива, така че, за да може да се натрупва споменатия изход, ние ще го поставим във файл като текст първо. Накрая можете да видите, че този текстов файл е изтрит.

Променливата newdevs съхранява резултатите от повикване към grep, което проверява всички линии, които се намират в currentdevs.txt, но не default_devices.txt.

devcount е просто преброяване на резултатите (имайте предвид, че когато става въпрос за монтиране на файлови системи, често ще събираме няколко дяла от едно и също устройство).

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

Заключителни коментари

Това почти покрива основите на този скрипт, предназначен да ви разкаже какво се случва, когато се свързвате с робота. Докато се натъкваме на по-сложни части от софтуера, ще продължим да го ощипваме и подобряваме, но ако имаш собствени идеи, значи ги добавиш.

В следващите няколко статии ще направим смесица от хардуер и софтуер, включително и поставянето на инструмента на Scheme-It на Digikey за теста на борда за I / O, който ще създаваме.

Наздраве!

Следващ статия в серия: C-BISCUIT: Архитектура на роботната система