東京工業大学 ロボット技術研究会

東京工業大学の公認サークル「ロボット技術研究会」のブログです。 当サークルの日々の活動の様子を皆さんにお伝えしていきます。たくさんの人に気軽に読んでもらえると嬉しいです。
新歓特設ページ        ロボット技術研究会 HP        ロボット技術研究会 twitter公式アカウント

ところ

「ロボット技術研究会」通称「ロ技研」は、その名前の通りロボットの制作や研究はもとより、電子工作や機械工作、プログラミングなどの幅広い分野にわたるものつくり活動を行っています。

カテゴリ一覧: loading

マイクロマウスと制御理論

rogy Advent Calendar 2015,20日目は ざくろくんの Dynamorphism 〜 Haskellでも動的計画法がしたい! 〜 でした.
DPなのに再帰的な手法によって計算されるって,よくあるメモ化再帰の計算オーダ改善としてDPが出てくる話の流れに馴染みがある私からすれば「あれ,話が逆なんじゃないかな」と最初思ったのですが,後で詳しく読んでみます(間違ってたらごめんなさい).

xiphosura


どうもご無沙汰しております.11年度入学のところです.もう老害ですね.
今回は毛色が変わってロボットの制御に関する話です.

最近こちらのブログを触らずに自分のブログの方でいろいろ書いております.
式やコードの入力がそちらのほうが圧倒的に楽にできるように構築してしまいましたので,勝手ながら自分のブログの方に記事の本体を投稿させていただきました.

👉 [rogy Advent Calendar 2015] マイクロマウスと制御理論 (1)壁トレース制御 | Tokoro's Tech-Note

分量が多くなりそうなので2部作になっていて,今日の記事はその前半パートです.
(1) 壁トレース制御 (今回書いたやつ)
(2) 絶対・相対運動の制御と非ホロノミック拘束 (12/26公開予定)

ところでマイクロマウスって何?という方は,井土くんの記事や下の動画を見てもらえると良いと思います.


マイクロマウスでは壁で区切られた区画の中を走っていくのですが,その際に壁にぶつかってしまわないようになるべく真ん中を走ろうということをします.
真ん中を走るのなんて簡単じゃないかと思われるかもしれませんが,マイクロマウスによく使われる車両ロボットの構造は,実はそういった走行がしづらい面倒な性質を持ったものなんです(そんなに難しいわけでもないです).

結構ニッチな話でもありますので,もし興味を持っていただけたらでいいのでご覧ください.
ついでに宣伝ですが,今年のマイクロマウス大会への参加レポートも書きましたので,そちらもぜひご覧ください.

👉 第36回全日本マイクロマウス大会に参加してきた | Tokoro's Tech-Note


rogy Advent Calendar 2015,明日 22日目 は NHKロボコンチーム Maquinista の "Chai-Yo活動記録" です.

Webブラウザ上で動くクラウド3DCAD Onshapeの紹介

こんにちは,11年度入学のところです.

いつもは作ったものについて書いているのですが,ロボット製作にあたって非常に便利なサービスがあるのでこの場を借りてご紹介します.

概要


今回ご紹介するのは Onshape です.

https://www.onshape.com/

OnshapeはWebブラウザ上から使える無料の3DCAD・図面作成支援サービスです.
あらゆる処理はクラウド上で行われるため,新しいソフトウェアのインストールは必要ありませんし,データはサーバ上に保存されるので,いつでもどこでも作業を継続できます.
また,ノートPCからでも比較的快適に3DCADでの機械設計が可能になるという特徴があります.

操作感については,SolidWorksやInventorなどの主要な3DCADソフトに似せて作られているため,これらを使用したことがある人ならばすぐに操作に慣れると思います.
パーツ点数の多いアセンブリの場合何かしら計算に伴うラグが発生しそうですが,今のところかなり快適に設計作業ができています.
CADに興味がない人も,WebGLの使用例として大変興味深い対象なのではないかと感じます.

scrot_20150723_12:42:59_AM


使い方


それでは使い方を見ていきましょう.といっても基本的にはスケッチを元に押し出しや切り取りを行うタイプの3DCADなので詳しくは説明しません.
使い方がわからなくなったら,編集画面の右上にあるはてなマークをクリックすればヘルプを開いて読むことができます.

前提としてまずアカウントの作成が必要です.入力するのはログインに必要なメールアドレスとパスワード,名前と職業ぐらいだったと思います.

パーツの作成

新しくプロジェクトを作成した場合はすでに Part Studio が開かれていると思います.

scrot_20150723_12:50:34_AM
Sketch をクリックしてスケッチを作成します.このときスケッチ平面を選択する必要があります.
デフォルトで3つの平面が定義されていますが,オフセットした平面がほしいなどの場合はツールバー右にある Plane ツールを使って新しく平面を作成できます.
スケッチができたら,押し出しや回転体生成を行います.Onshape では,Extrude, Revolve, Sweep, Loft, Thicken の5つのツールを使ってスケッチから立体を作成できます.
ほかにも立体に変形を加えるツールや,パターン複製を行うツール等もあるので,大抵の用途では問題なく使えるように思います.
例えばこんなのとかならすぐにできます:
scrot_20150723_01:01:03_AM


さらにパーツを作成するには画面左下の+マークから Create Part Studio を,パーツ同士を組み合わせたアセンブリを作成する場合には下の Create Assembly をクリックして,新しいワークスペースを作成します.
scrot_20150723_12:47:46_AM

アセンブリの作成

Onshape では, Mate Connector という仮想的な点を使ってパーツの拘束関係を定義します.
この Mate Connector の選択方法に多少癖があるので慣れが必要です.

scrot_20150723_01:04:34_AM
アイコンの矢印は,拘束した部品が動ける方向を表しています.わかりやすいですね.

scrot_20150723_12:46:18_AM
scrot_20150723_12:45:43_AM

まとめ

Inventor や SolidWorks をハイスペックなワークステーションで使用している方々には特に魅力的に思えないかもしれませんが,我々学生のようにライトなものつくり層には Onshape は良い選択のように思います.
個人的には Linux で動く良い 3DCAD がなくてというモチベーションだったのですが,その時の期待をはるかに上回る使いやすさには驚きました.
無料ですので,皆さんもぜひ使用を検討してみてください.
現在はベータ版ということで,今後のさらなる機能強化や操作性改善に期待しています!

scrot_20150720_10:27:26_PM
テンションが上がりすぎて,夜中の作業×2日で粗い設計ができてしまいました.感謝🙏

追記(7/23 16:00)


使用を考えている方のためにまだ足りないと感じた点を追記しておきます.いずれも細かい点ですが…
  • ほかのジオメトリの寸法を使って寸法を指定できない
  • スケッチ正面への視点移動がめんどくさい(右クリック→View normal to で可能ですが…)
  • 中点の拘束のためにわざわざ点を配置する必要がある
  • スケッチ描画時の曲線や点へのスナップのバリエーションが少ない
  • 回転体の軸を定義するのにスケッチを作る必要があるのがいまいち
Karakuri productsの松村さんのご意見も参考にさせていただきました.ありがとうございます.
Onshapeはすごいことにフィードバック用の仕組みがしっかりしています.
不具合や不満が出た時にすぐ報告できるように,現在表示している画面をスクリーンショットにしてそこに書き込めるようになっていて,隅から隅までよく作りこまれているなという印象です.

ほかにもクラウドベースのCADは Autodesk 360 や TinkerCAD 等がありますが,気が向いたら比較記事も書いてみたいと思います.
(ただ問題は私は機械はド素人でまともなレビューが書けるかわからない点なのですが…)

【10g】ロボットシミュレーション可視化環境 "torqml" の紹介 ①

みなさんこんにちは,この4月に大学院に入院いたしました,11年度入学のところです.

「忙しい」を理由になかなかブログを書かない罪悪感に苛まれながら $n$ ヶ月を過ごしておりましたが,今回それを挽回すべく,私が現在開発している,ロボットのシミュレーションデータを簡単に3次元可視化するソフトウェアである torqml の開発状況についてご紹介しようと思います.
ついでに数値シミュレーションとはどういうものか,なぜやるのかということも書こうと思います.

1. なぜシミュレーションをするか?

「机上の空論」という言葉は皆さんご存知だと思います.
いくら机の上でゴリゴリやってても内容がないよぅじゃ意味がないということですね.
私の専門分野(制御理論)のように机の上での計算に多くの時間を費やす研究分野では,現実から乖離していく方向に進まないよう,これに十分注意する必要があります.

そのため多くの場合は,提案した手法をいくつかの具体的な例に適用して効果を検証するということを行います.
学術の世界で言うシミュレーションは,数値計算によってこの検証を行うことを指します.
ほとんどの場合はコンピュータを使って想定する条件を作り出し,扱うものや手法の数式に従って計算を行います.
数値で結果や効能が見えるということは大変重要なことです.
例えば,スーパーに並ぶ日用品や食品に「20%増量」とか「30円引き」とかが明確に書いてあることで,お得だと感じて皆さんが手に取るわけです.
つまりは説得力があるのです(ゆえに気をつけなければなりませんが).

また,ロボットの場合は1台作るだけでも高価になることが多いので,予めシミュレーションでうまく行くことを確認しておいてから実機に適用することで,プログラムの不具合による暴走や故障を未然に防ぐことができます.

2. なぜ可視化する必要があるか?

しかし,数値というものは説得力と引き換えに,実際の量との直感的な関連付けがしづらいという側面を持っています.
例えば砂糖20グラムと言われても,それがどれぐらいの量かイメージしづらいでしょう.
また,砂糖をひとつかみ手にとってそれが何グラムか正確に分かる人も多くないと思います.
すなわち,数値という記号の世界と実際に見える・感じる量の世界は,お互いになかなか行き来できないことがわかります.

そこで人間は可視化するための道具を開発してきたわけです.
  • はかり
  • 定規
  • 時計
身近にあるこれらはすべて数値の世界と量の世界を行き来するのに使われています.

ロボットのシミュレーションの話に戻しましょう.
シミュレーションを行うと,東に何メートル・北に何メートル・左回りに何度・… みたいなデータがたくさん得られるわけですが,数字を眺めていてもロボットがどういう状況にあるのかさっぱりわかりません.
したがって,数値を何らかの形式で表現し直すことで,可視化することを考えます.
下に挙げたのはその一例です.

--
方法①:グラフやプロット
scrot_20150310_02:57:22_AM

グラフは,ある量と別の量の関係や規則性,割合などを見るのにとても便利な表現方法です.
しかし,グラフから直接長さや速さといった量を読み取って,物理的な感覚をイメージするのは簡単ではありません.

方法②:静止画や動画
pendulum_quad

静止画や動画…つまり絵で表現すれば,見てそのままですのでかなり直感的です.
しかし,関係や規則性を見つけるのは難しくなります.
--

このように,見せる方法によって,見やすくなる情報と見にくくなる情報があることがわかります.
全てを1つの方法で見せるのは大変難しいことなので,通常これらの方法をうまく組み合わせることをします.

ロボットのシミュレーションでは,ExcelやMATLABを使ったり,場合によっては専用のソフトウェアを自分で作って数値計算をします.
これまでは,数値計算した結果は大抵①に示したようなグラフを作成して満足してしまうことがほとんどでした(少なくともロ技研では).
これでは,出てきた結果が直感的に正しそうなものかチェックする手がかりがありませんし,ほかの人に見せる際にわかりづらいものになってしまいます.
そこで,出てきた数値を簡単に画像として出力できる環境を作れないだろうかという動機のもと,torqmlを開発しています.

3. なにができるのか?

torqmlでは,QMLと呼ばれる言語を用いてロボットなどの対象物の構造を記述し,数値シミュレーションのデータを読みこませることで,アニメーションの再生と静止画・動画への出力ができます.

scrot_20150502_02:52:16_PM


例えば,ビューワに直方体(TQBox)を表示するには次のように記述します:
import TorQML 0.1
import TorQML.Shapes 0.1
import TorQML.Views 0.1

TQBasicView {
models: TQModel {
TQBox { }
}
}
frame_1


基本的な記法はJSONに似ています.形状には様々なプロパティがあり,
TQBox {
xLength: 0.5
yWidth: 0.1
zDepth: 0.1
}
と指定することで,TQBoxの $x, y, z$ 軸方向の幅を設定できます.
frame_1


コンポーネントの入れ子構造を利用することで,構造の従属関係を記述します.
torqmlが主にサポートする,リンクで構成されたロボットマニピュレータの記述に適した形になっています.
回転や並進はtransformプロパティで指定します.
TQBox {
xLength: 0.5
yWidth: 0.1
zDepth: 0.1
TQBox {
color: "green"
xLength: 0.4
yWidth: 0.2
zDepth: 0.2
transform: [
Rotation3D { angle: 30; axis: "0,0,1" }
]
TQBox {
color: "blue"
xLength: 0.3
yWidth: 0.1
zDepth: 0.1
transform: [
Rotation3D { angle: 30; axis: "0,0,1" }
]
}
}
}
frame_1

アニメーションはtransformやその他のプロパティを更新することで実現しています.
次回以降で詳しく説明していこうと思います.

このように,torqmlではQMLを使用して3次元構造を直感的に記述することができます.
XMLをベースにしたものに比べてコンポーネントとそのプロパティ,コンポーネント間の関係がわかりやすく記述できます.
また,QMLを使用することで高い拡張性が実現できており,簡単にビューや形状などのコンポーネントを継承したカスタムコンポーネントを作成することもできます.
工夫すればtorqmlの上でちょっとしたゲームなんかも作れたりするのではないでしょうか.
詳しい記述方法や,ソフトウェアの使用方法についてはリリース後にこのブログの方に書いていこうと思います.


4. 今後の展望

torqmlはまだ正式バージョンをリリースしていませんが,Bitbucketで現在開発中のコードを閲覧・使用することができます.
https://bitbucket.org/tokoro10g/torqml
(ブラッシュアップできていないため現状すごくコードやディレクトリ構造が汚いです)

リリースは5月末ごろを予定しており,それまでにドキュメントを整備したりしながらこちらのブログで宣伝をしていこうと考えています.
また,将来的にはJavascriptやRubyで記述したシミュレーションプログラムを組み込んでの表示や,外部のシミュレーションプログラムからのデータパイプにも対応しようと考えています.

使用しているライブラリの都合上,Mac OS Xと各Linuxディストリビューション(Arch LinuxとUbuntu 14.04で動作確認)のみの対応となりますのでご承知ください.

torqmlの応援,よろしくお願いします!

【マイクロマウス】マイクロマウス学生大会に参加してきました

こんにちは,11年度入学のところです.

今回は先日参加してきた第29回全日本学生マイクロマウス大会のレポートを書こうと思います.

CIMG2275

マイクロマウス競技は,小さな自律ロボットが広大な迷路の中を探索し,スタートから指定された場所にあるゴールまでの最短走行時間を競う競技です.

CIMG2520

CIMG2515

といってもイメージが掴みづらいと思いますので,今回参加してきた動画をご覧ください:



このように,まず1回めは真ん中にあるゴールをとりあえず目指して走っていきます.
最初は迷路の中の壁がどうなっているか情報を持っていないので,走行中に壁のあるなしを自分で判断して,頭(マイコン)の中に迷路を作っていき,その情報を使いながらゴールまでの最短経路を探します.
ゴールにたどり着いた後は,追加の探索をしながらスタート地点に帰ってきます.

そして…

それまでに探した迷路の情報を使って,最速と思われる経路を高速で駆け抜けます.
これを何度も繰り返し,最速タイムを目指します.

今回参加した学生大会は公式の大会で,無事完走した参加者にはこのような認定証が交付されます.
CIMG2556
私の機体は今回09秒942,第6位でした.

個人や社会人の競技者も参加する全日本大会は,今月末の11月22〜23日に,東京工芸大学 厚木キャンパスで開催されます.
大会公式Webサイト: http://www.ntf.or.jp/mouse/micromouse2014/index.html

ロ技研からも3台(?)が出走予定です!
是非皆さん見にいらしてください!

【10g】自作クアッドコプター"Quadruptor"ができるまで・後編

みなさんこんにちは,10g所属,学部4年のところです.

今回は前の記事
【10g】自作クアッドコプター"Quadruptor"ができるまで・前編 
の続きをお送りします.

前回は,クアッドコプターを構成する各要素の動作チェックの流れと,機体の姿勢推定について書きました.

今回は,クアッドコプターを制御して飛ばすまでの流れを見ていきます.

 quadruptor_fin
続きを読む
ギャラリー
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • たのしいロボット帝国 製作物紹介
  • たのしいロボット帝国 製作物紹介
  • たのしいロボット帝国 製作物紹介
記事検索
最新コメント