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/)に書かれている一番したの投稿と基本的には同じで,ただもともとインストールされているものは削除しないでやってみても多分大丈夫.