ROS 2シェル芸:URDFを置換してRVizで表示する

はじめに アドベントカレンダーについて この記事はQiitaのROS 2 Advent Calendar 2024の18日目の記事です。 12月1日から12月25日まで毎日ROS 2に関係した記事が投稿されるはずなので、そのほかの記事については下記のリンクからカレンダーをご確認ください。 ROS 2 Advent Calendar 2024 記事の概要 この記事ではURDFを置換してRVizで表示して遊ぶシェル芸を紹介します。 やはりROS 2においてURDFは必要不可欠な要素ではありますが、 イマイチどうやっていじっていいのかよく分からないことも多々あります。 また、無理やりでもいいからURDFを書き換えたいというケースもあるかもしれません。 そこで今回はとりあえずURDFを書き換えてみて、後のことはそれから考えようというコンセプトでやっていきます。 ぜひお付き合いいただけると嬉しいです。 とはいえ本題に入る前に、まずはあらゆる読者を想定してそれぞれのキーワードを簡単に説明しておきます。 ROS 2とは何か ROSはRobot Operating Systemの略称で、ロボットを動かすためのミドルウェアです。 豊富なライブラリやツール、コミュニティなどが備わっていてとても便利だと思います。 詳しくは下記の公式ドキュメントをご覧ください。 ROS 2 Documentation シェル芸とは何か シェルのワンライナーで様々なタスクをこなすことを指します。 詳しい定義や情報については下記のページをご覧ください。 シェル芸のトップページ URDFとは何か URDFはUnified Robot Description Formatの略称で、ロボットの情報を記述するためのXML形式のフォーマットのことです。主にROSで使われています。 URDFのwikiページ 参考資料 下記が参考資料です。 Qiita - ROS コマンドラインツール シェル芸 Qiita - turtlesimの亀をなるべく簡単にたくさん出したい Qiita - シェル芸で遊ぶROS 2 URDFを置換してRVizで表示する それではさっそく始めていこうと思います。 最低限のURDFを作成 まずは下記の内容をコピペしてcube.urdfを作成します。 不完全なURDFかもしれませんが、とりあえずはこれで遊べます。 <robot name="cube"> <link name="cube_link"> <visual> <geometry> <box size="1 1 1"/> </geometry> </visual> </link> </robot> RVizでURDFを表示 作成したcube.urdfをRVizで表示してみます。 robot_state_publisherにcube.urdfを渡すことで、robot_descriptionトピックとtfトピックを配信してくれます。 ...

2024年12月1日 · Yusuke Kato

改訂新版『ROS 2ではじめよう』を読了&メモ書き

はじめに 近藤豊さんの『改訂新版 ROS 2ではじめよう 次世代ロボットプログラミング ロボットアプリケーション開発のための基礎から実践まで』(以下、近藤ROS 2本)が先月(2024年9月)に発売されたのでさっそく読んでみました。 私は大学生時代からROS 1を使い始めて、現在も仕事でROS 2を触っていますが、 いまだにROSに対して苦手意識というか、ROSをあまり深く理解できていないという感覚がありました。 今回は近藤ROS 2本を読むことで曖昧に理解していた知識がしっかり補強された気がして非常に嬉しい限りです。 この記事では近藤ROS 2本を読み進めていく中で気になったことや勉強になったこと、感想などをメモ書き程度で記録しておこうと思います。 書籍情報はこちらです↓ 技術評論社の書籍案内 - 近藤ROS 2本 近藤ROS 2本メモ 各章ごとに気になったことや勉強になったこと、感想などのメモを箇条書きします。 はじめに メッセージ通信の項目でトピックやサービス、アクションと並んでパラメータが紹介されているが、パラメータがメッセージ通信の一つであるという認識がなかった。パラメータの仕組み(挙動)について意識したことがなかったので勉強になる。公式のドキュメントでもどのように説明されているのか改めて確認したい。(vi) → 下記に公式ドキュメントのリンクを記載。 → パラメータにはサービスが利用されているとのこと。(62) 大学生の頃にROS 1を使っていたときは特に気にしていなかったが、たしかにROS 1を製品開発で使用するのは大変そう。ROS 2誕生の経緯も知れて良かった。(vii) MoveIt Studio(ix)、AWS RoboMaker(xii)、Foxglove Studio(xii)なども聞いたことはあるが、他人に話せる程度の知識は持っておきたい。 mROS 2はPC側とマイコン側でノードが直接通信できると紹介されているが、この「直接通信」は何を表しているのか気になる。mROS 2とmicro-ROSの違いも確認したい。(x) → micro-ROSが仲介を必要とすることに対してmROS 2は必要ないとのこと(149) 各章の構成や対象読者の説明が丁寧で勉強になる。(xiv) 公式ドキュメントにおけるパラメータの説明↓ docs.ros.org/en/jazzy/Concepts/Basic/About-Parameters 第1章:ROSの歴史 ros-oコミュニティを初めて知った。(3) ROS 2はROS 1の上位互換というよりも、もっと広く利用されるために新しいROSを作り上げたというイメージらしい。そもそもの開発された目的が違う感じかも。(4) 「1-4 ROS 1とROS 2の違い」が情報がまとまっていてかなり勉強になる。また、それ以降のDDSなどの通信の説明も充実していてありがたい。(5) 第2章:開発環境セットアップ 公式ドキュメントが英語なので、日本語のインストール方法の説明も参考になる。(21) 第3章:ROS 2の基本機能 ノード発見デーモンはいつか必要になるかもしれないので覚えておきたい。(31) colcon mixinはたまに見かけるが、よく分かっていなかったので勉強になった。(33) Pub/Subの通信を日本語でどう表現するかはやはり悩みどころ。「送信受信」、「出版購読」、「配信」も使ったりする。(35) プロセス間通信とプロセス内通信は理解できたが、それぞれの使い分け(使いどころ)が気になる。プロセス間通信のほうが汎用性は高いが、プロセス内通信のほうがパフォーマンスは高いみたいな感じだろうか。(41) 「3-4-3 コンピュータ間通信」でROS_DOMAIN_IDの説明がなかったが、ROS_STATIC_PEERSのほうが安全ということだろうか。要確認。(45) サービスは基本的に非同期通信で、疑似的に同期通信も可能にしているとのこと。なるほど。(46) アクションはフィードバックを受け取れることに加えて、途中で中断できることも特徴の一つとのこと。たしかに。(52) パラメータは設定と取得がサービスで行われるとのこと。各ノードにパラメータサーバが用意される。ノードの実行中にパラメータが書き換わるとコールバック関数が呼び出されるということも設定できる。(62) 第4章:ROS 2の応用機能 コンポーネントやライフサイクル、QoSあたりは重要であることは分かりつつも何となくの曖昧な理解のままだったので、情報がまとまっていて勉強になった。とはいえ、まだ理解し切れていない部分もあるのでまた読み返したい。(69) 現状ROS 2を使う上でセキュリティを気にする場面は少なかったが、認証やアクセス制限の機能などがROS 2に備わっているということで勉強になった。(103) 第5章:Pythonクライアントライブラリrclpy Pythonでトピック、サービス、アクションを扱う内容が簡潔にまとめられていて参考になる。(111) 第6章:ROS 2に対応したツール / パッケージ ROS 1からROS 2への移植時に中身が刷新されたツールやパッケージが多いとのこと。(本章を通して) rosbagはROS 2 Jazzyからトピックだけでなくサービスの記録にも対応したとのこと。凄い!(128) MoveItは移動ロボットへの対応も進んでいるとのこと。凄い!(135) 第7章:ROS 2エコシステム ROSBoard便利そう。(148) AutowareやIsaac ROSも触りたい気持ちは常にある。(151) 第8章:実践ROS 2ロボットプログラミング PCLはあまり使ったことがないので触ってみたい。(164) おわりに 事前アンケートで「リアルタイム制御」が一番人気なのはたしかに意外だった。あと「セキュリティ」があまり人気がないのも意外だった。(187) 本を作り上げる大変さが伝わってくる(勉強になりました。ありがとうございます)。(おわりにを通して) 付録 Windowsで動かしたい人も多そう。Dockerやrockerの説明もあって充実している。(付録を通して) おわりに 近藤ROS 2本を読み終えました。 もちろん全ての知識を自分の中に取り込めたわけではありませんが、 明らかに私のROS 2に対する気持ちは前向きになったと思います。 ROS 2の全体像や輪郭を掴めた感じがあります。 これからはROS 2を曖昧な理解のまま使うのではなく、 他人に説明できるくらい理解しながら使いこなせたら嬉しいなと思っています。 近藤ROS 2本、とても良い本でした。 おすすめです。 それでは、また。

2024年10月10日 · Yusuke Kato

ROS 2 Jazzy公式チュートリアル02: ROS 2のノードとトピックについて

はじめに はじめに ROS 2 Jazzyの公式ドキュメントに沿ってチュートリアルを進めています。 今回はROS 2のノードとトピックを紹介します。 公式ドキュメントは下記のリンクからアクセスできます。 ROS 2 Jazzy公式チュートリアル 前回の記事 2024年9月26日の記事です。 ROS 2 Jazzy公式チュートリアル01: ROS 2 Jazzyのインストールから動作確認まで 用意するもの Ubuntu 24.04 LTSがインストールされたPC ROS 2 Jazzyインストール済み ROS 2の基本 ROS 2ではノードごとにそれぞれ動作しており、ノード同士がデータを送受信できます。 各ノード間の通信方法はTopic、Service、Actionの3つがあります。 トピックはPublisherからSubscriberへデータを垂れ流しする通信、 サービスとアクションはクライアントがサーバへリクエストを送ると、 サーバがクライアントへ処理結果のデータを返す通信です。 公式ドキュメントより画像を引用↓ ノードと通信 ros2 pkgコマンド ros2 pkgコマンドを使うとパッケージ情報を確認できます。 たとえば下記のようにコマンドを実行するとturtlesimパッケージの実行ファイルの一覧が確認できます。 ros2 pkg executables turtlesim 出力内容↓ turtlesim draw_square turtlesim mimic turtlesim turtle_teleop_key turtlesim turtlesim_node 今回はturtlesim_nodeとturtle_teleop_keyを実行します。 turtlesimを起動 前回と同様にturtlesimを起動します。 1つ目のターミナルで実行↓ ros2 run turtlesim turtlesim_node キーボード入力で亀を操作するノードも起動します。 2つ目のターミナルで実行↓ ros2 run turtlesim turtle_teleop_key ros2 nodeコマンド ros2 nodeコマンドを使うとノードの情報を確認できます。 たとえば下記のようにコマンドを実行すると起動しているノードの一覧を確認できます。 ...

2024年9月27日 · Yusuke Kato

ROS 2 Jazzy公式チュートリアル01: ROS 2 Jazzyのインストールから動作確認まで

はじめに はじめに ROS 2 Jazzyの公式ドキュメントに沿ってインストール作業からturtlesimの動作確認まで行います。 開発環境としてUbuntu 24.04 LTSがインストールされたPCを用意しています。 公式ドキュメントは下記のリンクからアクセスできます。 ROS 2 Jazzy公式チュートリアル 過去の記事 ROS 2 Humbleの記事は下記のリンクからアクセスできます。 ROS 2 Humble公式チュートリアル 01: 環境構築からturtlesim まで 用意するもの Ubuntu 24.04 LTSがインストールされたPC ROS 2 Jazzyのインストール まずはROS 2 Jazzyをインストールします。 有志の方(Tiryohさん)のインストールスクリプトを使うと簡単にインストールできるので、 ありがたく使用させていただきます。 インストールスクリプトをダウンロード(clone)します。 sudo apt install git git clone https://github.com/Tiryoh/ros2_setup_scripts_ubuntu.git インストールスクリプトを実行します。 cd ros2_setup_scripts_ubuntu ./ros2-jazzy-desktop-main.sh インストールが完了したらsourceコマンドでROS 2 Jazzyの設定を読み込みます。 この設定を読み込む作業はターミナルを起動するたびに必要となります。 source /opt/ros/jazzy/setup.bash 下記のように~/.bashrcに書き込んでおくと毎回sourceコマンドを実行しなくて済むのkで便利です。 echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc 次のコマンドで環境変数を確認するとROS 2 Jazzyがインストールされたことを確認できます。 printenv | grep -i ROS 環境変数抜粋↓ ROS_VERSION=2 ROS_DISTRO=jazzy 以上でインストールは完了です。 turtlesimで動作確認 ROS 2 Jazzyの動作確認を行います。 動作確認には定番のパッケージであるturtlesimを使用します。 turtlesimはROS 2を学ぶための2Dの簡易的なシミュレータです。 ...

2024年9月26日 · Yusuke Kato

ROS 2 Humble 公式チュートリアル 02: ROS 2 のノード関係のコマンド

はじめに ROS 2 Humbleの公式チュートリアルに従って勉強中です。 今回はROS 2のノードに関係するコマンドたちをまとめていこうと思います。 公式チュートリアルは下記のリンクからアクセスできます。 ROS 2 Humble 公式チュートリアル 前回の記事は下記のリンクからアクセスできます。 ROS 2 Humble公式チュートリアル 01: 環境構築からturtlesim まで 用意するもの Ubuntu 22.04 LTS ROS 2 Humble ノードの起動 パッケージ内の実行ファイルは下記のコマンドのように実行できます。 ros2 run package_name executable_name 例↓ ros2 run turtlesim turtlesim_node ノードの一覧 起動しているノードの一覧は下記のコマンドで出力できます。 ros2 node list ノードの情報 ノードの情報は下記のコマンドで出力できます。 ros2 node info node_name 例↓ ros2 node info /turtlesim おわりに ROS 2のノードに関係するコマンドについてまとめました。 この3つのコマンドを覚えておけばノードに関しては困らないと思います(ホントに?)。 それではまた次回もよろしくお願いします。

2023年9月13日 · Yusuke Kato

ROS 2 Humble 公式チュートリアル 01: 環境構築から turtlesim まで

はじめに ROS 2 Humbleの公式チュートリアルに従って勉強中です。 誰かの役に立つかは分かりませんが、 チュートリアルの手順や困ったポイントのメモをブログに残しておこうと思います。 チュートリアルは英語なので、日本語の情報が増えるのは良いことかもしれません。 ROS 2 Humble公式チュートリアル 用意するもの Ubuntu 22.04 LTS がインストールされたPC WindowsとUbuntuのデュアルブート方法は下記のページをご覧ください。 WindowsとUbuntuのデュアルブート ROS 2 Humbleのインストール Ubuntu 22.04 LTSにROS 2 Humbleをインストールします。 ありがたいことにROS 2 Humbleを簡単にインストールできるBashスクリプトがあります。 下記のGitHubリポジトリをcloneして使用させていただきましょう。 ros2_setup_scripts_ubuntu 下記のようにコマンドを実行すればインストールできます。 git clone https://github.com/Tiryoh/ros2_setup_scripts_ubuntu.git cd ros2_setup_scripts_ubuntu ./ros2_humble_desktop_main.sh インストールが完了したら下記のコマンドを実行してsetupファイルを読み込んでおきましょう (このコマンドは端末を起動するたびに実行する必要があります。~/.bashrcに書いてあれば不要です。) source /opt/ros/humble/setup.bash turtlesim のインストール 下記のコマンドを実行してturtlesimパッケージをインストールします。 sudo apt update sudo apt upgrade sudo apt install ros-humble-turtlesim 下記のようにros2のサブコマンドpkgを実行するとturtlesimパッケージの情報が表示されます。 ros2 pkg executables turtlesim 出力内容↓(turtlesim パッケージの実行ファイル一覧) turtlesim draw_square turtlesim mimic turtlesim turtle_teleop_key turtlesim turtlesim_node turtlesim のノードを起動 それでは準備が整ったので下記のコマンドでノードを起動します。 ros2 run turtlesim turtlesim_node 下図のように青い背景に亀が配置されたウィンドウが表示されたら成功です。 ...

2023年9月10日 · Yusuke Kato