教育用ロボットアームコンポーネントの開発

教育用ロボットアームコンポーネントの開発

投稿者: 
masaki
教育用ロボットアームコンポーネントの開発

概要

教育用ロボットアームであるCRANE+を動力学シミュレータChoreonoid上で動作する環境を構築しました。 RTコンポーネントを使って簡単に動かすことができるのでロボットアーム教育に活用できます。

特徴

  • パソコン1台あればアーム制御を体験できます。
  • アーム制御RTCはOpenRTM-aist ロボットアーム共通インターフェース1.1に対応しているため,他システムへの応用もできます。
  • シェルスクリプトを使用しているので,スムーズにシミュレーション開始まで行うことができます。

仕様

  • 言語: C++
  • OS:Ubuntu 14.04
  • RTミドルウェアOpenRTM-aist-1.1.0-RELEASE

コンポーネント群

  • ManipulatorControlSample:アーム共通インターフェース対応RTC用の簡易コントローラ.
  • ChoreonoidCRANEControllerRTC:Choreonoid上のCRANE+モデルを制御するコンポーネント.実機を制御することもできる
  • CraneplusRTC:CRANE+の実機を制御するコンポーネント.

作品概要スライド

  • 作品概要スライドは-->こちら<--からご覧いただけます

ソースコード及びマニュアル

  • 全部入りは-->こちら<--からダウンロードしてください

各種ソースコード

各種マニュアル

更新履歴

  • 11月10日

ソースコードとマニュアルをアップしました。

  • 11月14日

操作マニュアルにシュミレータを用いたCRANE+制御の項目を追加しました。

シェルスクリプトによるコンポーネントの実行,接続ができるようになりました。それに伴い,操作マニュアルを変更しました。

一部ソースコードの不備を直しました。

  • 11月23日

moveLinearCartesianAbsを削除し,movePTPCartesianAbsを実装しました。

  • 12月6日

作品概要スライドを追加しました。

  • 12月10日

ChoreonoidCRANEControllerRTCのシミュレーションの手法を変えました。

  • 2017年1月31日

シリアル通信できていないバグを修正しました。

Choreonoidモデル作成方法マニュアルを公開しました。

  • 2017年8月25日

CraneplusRTCをWindowsに対応させました。

問合先(メールアドレス): 
130447084@ccmailg.meijo-u.ac.jp
Resources
Project Information
OS: 
Windows
Linux
言語: 
C++
OpenRTM ver.: 
1.1
Average: 
4
Average: 4 (2 votes)
最終更新日時: 
金, 2017-08-25 12:06

コメント

投稿者: 
ソースコード、マニュアルを読んだのですが以下の点が気になりました。
  • craneという変数をグローバル変数にしている理由を教えてください。
  • マジックナンバーを多用するのはあまりよくないです。ChoreonoidCRANEControllerRTCのActCommand関数で現在位置と1ステップ前の位置を0.001という数値で割って速度を求めているようなのですが、この数値は一体何でしょうか?
  • 定数pgain、dgainをどうやって決めたかを教えてください。
  • moveLinearCartesianAbs関数は直交空間の直線補間が本来の動作のはずですが、ソースコードを読んだ限りサーボが目標角度まで動くだけの動作のように思います。実際はどのような動作をするのでしょうか?
  • 既存のものに比べてどのような新規性があるかを教えてください。
投稿者: 

名城大学 真崎です.ご質問ありがとうございます.それぞれ答えさせていただきます.

・craneという変数をグローバル変数にしている理由

この点については,まだ自分自身のプログラムの知識が未熟なこともありこのようになっております. 指導教員からも直すべきとの指摘を受けましたので,対処するようにいたします.

・マジックナンバーについて

ご指摘ありがとうございます.たしかに,わかりづらいソースコードになっていました.定数で宣言するなどの改善をしようと思います. ChoreonoidCRANEControllerRTCのActCommand関数で現在位置と1ステップ前の位置を0.001という数値で割っていることに関してですが,Execute関数の実行周期が1000Hzということで0.001s毎の角度を入手しているとみて0.001で割って速度を求めています. ただ,ご指摘はごもっともですので,このあたりについても修正を加えようと思います.

・定数pgain,dgainをどうやって決めたか

現状のpgain,dgainは手動で入力して実験的に求めたものを使っています.今後限界感度法などの理論的に求める方法で得たgainに改善する予定ですすめてます.

・moveLinearCartesianAbs関数について

申し訳ございません.確かに,その通りです.直交空間の直線補間で移動する形に修正を試みます.

・新規性について

Robocup@Home Educationリーグなどでは,CRANE+,Kobuki,Kinectを用いたROSパッケージを用いて参加しているグループが多く見られます. また,倉爪等の書かれた書籍においてもこれらのロボット要素が取り上げられています. 一方で,RTMではKobukiやKinectについてはでてきているものの,CRANE+に該当するRTCは見つかりませんでした. ハードウェアとして導入しやすい価格帯のマニピュレータで有り,自作でなにかをしなくても,買ってくれば使えるという点に重きを置きました. また,ロボット実機のコンポーネントだけでなく,シミュレータも合わせて用意されていることで,導入部の敷居を下げることができると考えています. ご質問のお答えには必ずしもなっていないかと思いますが,少なくとも現段階でないRTCとシミュレータモデルを構築し,利用できるように提供しているという点において, 新規性はあると考えております.

投稿者: 

返信していただいてありがとうございます。

0.001は実行周期から決めているとのことですが、実行周期を変更した場合はどうするのでしょうか?

新規性についてですが、ロボットアームのRTCとシミュレータモデルを構築した作品は過去のコンテストでいくつかあったと思います。

これらとの違いを教えてください。

投稿者: 

名城大学 真崎です.ご質問ありがとうございます.それぞれ答えさせていただきます.

・実行周期を変更した場合どうするのか

実行周期の変更への対応が十分にできておりませんでした.このあたり,改善するようにいたします.

・過去のコンテスト作品との違いについて

ご指摘頂きました過去の作品との違いですが,過去の作品もすばらしく,宮本様のものも含め,今回の私の作品よりも完成度は高く, いろいろなものを提供されていると考えております. 一方で,私どもの作品は,ミドルウェアを広く利用してもらうことを想定し,その中で,Robocup@Home Educationリーグや, ROSのプラットフォームとして利用されているものが,RTミドルウェアでも動作することを示していくことが重要だと考えております. 今回注目したアームは,こうしたプラットフォームとして用いられているものの,これまでRTコンポーネント化された 事例がなかったものです.従来の作品に比べて,質的にも勝っているとは言いにくいところもございますが,意義としては十分にあると考えており, 今回コンテストにこのような形で投稿させて頂いております.

投稿者: 

回答していただいてありがとうございます。

言い方は悪いのですが、要約すると「RTMに対応していないアームがあったので対応させた」というような意味かと思いました。それだけだと新規性が低いのではないかと思います。

投稿者: 
産総研の高橋です.更新ありがとうございます.
内容を確認させていただきました.
入手性の高いCRANE+と共通インタフェース+choreonoid を利用し,既存の設計資産を上手に使った有用なコンポーネントだと感じました.
3点コメント&質問があります.
・mode をコンフィグレーションパラメータにせず,コンポーネントの接続有無によって切り分ける方が直感的に利用しやすいと感じました
・Crane.cpp L.772 あたりのif文の評価式が "theta3>0" の文字列を評価しているようです.ダブルコーテーションは不要では無いでしょうか.
・教育用とのタイトルですが,教育向けに工夫した点がありましたら,ぜひアピール下さい(汎用性の高いコンポーネント設計など)
投稿者: 

名城大学 真崎です.ご指摘ありがとうございます.それぞれ答えさせていただきます.

・mode をコンフィグレーションパラメータにせず,コンポーネントの接続有無によって切り分けることについて. modeをコンフィグレーションパラメータとすることで,シミュレータで動作確認→実機実験の流れに繋げやすいというメリットがあります.ただ,どのような環境で本作品が使われるかということを考えて,どうするか決定したいと思います.ありがとうございます.

・Crane.cpp L.772 "theta3>0"について こちらのミスでした.ダブルコーテーションは必要ありません.ありがとうございます.

・教育向けに工夫したこと. 教育向けに一番工夫したことはシミュレータで動かせるようにしたことです.自分も経験したことですが,アーム制御は逆運動学などの複雑な計算が必要で手間がかかるため,机上の計算だけではわかりづらいと感じております.そこで実機を持っていなくてもパソコン一台でアームを動かすことができれば,出てきた解の通りに動かしてどのように動くか確認したり,実際にアームが動くことでモチベーションの向上や達成感が得られるのではないかと思っております. また,アーム制御だけでなくロボットシステムへの活用も考えております.CRANE+制御RTCはアーム共通インターフェースに対応しているため,アーム制御に詳しくない人でも簡単に動かすことができます.CRANE+は移動台車kobukiに搭載できたりするので,ロボットシステム開発初心者にも活用して頂けるのではないかと思っております.

投稿者: 
産総研の高橋です.ご返信いただきありがとうございます.
確かに仰る通り,単純にロボット制御を行う RTC を作っただけでなく,シミュレータがあることでロボットの台数の制約も受けずに効率的に開発できると感じました.
将来の展望としては,同じ枠組み(Choreonoid + 共通インタフェース)で様々な種類のロボットアームを簡単に動かせるツール群に成長していけたらと思います.
投稿者: 

名城大学 真崎です.ご返信ありがとうございます.

Choreonoidとアーム共通インターフェースは,私も今後使っていく組み合わせになると思うので,そういった環境構築を円滑に行えるツールができるとよいと考えています.

投稿者: 

良い作品をありがとうございます.Craneに関する部分をコンポーネントから分割しているのも良い対応だと思います.シリアルポートを別クラスにすると,Windowsへの移植も簡単になったと思います.よければ,下記のようなヘッダーのみの超軽量ライブラリでシリアルポートをラッピングしていますので,参考にしてもらえればと思います.boostを使ってもよかったかと.

libaquaです.そのまま使ってもいいですよ

https://github.com/sugarsweetrobotics/libaqua

投稿者: 

名城大学の真崎です.コメントありがとうございます.

OSのシェアから見ても,今回作成したコンポーネントのWindows版の作成は前向きに検討したいと考えております.

シリアルポートを扱うライブラリのご紹介,ありがとうございます.ぜひ参考にさせていただきたいと思います.

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2159
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク