19
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ROSAdvent Calendar 2021

Day 25

機械工学科高専生とROSロボットを作るための仕組みづくり

Last updated at Posted at 2021-12-26

#なんの記事なの?
 ロボットのシステム・ソフトウェア開発好きな学生を増やすために,プログラミング実習後の機械工学科3年生を捕獲してROS勉強会をやろうとした.
 自分だけなら勉強するし,身銭切るし,調べるので,どんな道具でも良いけど,「学生と」となるとそうもいかないので,「うまい・やすい・はやい」を目標に道具立ての試行錯誤を行った活動結果を,備忘録(と反省)を兼ねてまとめました.
 似た事をやろうとしている人は,同じ穴に落ちないようにしてください.
 なお,書き方や理解が大雑把な個所が見られると思いますが,筆者のROSやLinuxに関する知識が未熟なせいですのでご容赦ください(引き続き勉強します).

仲間(学生)のステータス

  • のうりょく:すこしたかい
  • やるき:ふつう
  • そうび:BYOD指定ノートPC(Windows 10, core i5, Memory 8 Gb, 独立GPUなし)
  • 所持ゴールド:もってる筈だがでてこない
  • とくしゅのうりょく:
    • C言語の基礎:「構造体・・・ってなんでしたっけね?(by 卒研生.担当教員に100のダメージ)」
    • Arduino プログラミング(サッカーロボットの制御)
    • Linux知識:「知ってる知ってる.アレでしょ,えーと,アレ」レベル.
  • そのた:ロボット開発=アルミ製粉業だと思っている(機械科なので)

どんな機材/開発環境を準備すべきか?

  • ロボット:
    • 個人購入は困難.共用品が数台ある(1台/4~5人程度)ぐらいで.
    • Raspberry Pi Mouse ((株)アールティ)を2台,TurtleBot3 burger(ROBOTIS)を1台準備
    • CPU(ラズパイ等)ぐらいは買って貰えると嬉しい.
  • 開発用PC:BYOD指定ノートPC
  • 開発環境構築のポイント:
    • はやい(構築が簡単)
      • 対ストレス性が高くないので,構築困難だと逃げられます.「俺の若けぇ頃はなぁ,鉄板の上に寝て頑張ったもんだ!」などと言うと一瞬で逃げられます.はめるまで我慢.
    • うまい(ぶっ壊してもリカバリが容易)
      • 「Windows の再インストール?したこと無いっすね」(by 卒研生)が普通なので,「ぶっ壊しても直せる」という自信がつくまで再インストールして貰う.「Linux力 はインストール回数に比例する」[1]
    • やすい:
      • PC一台で普段使い(Windows)とROS開発ができるのがベスト

ロボットはこちらで準備することにしたので,学生PCの開発環境をどないするかについて試行錯誤.

開発環境 Try and Error

1st Gen. (Windows 10 + WSL 1 + Ubuntu 18.04):

ポイント:

  • コロナ下のリモート授業時だったため,ラズパイマウスシミュレータ[2]の利用を想定
  • 『デュアルブートは危険』という噂(今まで散々やってきたのだが・・・世間がそう言うならば)
  • Docker [3]:「せんせいは何を考えているんですか?」(by 同僚)
  • Hyper-V:「皆さんWindowsのエディションは? エディションなにそれ? ア,ハィ」

というわけで,1st Gen.はWSL 1で構築しました(ニタヨウナモンダトオモウガ).以下,環境構築手順書のフローチャートです.

image.png

結果:

参加者7名の殆どが環境構築で討ち死にしました.原因は,

  • 手順書通りに作業したのにエラーが出る(多分ミスってるが,リモートで,こちらも十分な知見が無いのでサポートしきれない)
  • シミュレーションまで動いたがすごい遅い(Core i5でシミュレーションは辛かったか?(旧世代だったのかも?))

というわけで,1st Gen.は壮大な実験に終わりました.
 あと,当時,「WSLはシリアルデバイスを認識できないのでrosserialの障壁になる」と思っていたのでWSL案は捨てたのですが,これは後で勘違いだとわかります.

2nd Gen. (Raspberry Pi 4)

2nd Gen.は,リモート授業→対面授業となった時期に開始.

1st Gen. の反省:

  • 仮想環境は構築の手間が増えてダメだ!
  • Raspberry Pi 4 ならdesktopとして使えるのでは? 安そうだし!

というわけで,ラズパイ4を開発環境として採用.

  • Raspberry Pi 4コンプリートキット(スイッチサイエンス.15730円)
  • モバイルモニタ(15000円ぐらい)

しめて3万強・・・あれ?あまり安くなくない?(ものによりますが,3万出せば第7世代の中古ThinkPadが買える)というわけで,「ラズパイなら安い」というのは思い込みだったようです.
 一方,「ロボットと同じCPUなので学習コストが下がる」ことを期待して継続.

結果:

  • imager で一発構築できるし,なかなかいいじゃん
  • だが学生君,amd64アーキテクチャ用の某をインストールして大騒ぎするのはやめてもらおうか
  • そもそも,ラズパイ用Ubuntu desktopイメージは最新ディストリビューションしか配布されていないだと? pythonのバージョンがあぁぁぁ(多くのROS教本[4, 5]は kinetic(with Ubuntu 16.0x)と melodic (with Ubuntu 18.0x)を想定しているため,知らないとはまる)

知っていれば避けられる罠に真っ向勝負を仕掛けるのが若さ.

 Ubuntu ではなく,Raspberry Pi OS(Debian ベース)にROSをインストールする方法も公式Wikiで紹介されていますが(ROSberry Pi),Debian 11のリリースに伴い,ラズパイOSも10(buster)ベースから11(bullseye)ベースに変更されたこと,暫くは両バージョンのラズパイOSが提供されることが,メダパニ力の向上に寄与していると思われます.
 さらに,M1 MacやARM版PCで動くLinuxが出始めたことが,混乱に拍車をかけそうな予感がします(キケンダ).

結論:

Arm版Linuxはあぶないのでおとなのひとと一緒に使いましょう

3rd Gen. (恥ずかしながら帰ってきたWSL)

 Armに懲りたのと,WSL 1でもrosserialを使えるのに気付いたことから,WSLに戻ってきました.時が経ち,WSLのインストールもコマンド一発になり,複数の同一Linuxディストリビューションが共存できることも知ったので(上のリンク中ほど),かなり有力な選択肢です.
 
 インストールの話に進む前に,Windowsの仮想環境について整理しておきます.

  • Hyper-V:Windows仮想環境の元締め(この程度の認識).WSLもこの機能を使う.直接利用するにはWindows Pro以上でなければならない(終了)
  • WSL 1:Hyper-Vの機能を使ってUbuntuとかを利用できる.
  • WSL 2:いいWSL(この程度の認識).Windows 11ならXクライアント無しでもGUIアプリを使える.だが,シリアル通信が封じられている(なんで?).ネットワークがWindowsと別セグメントになるため,ROS 1のロボット-開発機間通信が難しい(できるのかもしれないが分かってない)(終了)
  • VirtualBox:Hyper-Vと仲が悪い(この程度の認識).共存できないので,WSLやDockerの利用に支障が生じる.シリアル通信が使えるらしいので,WSLと絶交しても良いなら選択肢に入る.
  • Docker:よくわからんが,シリアル通信できる気がしない(調べてない)

というわけで,Windows + WSL 1 + Ubuntu.環境構築は多少面倒かもしれませんが,armでのカオスを考えたら安いもんです.

 ただし,WSL 1でGUIを使うには別途Xクライアントのインストールが必要です.フリーのクライアント(VcXsrv)もありますが,自分は(というか学生が)結構トラブったので,有償のクライアント(X410)と併せて使っています

結果:

  • よし!rosserialも動いた完璧!
  • だが,Sony Dualshock 繋いでも/dev/joyができないのだが?

 「ロボット操作にDualshock(PlayStation4用コントローラー)使いたいじゃろ」と繋いてみたのですが,Ubuntuだとできる筈の/dev/joyができない・・・という訳で,コントローラーを繋ぐにはひと工夫要りそうです(出来るのか?).キーボード操作なら問題無いのかもしれません(試してません).

まとめ

中古のThinkPad でも買ってUbuntu を入れよう!一番コストが低いぞ(出費+作業量的な意味で)が正解です(イマサラ).
「しなくていい苦労の大海原に乗り出し,一週まわって帰ってきた」のが2021年でした.
来年は,生産的なことをしたいと思います.

参考文献:

  1. 奈佐原顕郎,入門者のLinux,ブルーバックス (2016).相変わらずブルーバックスは初心者に求めるレベルが高い.
  2. Raspberry Pi Mouse Simulator’s Tutorial,https://raspimouse-sim-tutorial.gitbook.io/project/(accessed at 2021/12/25).久々に見たらインストーラーが整備されていて腰が抜けた.
  3. Tiryoh, docker-ros-desktop-vnc, https://github.com/Tiryoh/docker-ros-desktop-vnc (accessed at 2021/12/25).自分は感動したんですけど周囲の理解が得られませんでした.
  4. 上田隆一,Raspberry Piで学ぶ ROSロボット入門,日経BP (2017).
  5. ピョ・ユンソクほか,ROSロボットプログラミングバイブル,オーム社 (2018).
19
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?