LoginSignup
12
8

More than 5 years have passed since last update.

ROS関連メモ

Last updated at Posted at 2018-04-20

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を読むことができる.

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

gazebo

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

apt upgrade したらコンパイルが通らなくなった.
どうやらprotocolbufferのバージョン不整合らしい.
これを解決するためには,protocolbufferのバージョンを下げるか,gazeboをソースからコンパイルするかどちらかになるので,今回は前者を選んでみた.
方法はgazebo Answersに書かれている一番したの投稿と基本的には同じで,ただもともとインストールされているものは削除しないでやってみても多分大丈夫.

12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8