C++にはクラスという概念が導入されているため、周辺機能をクラスにまとめてみました。ほかのクラスから、同じインスタンスにアクセスをする方法として、クラスそれぞれに静的なインスタンスをもち、静的な関数からインスタンスを受け取るということを行いました。やり方として正しいかどうかはわからないので何とも言えませんが、ソフトが動いているのでこのまま進めていきたいと考えています。ステップ周波数への計算の仕方は、マイクロマウスではじめようロボットプログラミング入門を参考にしました。この本をよめばわかるので、計算式は割愛します。台形加速は下の画像のようにできました!次回やることc++の<thread>を使用して割り込み処理で制御の処理やセンサの値の取得を行えるようにしていきたいです!いつになったらマウスがまっすぐ動くのでしょうか?走るまでの道のりが長いです・・・。satoこんにちは!satoです。ROSのサンプルを動かして移動台車のロボットをシミュレーションしてみました。Mouseのシミュレータについての簡単な説明とともにその使い方を軽く説明していきます。ここで紹介する内容は2019年10月6日の時点での情報です。その後のアップデートにより内容が変わる可能性があります。Mouseのシミュレータです。こちらに導入方法と使用方法をまとめています。https://github.com/rt-net/raspimouse_sim/wiki開発の記録はこの記事にまとめています。Mouseを動かしてみます。ros_ign_gazebo_raspimouseのインストールros_ign_gazebo_raspimouseをダウンロードします。ファイルを一部変更する必要があるので今の段階ではまだビルドはしません。Mouseに置き換えたSDFを作成してworldディレクトリに保存しています。https://github.com/Tiryoh/ros_ign_gazebo_raspimouse/blob/master/worlds/raspimouse_on_world.sdfサンプルの簡単なSDFは以下に公開されています。https://bitbucket.org/ignitionrobotics/ign-gazebo/src/default/examples/worlds/例えば、tunnel.sdfを起動すると以下のようなモデルが起動します。Fuelに公開されているモデルデータを指定していることを確認できます。Fuelに公開してSDFから呼び出すのが良いようです。手軽に試したいのでローカルに保存したまま呼び出すことにします。Toolsでダウンロードして$HOME/.ignition/fuelにダウンロードすることができるようです。SDFが保存されている場所からの相対パスでvisual用のメッシュデータをuriで指定し、呼び出せれば簡単なのですが、現在プルリクエストが出されていてマージ待ちのようです。https://bitbucket.org/ignitionrobotics/ign-gazebo/pull-requests/433/handle-relative-uris/diffそこで今回はメッシュデータへのファイルパスをフルで指定します。ファイルパスを書き換えるために以下のスクリプトを実行します。configure_modelsを呼び出しています。モデルデータの書き換えができたらビルドします。Mouseを起動してみましょう。以下のコマンドで呼び出します。このようにかなり高くロボットを見下ろす位置からスタートします。スタート位置を調整する方法は今の所なさそうなようでした。この状態で別のターミナルから以下のコマンドを実行するとロボットが3秒間走行して停止する様子が確認できます。ROSのサンプルを動かして移動台車のロボットをシミュレーションしました。Mouseを起動してみました。MouseはROS2にも対応しているロボットなのでシミュレーション環境についても開発を進めていきます。更新履歴2019年10月23日osrf/ros1_ignがosrf/ros_ignにリネームされていたため、コマンドを更新しました。satoこんにちは!satoです。ROSのシミュレーションの次世代」というタイトルでGazeboとIgnitionについての紹介がありました。紹介されていたIgnitionでROSと組み合わせてサンプルを動かしてみましたので、Ignitionについての簡単な説明とともにその使い方を軽く説明していきます。Louiseさんの基調講演が始まりした。ROSCon本家でお馴染みのGazeboを使ったライブスライドです。2019なお、ここで紹介する内容は2019年9月26日の時点での情報です。その後のアップデートにより内容が変わる可能性があります。IgnitionとはIgnitionはロボットのシミュレーションに特化したオープンソースなライブラリ群です。Gazeboは物理シミュレーションやセンサシミュレーションなどロボットのシミュレーションに必要な要素が組み合わさり1つのソフトウェアとして公開されています。※Gazeboの最近のバージョンではIgnitionのライブラリを取り込んで使用しているものもあります。こちらのページに解説が載っています。それに対し、Ignitionではそれぞれを構成する要素がライブラリとしてわかれているため、シミュレータを簡単に拡張することができます。1.0が採用されています。OptiXなどの中から自由にレンダリングエンジンを選ぶことができます。Gazeboと同様にIgnitionもbitbucket上で開発が進められているようです。Roboticsによってサポートとメンテナンスが継続されるようです。今後は安定して使いたい用途にはGazeboを、新しいプラグインを開発していきたければIgnitionを使い、両方を使い分けていくのが良さそうです。Gazeboはバージョン11で開発が終了するが、Ignitionはこれから続々とバージョンリリースが続く。開発にはIgnitionを使おう。ROSでサンプルのロボットを動かすIgnitionとROSを組み合わせて使用するサンプルがGitHub上に公開されています。公開されているデモ用モデルを動かしてみます。blueprintをインストールします。インストールは公式のドキュメントに従って進めます。https://ignitionrobotics.org/docs/blueprint/installGazeboが問題なく動く環境ならば、いまのところ問題なくIgnitionも動かせそうです。ros_ignのインストールその他のROSパッケージと干渉しないよう、念のため新しいワークスペースを作成します。ros_ignをダウンロードしてビルドします。以下のlaunchファイルを実行すると緑と青の移動台車が出てきます。topicを送ることでロボットを動かすことができます。いまのところtfがうまく取得できていないようです。分かり次第アップデートします。2019で紹介されていたIgnitionは今後ロボットのシミュレーションに大活躍しそうな、ロボットのシミュレーションに特化したオープンソースなライブラリ群です。Gazeboが今後なくなるという噂もあるようですが、Gazeboがなくなるのではなく時間をかけてIgnitionに移行していきます。Melodicを組み合わせて使用するサンプルをGitHubからダウンロードして使用してみました。MouseをIgnitionで動かしてみようと思います。更新履歴2019年10月23日osrf/ros1_ignがosrf/ros_ignにリネームされていたため、コマンドを更新しました。