# gazebo_RoIS_tanacchi

[![build status](https://inohira.mns.kyutech.ac.jp/git/tanacchi/gazebo_RoIS_tanacchi/badges/master/build.svg)](https://inohira.mns.kyutech.ac.jp/git/tanacchi/gazebo_RoIS_tanacchi/commits/master)

Gazebo (meta) package for RoIS

## 導入方法

ROS 環境の構築後以下を実行
```shell
$ mkdir gazebo_RoIS_ws
$ cd gazebo_RoIS_ws 
$ git clone https://inohira.mns.kyutech.ac.jp/git/tanacchi/gazebo_RoIS_tanacchi.git src
$ cd src
$ catkin_init_workspace
$ sh install_packages.sh
$ cd ..
$ catkin_make
$ echo "source ${PWD}/devel/setup.bash" >> ~/.bashrc` # 必要ならば 

```

## ディレクトリ構成

```txt
gazebo_RoIS_tanacchi    // 当該パッケージ  
├── rois_2dnav_gazebo   // 2Dナビゲーション用の設定および launch ファイル  
├── rois_bringup        // 統括的 launch ファイル  
├── rois_description    // robot, world のモデル  
├── rois_gazebo         // Gazeboの設定および launch ファイル  
└── route_guidance_ros  // RoIS コンポーネント，エンジン，サービス，テスト用のファイル  
```

## 動作例

### Gazebo の起動，キーボードによる操作

1. teleop_twist_keyboard を起動．
   操作方法は標準出力もしくはROS公式ドキュメントを参照のこと．  
   $ `roslaunch rois_gazebo teleop_keyboard.launch`
2. 別のターミナルで，Gazebo を起動  
   $ `roslaunch rois_gazebo setup_gazebo.launch`

### GMapping による地図生成

1. 上の「Gazebo の起動，キーボードによる操作」に沿ってGazebo, teleop_twist_keyboard を起動する
2. 別のターミナルで，rosbag の収録を開始  
   $ `rosbag record -O hoge --all`（`-O` の直後は生成されるファイルの名前）
3. Gazebo 上のロボットを気の済むまで走らせる
4. rosbag をキルする
5. Gazebo, teleop_twist_keyboard をキルする
6. bag ファイルをもとに 2D マップを生成する  
   $ `roslaunch rois_2dnav_gazebo generate_2dmap.launch bagfile:=</path/to/bagfile>`
7. (rosbag play が終了したら別ターミナルで) 2D マップをファイルに保存
   $ `rosrun map_server map_saver -f <map_filename>`

### ナビゲーションの起動

1. $ `roslaunch rois_bringup navigation.launch`  
   末尾に `use_multi_robot:=false` を付けるとロボットの台数が1台になる

### 道案内などのRoISサービスの起動
1. Navigationの起動  
   `roslaunch rois_bringup navigation.launch`
2. 別ターミナルで  
   `python3 test_main_engine_with_service.py` を実行．  
   このファイルは `src/route_guidance_ros/script` 内にある．
