# よく使用するROSコマンド

ここではよく使用するROSコマンドについて紹介しようと思います。

コマンドを入力する時、Tab補完という機能を利用すると簡単に入力できます。 Tabキーを押した時、入力していた文字を補完してくれる機能です。 他に同じ文字の使用している対象がいなければすべて補完し、同じ文字を使用している対象がいれば重複している文字までを補完してくれます。

## 一覧

* [実行コマンド](#zikkou)
  * [roscore](#roscore)
  * [rosrun](#rosrun)
  * [roslaunch](#roslaunch)
* [環境コマンド](#kankyou)
  * [rosdep](#rosdep)
* [通信情報コマンド](#tusin)
  * [rosnode](#rosnode)
  * [rostopic](#rostopic)
  * [rossrv](#rossrv)
  * [rosservice](#rosservice)
  * [rosparam](#rosparam)
  * [rosmsg](#rosmsg)
  * [rosbag](#rosbag)
* [その他コマンド](#sonota)
  * [roscd](#roscd)
  * [rosed](#rosed)

## 実行コマンド  <a href="#zikkou" id="zikkou"></a>

### roscore: ROSで通信するときに使用  <a href="#roscore" id="roscore"></a>

roscoreはROS Master、ROS Parameter Server、rosoutログ用のnodeを立ち上げている。

```
roscore
```

### rosrun: プログラムを実行するときに使用  <a href="#rosrun" id="rosrun"></a>

```
rosrun <パッケージ名> <プログラム名>
rosrun ros_tutorial time_pub.py
```

**注 : roscoreを起動しておく必要がある**

### roslaunch: `roscore`と複数の`rosrun`を同時に実行  <a href="#roslaunch" id="roslaunch"></a>

```
roslaunch <パッケージ名> <launchファイル名>
roslaunch sample_program sample.launch
```

## 環境コマンド  <a href="#kankyou" id="kankyou"></a>

### rosdep: パッケージの依存しているファイルに関する(操作する)コマンド  <a href="#rosdep" id="rosdep"></a>

rosdepを使用する時、一番最初に実行するコマンドで、 rosdepを初期化し、最新のもの更新する。

```
rosdep init
rosdep update
```

パッケージの依存しているファイルを確認するコマンド

```
rosdep check <パッケージ名>
rosdep check raspimouse_sim
```

不足しているファイルをインストールするコマンド

```
rosdep install <ファイル名>
```

## 通信情報コマンド  <a href="#tusin" id="tusin"></a>

### rosnode: ノードに関するコマンド  <a href="#rosnode" id="rosnode"></a>

立ち上がっているノードを確認する。

```
rosnode list
```

### rostopic: トピックに関するコマンド  <a href="#rostopic" id="rostopic"></a>

動いているトピック名一覧を表示する。

```
rostopic list
```

トピックから配信されている値を確認する。

```
rostopic echo /<トピック名>
rostopic echo /lightsensors
```

トピックにデータを送る。

```
rostopic pub /<トピック名>　<メッセージの名前/メッセージの型> "<型の名前>: <データ>"
rostopic pub /UnixTime std_msgs/Float64 "data: 3.0"
```

### rossrv: サービスに関するコマンド1  <a href="#rossrv" id="rossrv"></a>

使用できるサービス全てを表示する。

```
rossrv list
```

サービスの型を確認する。

```
rossrv show ros_tutorial/DateTrigger
```

### rosservice: サービスに関するコマンド2  <a href="#rosservice" id="rosservice"></a>

動いているサービスの一覧を表示する。

```
rosservice list
```

サービスを起動する。

```
rosservice call /<サービス名>
rosservice call /motor_on
```

### rosparam : パラメータに関するコマンド  <a href="#rosparam" id="rosparam"></a>

パラメータを設定できる変数の一覧を表示する。

```
rosparam list
```

変数にパラメータを設定する。

```
rosparam set /<変数名>
rosparam set /lightsensors/frequency
```

### rosmsg: メッセージに関するコマンド  <a href="#rosmsg" id="rosmsg"></a>

メッセージの一覧を表示する。

```
rosmsg list
```

メッセージの型を確認する。

```
rosmsg show <メッセージ名>
rosmsg show std_msgs/int16
```

### rosbag: 現在の状況を記録したり、再現したりするコマンド  <a href="#rosbag" id="rosbag"></a>

動いているトピックを記録する。記録したものをバグファイルと呼ぶ。

記録するトピックは一つ一つ指定できるが、引数`-a`を取ればすべてのトピックを記録できる。

バグファイル名を指定しない場合は、その時の日付と時刻がファイル名になる。

```
rosbag record <トピック名> <トピック名> ... <トピック名>
rosbag record -a
```

バグファイル名を指定する場合は引数に`-O`を取る。バグファイルの拡張子は`.bag`になる。

```
rosbag record -O <バグファイル名> <トピック名> ... <トピック名>
rosbag record -O sample.bag -a
```

記録したバグファイルを再生する。

```
rosbag play <バグファイル名>
```

**注 : roscoreを起動しておく必要がある**

## その他のコマンド  <a href="#sonota" id="sonota"></a>

### roscd: 移動コマンド  <a href="#roscd" id="roscd"></a>

指定したディレクトリまで移動する。

```
roscd <パッケージ名>
roscd ros_torial
```

### rosed: ファイル編集コマンド  <a href="#rosed" id="rosed"></a>

指定したファイルを編集する。

```
rosed <パッケージ名>　<ファイル名>
rosed ros_tutorial time_pub.py
```
