東京工業大学・機械科学科講義「ロボット技術」にて、RTミドルウエアおよびロボットミドルウエア全般に関して紹介いたしました。
レポート課題および講義資料(PDF版とSlidesahre版)を掲載いたします。
プログラムの実行のためには、自分のPCのPythonをインストールする以外にも、以下のサイトでブラウザ上で試すこともできます。
関数: th = invkinem(link, pos) th: 2つの関節の角度[deg] link: 2つのリンク長[m] pos:手先位置[m] 引数、戻り値はいずれも要素数2の配列とする
関数: vl, vr = joy2vel (k, x, y) k: 適当な係数 x, y: ジョイスティックの現在値 vl, vr:移動ロボットの左右車輪角速度 [rad/s]
ジョイスティックの出力を、差動駆動型移動ロボットの車輪の速度にどのようにマッピングするか考えます。
のように動くような関数を考えます。
ここから、ジョイスティックの倒す角度と方向から、左右の車輪の角速度へ変換する関数を考えます。 ジョイスティックの出力には特に単位は無いので、適当な定数k(引数に指定)をかけて調整します。
OpenRTMを利用する場合は、少なくとも onInitialize関数、onExecute関数を示すこと。
RTC::ReturnCode_t ConsoleIn::onInitialize() { addOutPort("out", m_outOut); return RTC::RTC_OK; } RTC::ReturnCode_t ConsoleIn::onExecute(RTC::UniqueId ec_id) { std::cout << "Please input number: "; std::cin >> m_out.data; m_outOut.write(); return RTC::RTC_OK; }
完全なソースコードは http://svn.openrtm.org/OpenRTM-aist/trunk/OpenRTM-aist/examples/SimpleIO/ConsoleIn.cpp 等を参照。
RTC::ReturnCode_t ConsoleOut::onInitialize() { addInPort("in", m_inIn); return RTC::RTC_OK; } RTC::ReturnCode_t ConsoleIn::onExecute(RTC::UniqueId ec_id) { if (m_inIn.isNew()) { m_inIn.read(); std::cout << "Received: " << m_in.data << std::endl; std::cout << "TimeStamp: " << m_in.tm.sec << "[s] "; std::cout << m_in.tm.nsec << "[ns]" << std::endl; } return RTC::RTC_OK; }
完全なソースコードは http://svn.openrtm.org/OpenRTM-aist/trunk/OpenRTM-aist/examples/SimpleIO/ConsoleOut.cpp などを参照。
モーションエディタ/シミュレータ
動力学シミュレータ
統合開発プラットフォーム
産総研が提供するRTC集
東京オープンソースロボティクス協会
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
東京工業大学・機械科学科講義「ロボット技術」(2016年4月28日)
東京工業大学・機械科学科講義「ロボット技術」にて、RTミドルウエアおよびロボットミドルウエア全般に関して紹介いたしました。
受講者数
受講された皆さんへ
レポート課題および講義資料(PDF版とSlidesahre版)を掲載いたします。
レポート課題
1. ロボット制御に必要な以下のプログラムを示せ
プログラムの実行のためには、自分のPCのPythonをインストールする以外にも、以下のサイトでブラウザ上で試すこともできます。
a. 2自由度のアームの逆運動学を計算する以下の仕様の関数のPythonプログラムを作成し実行結果を示せ (20点)
ヒント
解答例
b. ジョイスティックの現在値から移動ロボットの車輪角速度を出力するPythonプログラムを作成し実行結果を示せ (20点)
ヒント
ジョイスティックの出力を、差動駆動型移動ロボットの車輪の速度にどのようにマッピングするか考えます。
のように動くような関数を考えます。
ここから、ジョイスティックの倒す角度と方向から、左右の車輪の角速度へ変換する関数を考えます。 ジョイスティックの出力には特に単位は無いので、適当な定数k(引数に指定)をかけて調整します。
解答例
2. ミドルウエアを利用したサンプルプログラムを示せ
a. ロボットミドルウエアを一つ選び、データの送信を行う手順・方法を調べ説明せよ。結果として、コメントを付したソースコード(完全である必要はないが、データ送信に必要な最低限の部分を示すこと)を添付せよ。(20点)
OpenRTMを利用する場合は、少なくとも onInitialize関数、onExecute関数を示すこと。
解答例
完全なソースコードは http://svn.openrtm.org/OpenRTM-aist/trunk/OpenRTM-aist/examples/SimpleIO/ConsoleIn.cpp 等を参照。
b. 同様に、データの受信を行う手順・方法を調べ説明せよ。結果として、コメントを付したソースコード(完全である必要はないが、データ受信に必要な最低限の部分を示すこと)を添付せよ。(20点)
OpenRTMを利用する場合は、少なくとも onInitialize関数、onExecute関数を示すこと。
解答例
完全なソースコードは http://svn.openrtm.org/OpenRTM-aist/trunk/OpenRTM-aist/examples/SimpleIO/ConsoleOut.cpp などを参照。
3. 授業の感想またはロボットミドルウエアについての感想を述べよ。(20点)
講義資料