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