りさーちゃーのひよこ
技術のこととか
2016年4月19日火曜日
3D点群マッチングがレジストレーションと呼ばれる理由
#はじめに 点群マッチングがレジストレーション(登録)と呼ばれる事になんとなく違和感を感じていて気になっていた. #registration の意味を検索 goo辞書が一番分かり易かったです. - registration http://dictionary.goo.ne.jp/ej/70273/meaning/m0u/ > 8 〔音楽〕 > (1)レジストレーション:パイプオルガンの音栓の選択・調整;その技術. > (2)(ある楽曲に合った)音栓の選択. > 9 〔印刷〕 =register 8. - register http://dictionary.goo.ne.jp/ej/70265/meaning/m0u/#RH145676000#NN0800 > 8 〔印刷〕 > (1)(ページの表裏の行・欄などが)正確に合っていること. > (2)(多色刷りの)正確な重ね合わせ,見当マーク(俗称トンボ)(register mark)を合わせること 多色刷りをする際に重ね合わせを正確にする必要があり、マーカを使って位置合わせをするとか。このマーカを通称トンボ(register mark)と呼び、これを合わせる事をトンボ合わせ(registration)と呼ぶらしい。 それを点群処理に当てはめたというところだろうか。 #具体例 suprintさんという印刷会社に分かりやすい例がありました. http://www.suprint.jp/guide/technical/datacaution/da003.html  あ,これね.pdfの原稿とかに付いているあのカギカッコみたいなやつ.これがトンボだったわけである. #おわりに だから何だという話であるw まぁ,メモということで.
2016年2月11日木曜日
Gazebo から ROS のプラグインを呼ぶ処理の仕組みについて書いてみた
# はじめに 標記のまとめ`Qiita`に投稿しました. きっかけは,[Controller と HardwareInterface との間の処理の仕組みについて書いてみた](http://morimoridiary254.blogspot.jp/2016/01/controller-hardwareinterface.html) という記事でまとめた時に,こんな疑問が出たことです. - `gazebo`から`ROS`のプラグインってどうやって呼んでいるんだろう? そんなことを気にせずツールとして使ってしまえばいいし,そんなことを必要としている人などおらず,まとめたサイトも当然無いわけで. そもそも,そこまでの知識必要とする人たちとなるとメンテナの領域で,まとめなど不要なのです. そこに来て,私のようにスキルは中途半端なくせに,中身は知りたい人間にとっては,その仕組みが分かるようになる文書をまとめておきたいのです. 誰得?的なニッチな世界を突き進んでおります笑.まぁ,誰かの目に止まって,少しでも知見の共有になればと思います. #目次 ROS - Gazebo から ROS のプラグインを呼ぶ処理の仕組み 1. [Gazebo起動時のSystemPluginの読込み](http://qiita.com/MoriKen/items/2ed9c887dd078e69cc23) 2. [ロボットモデル登録時のModelPluginの読込み](http://qiita.com/MoriKen/items/86289224696756388df4)
2016年1月26日火曜日
Controller と HardwareInterface との間の処理の仕組みについて書いてみた
#主題 標記のとおりです.リンクはこちらです. ROS - Controller と HardwareInterface との間の処理の仕組み 1. [ロボットモデルの定義と登録](http://qiita.com/MoriKen/items/613635b90f3a98042dc5) 2. [RobotHWSimのプラグインについて](http://qiita.com/MoriKen/items/5cab7436c1b36c25e0ce) 3. [Controllerについて](http://qiita.com/MoriKen/items/c29f653d03baffe5f0e2) #その他 技術関連の情報は,今後[`Qiita`](http://qiita.com/MoriKen)に投稿し,ここからはリンクだけ貼るスタイルをとります. 編集GUIが優れており,他の技術者との情報交換もしやすそうだからです. 技術とは関係ない内容や,技術と絡んだとしても主観的な内容を扱う場合は,こちらに投稿します.
2016年1月9日土曜日
robot_state_publisher の仕組み
#はじめに よく分からずに`robot_state_publisher`を使っていたのですが、どう動いているのちょっと気になったので備忘録です。 # 概要 `robot_state_publisher`ノードは、稼働ジョイントの現在角度を表す`/joint_states`トピックをsubscribeし、その状態を反映させた`TF`フレームをpublishする役割を持ちます。 # 参考文献 - [ROS Wiki](http://wiki.ros.org/robot_state_publisher) - [Learning ROS for Robotics Programming: A Practical, Instructive, and Comprehensive Guide to Introduce Yourself to Ros, the Top-notch, Leading Robotics Framework](http://www.amazon.co.jp/Learning-ROS-Robotics-Programming-Comprehensive/dp/1782161449) # `joint_state_publisher`ノードを利用した場合 - `rqt_graph`を見てみます。ほうほう、確かに`robot_state_publisher`は`joint_states`トピックをsubscribeしています。 <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHXMj7bosBz7w-X0d13lh30xIeVxT4vRJ66zLyN1H4UXkGbFQODCPWLYTd1Jrp1GgAcpIJk7KDNfgCuyoJeJLaayFVVr7P7WncHpgP7Bvubmb1Vmm_Xed7BxMaO6YGPubd2mapisAAjvs9/s1600/rqt_joint_state_publisher.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" width="50%" height="50%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHXMj7bosBz7w-X0d13lh30xIeVxT4vRJ66zLyN1H4UXkGbFQODCPWLYTd1Jrp1GgAcpIJk7KDNfgCuyoJeJLaayFVVr7P7WncHpgP7Bvubmb1Vmm_Xed7BxMaO6YGPubd2mapisAAjvs9/s1600/rqt_joint_state_publisher.png" /></a> - その先も見てみます。`robot_state_publisher`が`/tf`をpublishし、`rviz`がsubscribeしている様子が分かります。 <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7vZ0a1MCK1rI0yofQTPAUq8JwscZ3Gs3rEgadnknDrHQoMeitoDjiXVzqIMeqON5ZOIRVtYW6dAMJA6tE7Fhzf64NZX7yZoSGRPgPRGkcihZUigAmBePUJ5f77vISWoVKbNCj8JR8-yzO/s1600/rqt_joint_state_publisher_rviz.png" imageanchor="1" ><img border="0" width="50%" height="50%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7vZ0a1MCK1rI0yofQTPAUq8JwscZ3Gs3rEgadnknDrHQoMeitoDjiXVzqIMeqON5ZOIRVtYW6dAMJA6tE7Fhzf64NZX7yZoSGRPgPRGkcihZUigAmBePUJ5f77vISWoVKbNCj8JR8-yzO/s1600/rqt_joint_state_publisher_rviz.png" /></a> - `joint_state_publisher`は、`/robot_description`パラメータを機械的に解読し、稼働可能な`joint`一覧を表示します。ユーザはこれをグリグリいじって稼働可能なジョイント角度を自由に設定できます。 - ユーザが入力した値に従って`/joint_states`トピックをpublishします。内部的には、下記のように`/joint_states`がpublishされます。 - ジョイントが4つ(joint1~joint4)まである場合のコードのイメージ。あくまでイメージ。 <pre class="brush: cpp;"> #include <ros/ros.h> #include <sensor_msgs/JointState.h> int main() { ~省略~ ros::Publisher joint_pub = n.advertise<sensor_msgs::JointState>("joint_states", 1); sensor_msgs::JointState joint_state; ~省略~ ユーザ入力時のコールバック { //update joint_state joint_state.header.stamp = ros::Time::now(); //稼働ジョイント数分領域確保 joint_state.name.resize(ジョイント数); joint_state.position.resize(ジョイント数); //稼働ジョイント現在角度設定。ユーザ入力に合わせてフレームIDと回転角度[rad]入力。 joint_state.name[0] ="joint1"; joint_state.position[0] = hoge0; // joint1フレームの回転角度 // joint_state.name[1] ="joint2"; joint_state.position[1] = hoge1; // joint2フレームの回転角度 // joint_state.name[2] ="joint3"; joint_state.position[2] = hoge2; // joint3フレームの回転角度 // joint_state.name[3] ="joint4"; joint_state.position[3] = hoge3; // joint4フレームの回転角度 // 以下、ジョイント数分続く。固定フレームの場合、positonは0となる。 joint_pub.publish(joint_state); } } </pre> - あとは、`robot_state_publisher`が良きに計らって`TF`フレームを発行してくれます。 # `gazebo`を利用した場合 - `rqt_graph`を見てみます。 <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE1O-C0_NiconmPGTYPMdyzTcxhY0tVkywYKAoWAiWKCwGIR2ufc9pigxxpMs_ovxG537w4SlhwdZIAd8GQavT7KL2I6UW1HIPqwhWnXjvIvOro43Bc9lNSjRW31rFYJsWjMtWR99roQY_/s1600/rqt_gazebo.png" imageanchor="1" ><img border="0" width="50%" height="50%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE1O-C0_NiconmPGTYPMdyzTcxhY0tVkywYKAoWAiWKCwGIR2ufc9pigxxpMs_ovxG537w4SlhwdZIAd8GQavT7KL2I6UW1HIPqwhWnXjvIvOro43Bc9lNSjRW31rFYJsWjMtWR99roQY_/s1600/rqt_gazebo.png" /></a> - その先も見てみます。先ほどと同様、`robot_state_publisher`が`/tf`をpublishし、`rviz`がsubscribeしている様子が分かります。 <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggtS7wggC42gzjFM_rJq5OBW9kNmWzPB0XmL49hDms5zoY5S_oplq4l8R5feXqDu3BmDMYwwshK3N2WS6iJB-tcmBAnfTSNk-2vydGnjFsqH0iIVzURIPakV7oAFpnxdTYATiXk-x9Ghso/s1600/rqt_gazebo_rviz.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggtS7wggC42gzjFM_rJq5OBW9kNmWzPB0XmL49hDms5zoY5S_oplq4l8R5feXqDu3BmDMYwwshK3N2WS6iJB-tcmBAnfTSNk-2vydGnjFsqH0iIVzURIPakV7oAFpnxdTYATiXk-x9Ghso/s1600/rqt_gazebo_rviz.png" /></a> - 大事なことは、`gazebo`が直接`/tf`をpublishしていないという点です。 - これは、ロボットのジョイントに関する情報が`/joint_states`トピックに集約されていることを示しています。 - `gazebo`は`/robot_description`パラメータを機械的に解読しジョイントを割り出します。 - その中で、ユーザが明示的に指定した稼働ジョイントについて、`gazebo`内で回転角度等全部計算した上で、`/joint_states`トピックをpublishしてくれます。 - なお、`joint_state_publisher`の起動は不要です。 - 内部的には、下記のように`/joint_states`がpublishされているはずです。 - ジョイントが4つ(joint1~joint4)まである場合のコードのイメージ。あくまでイメージ。 <pre class="brush: cpp;"> #include <ros/ros.h> #include <sensor_msgs/JointState.h> int main() { ~省略~ ros::Publisher joint_pub = n.advertise<sensor_msgs::JointState>("joint_states", 1); sensor_msgs::JointState joint_state; ~省略~ while (ros::ok()) { //update joint_state joint_state.header.stamp = ros::Time::now(); //稼働ジョイント数分領域確保 joint_state.name.resize(ジョイント数); joint_state.position.resize(ジョイント数); //稼働ジョイント現在角度設定。フレームIDと回転角度[rad]入力。 joint_state.name[0] ="joint1"; joint_state.position[0] = hoge0; // joint1フレームの回転角度 // joint_state.name[1] ="joint2"; joint_state.position[1] = hoge1; // joint2フレームの回転角度 // joint_state.name[2] ="joint3"; joint_state.position[2] = hoge2; // joint3フレームの回転角度 // joint_state.name[3] ="joint4"; joint_state.position[3] = hoge3; // joint4フレームの回転角度 // 以下、ジョイント数分続く。固定フレームの場合、positonは0となる。 // gazebo内部の回転角度やオドメトリ計算。ジョイントの角度(hoge0 ~ hoge3)も更新。 ~省略~ joint_pub.publish(joint_state); } } </pre> # 終わりに こんなのでよいのでしょうかね。無知よりはましになったかなと思います。
2016年1月6日水曜日
Bloggerに引越して来ました
#はじめに 利便性を考慮し,アメブロ時代の`りさーちゃーのたまご`から引っ越して,ブログ名を`りさーちゃーのひよこ`に改めます. 博士課程に進学したから(?),`たまご`から`ひよこ`への昇進(?)です.ひよっこであることに代わりはありません. #なんでBlogger? ## 決定打 - アメブロが吐くMobableTypeのtextから移行すると楽 - Googleアカウントもっているから始めるの楽 - Simple is Best! 結局楽なのを選んだ. ## 惜しい点 - Markdown 編集が間接的になる - スタイリッシュさに欠ける tumblr辺りでかっちょよくとも思ったけど,前の記事が引き継ぎが大変そうだなー,と思ってBloggerに逃げた. まぁ,間接的でもMarkdown使えるんでいいっす. #手順 アメブロから直はできません.ちょっとめんどいです. ##アメブロ→FC2ブログに移行 <a href="http://diwao.com/ds-labo/2011/02/ameba-to-fc2.html">diwao日記 - アメブロから引っ越ししようとしたら思いの外大変だった</a><br /> このお引越しがよく出来ている. インポートすると,画像もFC2側のサーバに上げてくれて,リンク貼り直しまでしてくれる. ##FC2ブログでMovableType形式のtxtファイルを出力 <a href="https://woresite.jp/2007/02/10/180406.html">ヨレサイト-FC2ブログをエクスポートしてMovableTypeに引っ越す方法</a><br /> 今だとUTF-8で出力されるようで,余計な変換はいらないっぽい.多分. ##MovableType形式のtxtファイルを,Bloggerのxmlファイルに変換 <a href="http://syasuda.com/t/tools.html">syasudaのツール</a><br /> これ探すの大変だった.<br /><br /> <a href="http://s.jkunblog.com/article/151572274.html">JKun Blog - Bloggerブログのxmlファイルに関する形式変換方法</a><br /> を見ながら,googleのコンバータ使ったりもしたんだが,何故か日付のフォーマットが合ってなかったりして泣きそうだった時にsyasudaさんのツールを見つけました. 感謝. ##Bloggerでxmlファイルをインポート <a href="https://support.google.com/blogger/answer/41387?hl=ja">Googleヘルプ</a><br /> 画像のリンクはFC2のまま.もう疲れたのでこれでいいw ##Blogger側の調整 上記だけだと微妙に合わないところがある. 日付とか,記事にタイトルにコメントタイトルが入ってきちゃったり... その辺気になるところを修正. あと,やらなくてもいいのだけど,Markdownで書き直したり(<a href="http://qiita.com/her0m31/items/1804bdc251a647e0e9a8">BloggerでMarkdown書けるようにした。</a>), プログラムコードはハイライトさせたり(<a href="http://p--q.blogspot.jp/2013/05/bloggersyntaxhighlighter1.html">P--Q - Blogger:SyntaxHighlighter(1)ブログにソースコードを綺麗に表示させる</a>)して 遊んでみた.結構疲れたけど,楽しかった. Markdownエディタはこいつがいい感じ<br /> →<a href="http://qiita.com/shohei909/items/f33a6cace1c83bf36c8a">Windows, Mac, Linuxで使えるMarkdownエディタ、HarooPadを使う</a> #おわりに というわけで,無事引越ししました. 調整の際に昔のブログ眺めたりして,なかなかおもしろかった.留学した時とか,震災の時とか.当時こんなこと感じたんだなーとか. とまぁそんなわけで(?),また気分がのったときにちょいちょい書いておこうかと思います.
新しい投稿
前の投稿
ホーム
登録:
投稿 (Atom)