# ROSのグラフィックスと視覚化
---
## グラフィカルインターフェイス rqt
Qtライブラリに基づいたユーザーインターフェイス(GUI)
- インターフェースはカスタマイズおよび拡張できます
- 多くのプラグインがあります
- 独自のプラグインの作成は可能
- 一部のプラグインは`rqt`を起動せず、別のコマンドで直接実行できます(例えば、先週学習した`rqt_graph`や以下の`rqt_image_view`など)
使い方
```bash
rosrun rqt_gui rqt_gui
```
あるいは単に
```bash
rqt
```
---
### 例:画像の表示
```bash
rqt_image_view
```
---
### 例:メッセージ値を経時的にプロットする(2時限プロット)
```bash
rqt_plot
```
---
#### turtlesimで試してみよう
まず、turtlesimを起動してください。
```bash
roscore
```
```bash
rosrun turtlesim turtlesim_node
```
```bash
rosrun turtlesim turtle_teleop_key
```
次、`rqt_plot` を開いて、亀ロボットの位置のプロットを追加してください(Topicのところに /turtle1/pose と書いて、エンターを押す)
---
## RViz
多機能の3D視覚化ツール
- トピックを購読し、メッセージの内容を視覚化する
- インタラクティブツールを使用して情報を公開できる
- 構成を保存して再読み込みできる
- アドオンを作成することで拡張可能
実行方法
```bash
rosrun rviz rviz
```
あるいは単に
```bash
rviz
```
---
### レイアウト
---
### 表示したいトピックを追加する
Addボタンを押して、現れたメニューからトピックタイプが選択可能
「By topic」タブでは現存のトピックの一覧がある(RVizで表示可能なものだけ)
---
# シミュレーション
---
## Gazeboシミュレータについて
3Dシミュレーションツール
- 独立したアプリケーションだが、ROSと接続可能
- 物理的シミュレーション
- 3Dグラフィックディスプレイ
- ロボットのセンサやアクチュエータのシミュレーション
- ユーザーとのインタラクション
- 事前定義されたロボットと環境が含まれています
---
> まず、Gazeboのための環境変数を設定してください
>
> 以下のコマンドを一度だけ実行してください
```bash
echo "export GAZEBO_RESOURCE_PATH=/usr/share/gazebo-11/" >> ~/.bashrc
```
> その後、全てのコンソールを一回閉じましょう
---
## Gazeboの実行
### スタンドアロンアプリケーションとして
```bash
gazebo
```
---
### ROSから
- 基本パッケージは `gazebo_ros`
- 主なアプリケーション(ノード)とコマンド:
- `gzserver` → シミュレータ自体
- `gzclient` → グラフィカルインターフェイスと視覚化
- `gazebo` = `gzserver` +` gzclient`
- コマンド`spawn_model` → シミュレーション内にモデルの導入(以下で説明する)
- 例えば
```bash
rosrun gazebo_ros gazebo
```
https://gazebosim.org/tutorials?tut=ros_overview
---
より簡単 → launchファイルを使用 (`empty_world.launch`)
empty_world.launchの重要な引数:
- `world_name` → シミュレーションするワールドまでのパス
- `gui` → グラフィックインターフェイスを起動するか
例
```bash
roslaunch gazebo_ros empty_world.launch world_name:=worlds/pioneer2dx.world gui:=true
```
**注意**:ワールドを始めて開くときに、Gazeboが追加ファイルをダウンロードすることがあります。時々結構時間がかかります。起動するまで待ってください。
https://gazebosim.org/tutorials?tut=ros_roslaunch
---
## ワールド内にロボットを追加
主に以下の2つの方法があります。
1. ワールドファイル(.world)の中に含める
- 上記の例のpioneer2dx.worldファイルはこの方法を使っています。Pioneer 2DX というロボットのシミュレーションです。
2. ロボットの形状の定義に基づいて、既存のシミュレーション内で作成
- コマンド`spawn_model`を使用する
- 形状ファイルはいわゆるURDF形式を使っています
`spawn_model`の使用例:先週の課題で使っていたturtlebot3ロボットのミュレーション
ラウンチファイル turtlebot3_empty_world.launch の中身:
```xml
```
→ コマンド`spawn_model`の使い方に注目してください
- include を使って gazebo_ros パッケージの empty_world.launch を含めている
- turtlebot3_burger.urdf.xacro → ロボット形状の定義(URDF形式)
# シミュレーションようのロボットモデル(任意)
---
## URDF
*Unified Robot Description Format*
- ロボットモデルを記述するためのXML形式:
- 見た目
- 運動モデル(キネマティクスやダイナミクス)の定義
- 衝突検出モデル
例:視覚化のための3Dモデル
例:衝突検出モデル
詳細:
https://wiki.ros.org/urdf
https://wiki.ros.org/xacro
---
→ [実習その2](v2_2.html)
← [イントロ](v2_intro.html)
↑ [ホームページ](index.html)