うごくものづくりのために

技術的な備忘録がメインです。

ROS

一つのコールバック関数に複数のSubscriberを割り当てる方法

ROS

タイトルの通りです。 別々のTopicをSubscribeしている複数のSubscriberで、同じコールバック関数を呼び出す方法です。 準備 rostopic pub -r 10 chatter_0 std_msgs/String "message of chatter 0" & rostopic pub -r 15 chatter_1 std_msgs/String "messag…

navigationスタックで学ぶpluginlibの使い方

navigationスタックはpluginlibによる実装がなされていて、拡張しようと思ったらpluginlibの知識が必要ということなので、勉強しています。 今回は、navigationスタックのソースを追っかけていきながら、pluginlibの基本的な使い方について解説します。 自分…

costmap_2dの障害物情報のクリアについて

勘違いしてました。 costmap_2d/hydro/obstacles - ROS Wiki costmap_2dは、センサ情報としてPointCloudまたはLaserScan型のメッセージを受け取ります。 RoboCup SSLでは、フィールド上部のカメラからロボット及びボールの絶対座標が常に取得できるので、 そ…

C++でのROSのノード開発メモ

ROS

Catkin設定方法 How to do common tasks — catkin 0.6.15 documentation ソースファイルの追加 CMakelist.txtの、add_executable()にファイル名を追加する add_executable(node_name src/filename1.cpp src/filename2.cpp) node_nameの部分は、このファイル…

状態機械を作る"Smach"パッケージの使い方(1)

ロボットに限らずですが、状態機械を用いることで、様々なタスクの遷移をスマートに表現することができます。 ROSの"Smach"パッケージを使えば、状態機械をPythonスクリプトによって比較的簡単に実現できます。 ja/smach - ROS Wiki Smachのチュートリアルペ…

navigationスタックを理解できそう

やっとぼんやりながら正体が掴めつつあるので、メモを随時残していきます 2016/10/11 追記 座標系のところに、REP 105(座標系についてまとめたROSの文章)の一部翻訳を乗せました。(正確ではない可能せがあります) wikiのこれ(下画像)の階層構造 だいたい…

rosserial を用いてROSとArduinoの間の通信を行う

ROS

久方ぶりの記事です。 今回はタイトル通り、rosserialを用いてROSとArduinoを接続します。 ついでに、カスタムメッセージを用いた通信についても解説します。 rosserialとは ja/rosserial - ROS Wiki rosserialは、シリアル通信を用いて、ROSと組み込みボー…

Navigationスタックを使う (1) - 障害物情報のセット

Navigationスタックは、ロボットの移動制御を行うための大規模なスタックです。 このスタックに、目標地点、障害物、マップ、オドメトリの情報をそれぞれ与えると、それらを統合して、台車の速度指令を出力してくれます。 内部的には、グリッドセルに区切っ…

tfは遅い?

現在、grSimとROSの結合作業をしています。 とりあえず、grSimからマルチキャストで送信される各ロボットの座標を、tfでブロードキャストしようと思ったのですが、問題発生。 おおよそ60Hzで座標データが飛んでくるので、その周期に合わせてブロードキャスト…

座標変換パッケージ "tf"の使い方

ROSの座標変換ライブラリ、tfについて勉強しています。ひとまずtutorial(Python)をひと通り終えました。 ja/tf/Tutorials - ROS Wiki 今までのところでわかったことを記述しておきます。 tfでは、様々な座標軸を定義することで、定義された座標軸から見た別…

座標変換パッケージ "tf"のお勉強

僕がROSを使おうと思った理由の一つに、このパッケージの存在があります。 詳しい使い方はまだわかりませんが、とにかく「あの」面倒くさい座標変換が楽チンにできるそうです。 これからサッカーロボットを開発する予定なんですが、サッカーロボットも座標変…

ROSのインストール

ROS

これからロボット開発を行うにあたって用いる、ROS(Robot Operating System)のインストールを行います。 ROSについては、詳しくはググってください。とりあえず、ロボットのソフトウェアを簡単かつ確実に作るためのミドルウェアです。 ROSには様々なディスト…