# 知能ロボット行動プログラミング演習

## 2025年度　機械情報工学科　冬学期演習

この資料は，知能ロボット行動プログラミング演習のためのものである．左のサイドバーから各回の資料を参照してほしい．

### 双腕移動台車ロボット（Jedy）

```{figure} fig/jedy.png
---
width: 400px
name: fig:jedy-index
---
双腕移動台車ロボットの外観
```

### システム構成

```{figure} fig/system-configuration-all.png
---
width: 600px
name: fig:system-configuration-all-index
---
双腕移動台車ロボットシステム構成
緑：ROSノード，赤：アクチュエータ，青：センサ，破線：ROS topic通信，実線：デバイスへのアクセス・その他
```

## 演習情報

### 担当教員

- 岡田慧 教授 (k-okada@jsk.imi.i.u-tokyo.ac.jp)
- 小島邦生 講師 (k-kojima@jsk.imi.i.u-tokyo.ac.jp)
- 矢野倉伊織 助教 (yanokura@jsk.imi.i.u-tokyo.ac.jp)
- 真壁佑 助教 (makabe@jsk.imi.i.u-tokyo.ac.jp)
- 山口真奈美 技術専門職員
- TA: 情報システム工学研究室

### 日程とスケジュール

冬学期演習の最後のまとめとしてこれまで学習してきた様々な内容を含んだ統合的演習を3回行う．全3回の内容は以下のような予定になっている．

1. **第1回 令和6年11月17日（月）知能ロボット行動プログラミング(1)**
   - メカトロボットの製作とプログラミング
   - ※機械工学総合演習第二「電子回路演習」で配布した回路教材を用意しておくこと

2. **第2回 令和6年11月18日（火）知能ロボット行動プログラミング(2)**
   - 双腕移動台車ロボットを用いた認識操作プログラミング

3. **第3回 令和6年11月20日（木）知能ロボット行動プログラミング(3)**
   - ロボットの全身行動プログラミング
   - これまでの内容を統合した知能ロボットシステムの構築

## 演習の進め方

各演習ではまずこちらから内容について概説し資料を読みながらロボットを実際に動かすことで進めてもらう．
演習を通して各資料にある実行プロセスを実際に実行してもらい**ロボットのアーム，台車を動かす，センサ情報を取得する，シミュレータを起動する**にはどうすればいいのかを体感しながらロボットの知能行動をプログラミングする方法の全体像をつかんで貰うのが演習の目的である．
複雑に見えるかもしれないが各資料のチェックポイントを着実にこなせば実行できるはずである．

資料にはいくつかチェックポイントがあるのでそれを確認しながら演習を進める．
各チェックポイントはその日の必須課題となっているので実行結果の画面などをスクリーンショットや写真で保存しておくとよい．
各チェックポイントを確認し終えたら進捗報告シート(Googleスプレッドシートを予定)に記入していくこと．
各チェックポイントに書いてあることができない場合次回以降の演習遂行が困難になるのでうまくいかなければTAを呼んで解決し先に進んで欲しい．
また**ロボットシステムの講義で扱ったROS (Robot Operating System)およびPythonやEusLisp**をある程度習得していることを前提に進めるがこれらに関することも遠慮なく質問して構わない．
**TAとして来ている研究室の学生もこういったロボットプログラミングを学習してきているが，自分で行うのと自分以外の人の質問に答えたりすることはまた異なる能力が求められるため，どんどん質問して一緒に問題を解決していってほしい．**
毎回最終的に「本日の課題」に取り組み実行結果をUTOLで提出すること．

## 課題について

### 課題の確認方法

```{important}
各チェックポイントを達成しながら，進捗報告シートへの記入を進め，全てのチェックポイントの進捗報告を完了せよ．各チェックポイントの結果をスクリーンショット等で保存しておくこと．
```

### 課題の提出方法

以下の必須課題を完了すること．課題の実行結果をスクリーンショット等で保存し，pdfファイルにまとめてUTOLに提出すること．

- **ファイル名**: `知能ロボット行動プログラミング演習_名前_x日目.pdf`
- **提出期限**: 各回の必須課題は当日中に提出すること

<span style="color:red">発展課題に関しては必須ではないが，すべてをこなすとかなりのロボットレベルが上がるため，これからロボットをやっていきたいというロボット経験者も未経験者もぜひチャレンジしてほしい．</span>
新しいことを学ぶとき，経験者もそうでない場合も関係なく皆同じスタートラインに立っている．
発展課題で取り組んだものについては最終レポートに含めて提出してみてほしい．

## リソース・リンク集

### GitHubリポジトリ

演習のコードはGitHubで公開されている：

https://github.com/jsk-enshu/robot-programming

コードやwikiの情報があり，wikiには演習のFAQを載せているのでそちらも参考にしてもよい．

### 資料の改善への貢献

本演習資料はGitHubで管理されており誰でも閲覧・貢献できる．
もし資料に誤字脱字やわかりにくい文章を見つけた場合は以下の方法で改善に貢献できる：

- **[Issue](https://github.com/jsk-enshu/robot-programming/issues)（問題報告）**：誤りや改善提案をGitHubのIssueとして報告できる
- **[Pull Request](https://github.com/jsk-enshu/robot-programming/pulls)（修正提案）**：直接修正を提案できる

具体的なドキュメント資料は[こちら](https://github.com/jsk-enshu/robot-programming/tree/master/docs)にMarkdown形式で書かれているため修正など行いやすいだろう．

やり方を知りたい人はTAや先生に聞いてみよう．
GitHubでの貢献方法を知っている人は積極的に修正してほしい．
**あなたの修正が今後も機械情報工学科の後輩たちのために残っていくだろう．**

### 便利リンク集

- **演習FAQ**
  - https://github.com/jsk-enshu/robot-programming/wiki/FAQ

- **EusLispのドキュメント**
  - https://github.com/euslisp/jskeus/blob/master/doc/jmanual.pdf
  - http://euslisp-docs.readthedocs.io/en/latest

- **EusLisp document for robot-programming**
  - http://jsk-enshu.github.io/robot-programming/robot_programming_manual.pdf
  - タートルボットのメソッド等，演習に役立つEusLispのドキュメント
  - (https://github.com/jsk-enshu/robot-programming のREADMEのdocumentationsからたどれる)

## 事前準備

{doc}`robot-programming-3-2025`は機械工学総合演習第二「電子回路演習」で配布した回路教材を用意しておくこと．
{doc}`robot-programming-1-2025`以降はジョイスティックコントローラ・Jedyは適宜充電すること．
各回の資料や付録の情報もぜひ見ながら演習を進めてほしい．
また必須ではないが左のサイドバーに[Caps LockをCtrlに変更](tips/caps-to-ctrl.md)などの便利な情報がまとまっているので適宜参照してほしい．
