meta data for this page
  •  

# ROS関連メモ

ROSは巨大なので,ちょいちょい情報を見失ったり,フォーラムで言及されているだけだったりすることがあるので,ここに困ったときのメモを残します. 適宜困ったことがある度に追記します.

# ROSのお約束

## ROSで使う単位系

http://www.ros.org/reps/rep-0103.html

# catkin_make

## 指定したパッケージだけビルド

``` catkin_make –pkg パッケージ名 ``` ディレクトリ名じゃなくてパッケージ名なので注意.

## ビルドに使うスレッド数の設定

``` catkin_make -j1 ```

catkin_makeに```-j```オプションを渡すと,makeにまで浸透する. 通常では,勝手にCPU数と同じだけのスレッド数が指定されるので,同時ビルドになりメモリ使用量が多くなりがち.

## 最適化オプション

``` catkin_make -DCMAKE_CXX_FLAGS=-O0 ```

# rosparam

## rosrunのオプション rosrunするときにオプションで配列のパラメータを渡すときの挙動がcppとpythonで違うらしい.

[https://answers.ros.org/question/58838/how-to-assign-array-to-a-parameter-with-rosrun/](https://answers.ros.org/question/58838/how-to-assign-array-to-a-parameter-with-rosrun/)

cppだとダメみたい. 自分の環境でもだめだった.

# topic

## publish の latch 機能

時々,「一度だけTopicをpublishできればいい」ということがあるのですが,そういう時はpublisherを定義するときにadvertiseのlatchをtrueにする. latch引数はデフォルト引数でfalseになってるので,普通の使い方になれていると存在を忘れがち.

これをfalseのままにしておくと,publishしたtopicが読めないことが多い. trueにすると,最後にpublishしたtopicを保持(latch)してくれるので,publishしたあとに別のノードを起動して,subscriveし始めてもtopicを読むことができる.

参考 : [http://docs.ros.org/jade/api/roscpp/html/classros_1_1NodeHandle.html#a6b655c04f32c4c967d49799ff9312ac6](http://docs.ros.org/jade/api/roscpp/html/classros_1_1NodeHandle.html#a6b655c04f32c4c967d49799ff9312ac6)

# gazebo

## kinetic でコンパイルが通らなくなった

apt upgrade したらコンパイルが通らなくなった. どうやらprotocolbufferのバージョン不整合らしい. これを解決するためには,protocolbufferのバージョンを下げるか,gazeboをソースからコンパイルするかどちらかになるので,今回は前者を選んでみた. 方法は[gazebo Answers](http://answers.gazebosim.org/question/18096/this-file-was-generated-by-an-older-version-of-protoc/)に書かれている一番したの投稿と基本的には同じで,ただもともとインストールされているものは削除しないでやってみても多分大丈夫.