ROS関連メモ
ROSは巨大なので,ちょいちょい情報を見失ったり,フォーラムで言及されているだけだったりすることがあるので,ここに困ったときのメモを残します.
適宜困ったことがある度に追記します.
ROSのお約束
ROSで使う単位系
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/
cppだとダメみたい.
自分の環境でもだめだった.
topic
publish の latch 機能
時々,「一度だけTopicをpublishできればいい」ということがあるのですが,そういう時はpublisherを定義するときにadvertiseのlatchをtrueにする.
latch引数はデフォルト引数でfalseになってるので,普通の使い方になれていると存在を忘れがち.
これをfalseのままにしておくと,publishしたtopicが読めないことが多い.
trueにすると,最後にpublishしたtopicを保持(latch)してくれるので,publishしたあとに別のノードを起動して,subscriveし始めてもtopicを読むことができる.
gazebo
kinetic でコンパイルが通らなくなった
apt upgrade したらコンパイルが通らなくなった.
どうやらprotocolbufferのバージョン不整合らしい.
これを解決するためには,protocolbufferのバージョンを下げるか,gazeboをソースからコンパイルするかどちらかになるので,今回は前者を選んでみた.
方法はgazebo Answersに書かれている一番したの投稿と基本的には同じで,ただもともとインストールされているものは削除しないでやってみても多分大丈夫.