ロボットシステム学

第1回: イントロダクション

千葉工業大学 上田 隆一


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

ロボットシステム学第1回

今日やること

  • 講義の内容の理解
  • Linux環境の準備(別の資料か動画で)
  • Linux環境を触る
ロボットシステム学第1回

本講義の目的

  • 最終目標
    • ROSを使いこなす
  • 途中の目標(こちらの方が大切かも)
    • ROSの「下」や「周辺」を理解して使いこなす
      • プログラミング
      • 通信
      • OSの仕組み
      • ライセンス
      • オープンソース
      • Git/GitHub
      • テスト
ロボットシステム学第1回

各回の内容(第1〜7回)

  • 第1回: イントロダクションと環境の準備
  • 第2回: Linux環境でのPythonプログラミングI
  • 第3回: Linux環境でのPythonプログラミングII
  • 第4回: GitとGitHub
  • 第5回: 著作権とライセンス(前半は第4回の残り)
  • 第6回: ソフトウェアのテスト
  • 第7回: GitHubでのテスト
ロボットシステム学第1回

各回の内容(第8〜13回)

  • 第8回: ROSのノードと通信の基本
  • 第9回: ROSの通信と型
  • 第10回: Pythonのクラスとオブジェクト
  • 第11回: ROSシステムのテスト
  • 第12回: 選択(動画を選んで視聴)
  • 第13回: まとめ
ロボットシステム学第1回

評価

  • 課題x2: 20点ずつ(ボーナス点あり)
  • テスト: 60点
ロボットシステム学第1回

参考文献(Python)

  • はじめての人向け
    • 森 巧尚: Python 1年生 第2版, 翔泳社, 2022.
  • そうでない人向け
    • 各個人のレベルによりけりなので特に指定しませんが、文法の解説が中心のもの
    • 企業のエンジニアやビジネスマン向け、「AI」とついているような応用中心のものは回避を
ロボットシステム学第1回

参考文献(Linux)

  1. 三宅, 大角: 新しいLinuxの教科書 第2版, SBクリエイティブ, 2024.
    • まずはこれでしょうか
  2. Piro: ITエンジニア1年生のためのまんがでわかる
    Linuxコマンド&シェルスクリプト基礎編, 日経BP, 2022.
    • 漫画で1より易しい
  3. 上田, 山田, 田代, 中村, 今泉, 上杉: 1日1問, 半年以内に習得
    シェル・ワンライナー160本ノック, 技術評論社, 2021.
    • 少しずつLinux(のコマンドライン)が使えるようになっていく構成になっています。後半は難
ロボットシステム学第1回

Linux環境の準備

  • Ubuntu(24.04 LTSを標準とします)
    • 特殊なものは自己責任でご使用を
  • ハードウェア(仮想マシン)環境
    • Windows Subsystem for Linux 2(WSL2)
    • PC(ネイティブ環境)
    • 仮想マシン
  • WSL2以外はGUI環境つきでインストール
    • 講義はCLI(コマンドラインインタフェース)中心
ロボットシステム学第1回

Linux環境(CLI)を触る

  • WSL(Windows)、Terminal(Mac, Linux)を立ち上げると字を打ち込める画面が出る
    • 「端末(terminal)」というもの

ロボットシステム学第1回

端末でなにをするか?

  • 理系の大学生で想定される使用法
    • プログラムを書いて動かす(本講義で主に扱う)
    • レポートやプレゼン資料書き
    • ウェブサーバやファイルサーバを作る
    • 上記用途のためにソフトをセットアップしたり整備したり
  • 慣れるとプログラミング以外でも便利に
    • しばらく端末で頑張ってみることを推奨
      • 不便もあるので、GUIと組み合わせて少しずつ
ロボットシステム学第1回

はじめての端末とコマンド

  • 「コマンド(プログラム)」を呼び出す
    • 例: ls(ファイルのリスト表示プログラム)の呼び出し
      WSL$ ls /mnt/c/Windows/
      Ubuntu$ ls /etc/
      
    • GUIのアプリも立ち上げられる
      ### エクスプローラーを立ち上げる(上田の経験ではGUIより反応が良い)###
      WSL$ explorer.exe
      WSL$ explorer.exe .
      ### Ubuntuで特定のフォルダを開く###
      Ubuntu$ open /etc/  # Ubuntu$ nautilus /etc/ でもOK
      
      • 最初はCLIでのファイル操作は難しいストレスを感じたらGUIに逃避を
ロボットシステム学第1回

ファイルの配置(Windows)

  • GUIで観察してみましょう
    explorer.exeで)
    • 「木構造」になっている
      • フォルダの「下(中)」にファイルがある
      • フォルダの下のフォルダの下にさらにファイル
      • 」をたどっていくとドライブやPCに至る

ロボットシステム学第1回

ファイルの配置(Linux)

  • 基本はWindowsと同じ
    • nautilusを使えばほぼ同じ
    • explorerと同じく端末には「いまいる場所」がある
      • pwdと打つと確認可能
        ueda@x1win:~$ pwd
        /home/ueda        # /の下のhomeの下のueda
        
  • 違い: 一番上にドライブがなくて「/」(「ルート」)がある
    • 木構造の「根」という意味
ロボットシステム学第1回

ファイルに関する用語の確認

※講義を聞く/課題を出すときに重要

  • 「フォルダ」は「ディレクトリ」と呼ぶ
    • 「フォルダ」は比喩
  • pwdで出てくる文字列の名前: 「パス」
    • 住所の都道府県や市町村を/で区切って表現しているようなもの
    • ファイル名が含まれてもパスと呼ばれる
      • 例: /etc/passwd(etcディレクトリのpasswdファイル)
ロボットシステム学第1回

ディレクトリの操作

  • 使うコマンド
    • 移動: cd、作成: mkdir、削除: rmdir、確認: pwd
$ cd /etc/            <- /etc/に移動
$ cd ..               <- /etc/の上に移動(これより上には行けない「root」)
$ cd                  <- 「/home/ユーザ」に移動(ホームディレクトリ)
$ mkdir hoge          <- hogeというディレクトリを作成
$ cd ./hoge           <- 今作ったhogeに移動(「./」: 今いるディレクトリ)
$ pwd                 <- 今いるディレクトリのパスを確認
/home/ueda/hoge
$ cd ..
$ rmdir ./hoge        <- hogeを削除
ロボットシステム学第1回

コマンドの文法

  • 空白区切りで文字列(単語)を並べる
  • 基本は先頭の単語がコマンドで、あとは引数
    $ ls /etc/            #lsに引数/etc/を与えて、/etc/のリストを表示
    $ touch a.txt b.txt   #「touch」にa.txt、b.txtという文字列を与えてファイルを作成         
    $ ls                  #ファイルができているか確認(引数なしでlsを使用)
    a.txt  b.txt
    $ rm a.txt b.txt      #「rm」にファイル名を与えてファイルを削除
    $ ls                  #lsするとa.txt、b.txtは消えている
    
    • 補足: touch: ファイルがなければ新規作成、rm: ファイルの削除
  • コマンドもファイル(whichで確認可能)
    $ which ls                #コマンドlsの由来は?
    /usr/bin/ls               #このファイル
    $ /usr/bin/ls /etc/       #ファイルを直接指定して実行
    (出力は省略)
    
ロボットシステム学第1回

シェル

  • 打ち込んだ文字列を解釈してコマンドを呼び出しているプログラムが存在
    • シェル」という種類のプログラム
    • 今使っているのは「Bash」という名前のプログラム
  • コマンドを探しているのもシェル
    • lsとユーザが打つ/usr/bin/lsを探して実行
      • シェルのPATHという変数に、探すべきディレクトリのリスト
        $ echo $PATH  #echo: 引数で指定した文字列や変数を表示
        /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
        :/usr/games:/usr/local/games:/snap/bin
        
      • 変数があるように、シェルはプログラム言語でもある
ロボットシステム学第1回

ファイルの作成

  • エディタを使う
    • Windowsなら「メモ帳」(notepad.exe)、UbuntuのGUIならgeditに相当
  • 本当はVimを使ってほしいのですが、ここではnano
    • 次ページ
    • Vimについては宿題
ロボットシステム学第1回

nanoを使う

  1. nano hello.pyと端末に打ってエディタを立ち上げ
  2. 何か書いて保存(この例はPythonのコード)
  3. フッタのメニューにある^O(Ctrl+O)で保存
    • File Name to Write: hello.pyと聞かれるのでEnter
  4. ^X(Ctrl+X)で終了
ロボットシステム学第1回

ファイルができているか確認

  • lsファイルができているか確認
  • catで、書いた内容を確認
$ ls hello.py
hello.py
$ cat hello.py
#!/usr/bin/python3

print("hello")
  • 最後に確認問題
    • hello.pyのパス(/から始まるフルパス)をノートかどこかに書いてみてください。
    • パスの概念が3回目くらいまでにできてない人は単位厳しいです。
ロボットシステム学第1回

まとめ

  • 今回の内容
    • イントロダクション
    • Linux環境の準備
    • ディレクトリの操作、ファイルの作成
      • 最初はGUIで。徐々にCLIに慣れること
  • 重要語句
    • 端末(terminal)、コマンド、シェル、Bash、パス、PATH、ディレクトリ、エディタ、Vim、ファイル
  • 出てきたコマンド
    • lsnotepad.exenautilusechotouchrmcdmkdirrmdirpwdnanocat
ロボットシステム学第1回

宿題: Vimを使えるようにする

  • Vim練習コマンドvimtutorを実行
  • 書いてある内容に従う
  • nanoで書いたものをVimで書いてみる
    • Vimを立ち上げるコマンド: vi ファイル名
    • ファイル名は変えましょう
ロボットシステム学第1回