C-BISCUIT: Memantau Kesihatan Robot Anda

The Great Gildersleeve: French Visitor / Dinner with Katherine / Dinner with the Thompsons (Julai 2019).

$config[ads_text] not found
Anonim

C-BISCUIT: Memantau Kesihatan Robot Anda


Dalam artikel terakhir, kami meneruskan dasar-dasar untuk mendapatkan Ubuntu dan ROS dipasang di Wandboard. Kali ini, kita perlu menambah tatanan sistem dan membuatnya dengan cara yang mudah diubahsuai dan dibina kerana kami memerlukan maklumat yang lebih khusus dari sistem.

Siri C-BISCUIT

  1. C-BISCUIT: Platform Robot untuk Hacker dan Hobbyist
  2. C-BISCUIT: Pilihan Reka Bentuk dan Pengadilan
  3. C-BISCUIT Kuasa: 5V 3A Buck Regulator untuk Wandboard
  4. C-BISCUIT Kuasa: Litar Perlindungan Crowbar untuk Pengatur 5V
  5. C-BISCUIT: Otak Operasi
  6. C-BISCUIT Kuasa: Perhimpunan dan Ujian Pengatur dan Litar Crowbar
  7. C-BISCUIT: Memantau Kesihatan Robot Anda
  8. C-BISCUIT: Senibina Sistem Robot
  9. C-BISCUIT: Reka Bentuk Skematik untuk RCB-Microcontroller, Motor Controller
  10. C-BISCUIT: Rekabentuk Skematik untuk Power-RCB, Stepper
  11. C-BISCUIT: Layout dan Perhimpunan untuk Lembaga Kawalan Robot
  12. C-BISCUIT: Integrasi Sistem dan Ujian

Bacaan yang diperlukan

Tidak seperti di dalam Otak artikel Operasi, di mana bahagian kandungan adalah versi penspendan dan pemasangan tweak untuk Ubuntu dan ROS, ia tidak adil (dan sangat tidak perlu) untuk mencipta Tutorial ROS yang luas yang terdapat di wiki mereka. Ia akan menjadi ideal jika anda boleh melihat ini sebagai sebahagian daripada petunjuk untuk meneruskan di sini, sekurang-kurangnya sejauh Penerbit / Pelanggan dalam Python. Sebaik sahaja anda melakukannya, anda akan bersedia untuk beberapa artikel yang akan datang mengenai susunan perisian.

Akhirnya, kerana artikel ini akan memusatkan perhatian pada beberapa skrip bash, disarankan agar anda mendapat gambaran singkat jika anda tidak biasa dengan baris arahan-saya mengesyorkan LinuxCommand.

Nota mengenai Isu dan Kemas Kini Wi-Fi

Jika anda melihat di sekitar internet, anda akan mendapati bahawa sesetengah pengguna mengalami masalah dengan sambungan Wi-Fi dengan Wandboard.

Walaupun kami belum menemui keadaan yang tepat pada masa ini, dalam ujian kami, kami melihat beberapa masalah dengan mengemas kini perisian di papan dengan tepat apabila sistem akan membekukan semasa memasang pakej tertentu. Penyelesaian yang paling mudah untuk ini seolah-olah untuk memulakan semula sistem dan memasang pakej itu secara berasingan, sebelum mencuba kemas kini dan menaik taraf perintah sekali lagi.

Jika anda mengalami masalah sama ada Wi-Fi atau mengemas kini, pastikan anda memberi komen di bawah dan beritahu kami apa yang anda lihat supaya kami boleh menyiasat dengan lebih baik.

Maklumat Semasa Masuk melalui SSH

Salah satu perkara pertama yang akan kami lakukan ialah Wandboard memberitahu kami apa yang sedang dan tidak berjalan semasa kami log masuk. Untuk itu, kami perlu mengedit fail .bashrc sekali lagi, mewujudkan seksyen yang sama sekali baru di mana kami sumber skrip baru yang akan kami buat, dipanggil .ros_status_script .

Adalah penting bahawa pengubahsuaian ini dibuat pada Wandboard, sendiri, kerana, semasa anda boleh mengedit fail konfigurasi ssh anda untuk melakukan ini, ia akan menjadi masalah jika anda cuba log masuk dari mesin dan / atau persekitaran yang berbeza. Sebaik sahaja perubahan dilakukan, setiap log masuk akan memberikan anda maklumat asas ini. Satu salinan lengkap skrip dalam bentuk teks boleh didapati di halaman GitHub kami.

Di bawah saya telah memasukkan gambar lelaran pertama skrip semakan asas. Lihatlah, dan kemudian teruskan di bawah untuk mendapatkan penjelasan ringkas tentang apa yang berlaku:

Sebenarnya tidak semua yang berlaku dalam satu ini. Kedua-dua perkara yang saya katakan yang kami lakukan dengan bahagian artikel ini boleh melibatkan banyak pengulangan, jadi ia adalah idea yang baik untuk menulis beberapa fungsi pendek untuk memudahkan mereka melakukannya berulang-ulang. Bahagian pertama menampilkan pembolehubah yang mengandungi output perintah yang dipanggil tput, yang malangnya mempunyai halaman manual yang agak samar. Kami menggunakannya untuk mewarnakan bahagian tertentu skrip output hijau atau merah supaya lebih mudah untuk membaca dan mencari beberapa maklumat penting.

Yang pertama dari fungsi yang kita hadapi, prog_check, adalah bahagian teras skrip ini - ia menggunakan output ps cax, yang menyediakan senarai program aktif dan PID, dan mencari output dengan grep untuk kata kunci yang kami tentukan (oleh itu $ 1, yang bermaksud untuk mengambil hujah pertama mengikut nama fungsi apabila kita memanggilnya). Sekiranya panggilan kepada grep mendapati sesuatu, ia akan mencetuskan bahagian jika berikut untuk mengeluarkan baris yang mengandungi nama program, dengan "Online" di sebelah hijau di sebelahnya; sebaliknya, ia mencetak "Luar Talian" dengan warna merah.

Fungsi kedua, ssh_check, adalah fungsi yang lebih mudah yang harus membantu mengekang mempunyai terlalu jauh login jauh sekali (sesuatu yang saya pasti bersalah). Sshlist berubah menggunakan siapa untuk memberitahu kami sesi apa yang sedang aktif, dan paip ke localhost grep -v memastikan hanya hasil yang tidak sepadan dengan localhost dimasukkan ke dalam variabel. Kedua-dua pembolehubah berikut menggunakan wc -l untuk mendapatkan bilangan baris yang dikembalikan (dan oleh itu bilangan sesi), dan beberapa aritmetik shell asas untuk memberikan kiraan sesi lain yang dijalankan, dan kemudian kita mencetak semuanya sama seperti sebelumnya.

Akhirnya, ada bahagian run. Anda dapat melihat bahawa saya sekarang telah menetapkannya supaya kami memeriksa nod turtlesim yang merupakan sebahagian daripada tutorial ROS yang terdahulu. Anda boleh melakukan ini untuk banyak kata kunci yang lebih penting untuk perkara yang anda jalankan, seperti nod Pendengar dan Talker yang terdapat di sini.

Dengan membuat fail ini pada Wandboard anda sendiri dan menambah garis yang terdiri daripada "sumber .ros_status_script" ke fail .bashrc di direktori rumah Wandboard anda, skrip ini akan berjalan setiap kali anda memulakan. Berikut adalah tangkapan skrin yang lain, menunjukkan output terminal lain sebaik sahaja anda mempunyai roscore, turtlesim_node, dan turtle_teleop_key yang semuanya berjalan (bersama-sama dengan 7 sesi SSH keseluruhan!).

Pengiraan ssh mungkin kelihatan agak pelik, terutamanya jika anda perhatikan bahawa skrip hanya menceritakan tentang sesi lain, tetapi menyenaraikan semuanya (termasuk yang anda log masuk). Saya menulis ini di bawah andaian bahawa apabila anda pergi, log masuk jauh anda mungkin datang dari tempat yang berlainan (dan dengan itu IP yang berbeza), yang sepatutnya membuatnya lebih jelas dan mudah untuk menentukan yang mana anda adalah.

Maklumat Sistem Tambahan (dan Prettying It Up)

Itulah permulaan yang baik, tetapi mungkin akan membantu jika kami juga mendapat sedikit maklumat mengenai ruang kosong, penggunaan memori, dan beban CPU semasa kami melog masuk. Juga, saya terlupa untuk mewarnakan output fungsi ssh_check, tidak perlu, tetapi ia pasti menjadi sentuhan yang bagus. Mari buat sekarang.

Mula-mula, mari tambahkan beberapa warna ke fungsi sshcheck. Kali ini, kami akan membuat penomboran cyan. Anda akan ingin menambah baris cyan = `tput setaf 6` berhampiran pembolehubah merah dan hijau, dan penunjuk warna cyan ke penyataan cetakan di ssh_check, seperti yang anda lihat di bawah:

Jika anda kini menyimpan dan menutup fail itu, maka taipkan sumber .ros_status_script, anda akan melihat output yang diubah dengan bilangan sambungan ssh berwarna.

Kami akan menggunakan awk untuk membantu kami memformat beberapa output daripada perintah-perintah (memori), df (ruang cakera), dan atas (pelbagai statistik, tetapi menunjukkan beban CPU). Terdapat jawapan Stack Exchange yang hebat yang mempunyai pemformatan yang baik untuk apa yang kita mahu lakukan, jadi kami akan menggunakan contoh-contoh dari sana (dengan sedikit pengubahsuaian kepada panggilan ke df supaya kita dapat melihat output ketepatan yang lebih tinggi). Mari tambahkan mereka kepada satu fungsi supaya jika kita mahu membuat perubahan, kita hanya perlu membuatnya dalam satu tempat.

Di bawah ini anda dapat melihat fungsi baru yang saya buat, dipanggil system_check :

Sebaik sahaja anda menyimpan fail itu, anda sekali lagi boleh menggunakan sumber .ros_status_script untuk mencubanya, atau cuba lagi log masuk melalui ssh sekali lagi.

Peranti Terhubung

Sebagai tambahan akhir kepada skrip pemantauan kami, ini adalah idea yang baik untuk dapat memberitahu apa yang berkaitan dengan robot-sama ada peranti sebenar atau tidak. Ini tidak akan berguna seperti sekarang, tetapi apabila ia beralih kepada Wi-Fi, ia akan menjadi berguna untuk mengetahui bagaimana semua tambahan yang disambungkan juga dilakukan.

Terdapat beberapa cara yang baik untuk melakukan pemeriksaan peranti. Oleh kerana output ls / dev perlu agak kecil, kita akan menggunakan grep sekali lagi, membandingkan output asas ls apabila digunakan pada direktori / dev ke output yang sama apabila perkara perlu disambungkan.

Perkara pertama yang perlu kita lakukan ialah pergi ke direktori rumah kami (jika tidak ada). Dari sana, ketik ls / dev> default_devices.txt, dan anda akan melihat bahawa anda telah membuat fail dengan kandungan direktori / dev di dalamnya. Sekarang kita perlu mengedit fail .ros_status_script sekali lagi. Di bawah saya telah menyertakan tangkapan skrin fungsi yang telah saya tambah dipanggil devices_check :

Ini mungkin yang paling rumit daripada semua fungsi yang telah kami lakukan. Di dalamnya, kami (untuk sementara) menyemak senarai semasa fail dalam / dev dengan mengalihkan output ls ke dalamnya. ls adalah alat rumit yang tidak berfungsi dengan baik apabila anda meletakkan output secara langsung ke pemboleh ubah, jadi untuk dapat output grep berkata, kami akan memasukkannya ke dalam file sebagai teks terlebih dahulu. Pada akhirnya, anda dapat melihat bahawa fail teks ini dihapuskan.

Pemboleh ubah newdevs menyimpan hasil panggilan ke grep yang memeriksa semua baris yang ada dalam currentdevs.txt tetapi bukan default_devices.txt.

devcount hanyalah kiraan hasil (perhatikan bahawa ketika datang ke pemasangan sistem fail, kita sering akan menangkap banyak partisi dari perangkat yang sama).

Akhirnya, kami mencetak kiraan dengan beberapa pewarnaan yang mudah dilihat dan kemudian, jika terdapat apa-apa hasil, kami menyenaraikannya. Cuba sambungkan tongkat USB atau pengawal permainan dan lihat apa yang berlaku apabila anda menjalankannya!

Komen Tutup

Itu cukup merangkumi asas-asas skrip ini yang direka untuk memberitahu anda apa yang tersambung ketika anda menyambung ke robot. Apabila kita masuk ke bahagian yang lebih rumit dari sisi perisian, kita akan terus tweak dan memperbaikinya, tetapi jika anda mempunyai idea-idea anda sendiri, maka dengan segala cara menambahnya.

Dalam artikel kami yang akan datang, kami akan melakukan gabungan perkakasan dan perisian, termasuk meletakkan alat Skema-It Digikey untuk ujian untuk papan I / O yang akan kami buat.

Cheers!

Artikel seterusnya dalam Siri: C-BISCUIT: Robot System Architecture