大学院ではロボット工学を専攻しており、「3本指のアーム型工業用ロボットの物体拘束手法の判定」について研究しています。また子供ロボット教室の講師や電気研究部としての電子工作教室の商材開発なども積極的に行っています。3年間ほどWebプログラマとしてクラウドデータベースサービスのバックエンド開発を行っていました。
Dockerは, コンテナベースの仮想化ツールです. 実行環境をテキストベースで記述することができるためプログラミングが苦手な人でも簡単に環境を構築できるという特徴があります. この特性を活かし研究プロジェクトでもDockerを利用して実行環境を構築し, 後輩に研究内容を引き継ぐことができました.
Linuxは, オペレーティングシステム(OS)の一種であり, Unix系のOSの一つです. メインの開発環境としてはUbuntuのLTSバージョンを利用しています. ROSや深層学習やマイクラサーバなどは全てLinux内で実行しています.
ROS(Robot Operating System)は, ロボットの開発を支援するオープンソースのフレームワークで分散処理やメッセージ通信などの機能があります. 近年ではロボットだけでなくドローンや自動車などにも利用されています. 実際に3本指工業用ロボットアームの研究で利用しています.
Autodesk社が開発している製造業向けの3D CADです. 機体設計, 図面の作成などに利用しています.
Autodesk社が開発しているクラウドベースのCAD/CAM/CAEソフトウェアです. 蜘蛛型ロボットなどの機体設計, CNCや3Dプリンタを利用するためのG-Code作成に利用しています.
MATLABは数値解析, データ可視化, アルゴリズム開発などを行うための言語, 開発環境です. 主に研究でのアルゴリズム作成などに利用しています.
Gitは分散型のバージョン管理システムです. ソフトウェア開発におけるファイルの変更履歴を追跡し, 管理することができます. プログラムをチームで共有するために利用していました. 主にGitHubを使用しています. また, GitLabでの作業経験もあります.
機体間の通信プログラムやC言語にしか用意されていない数学ライブラリを活用するために利用しています. 他にも物理シミュレータの操作プログラム、電子工作教室キット、サーボモータの自作ドライバの作成のためにも利用しています.
研究でのアルゴリズムやロボットの運動学、逆運動学を計算するために使用しています. C++と同様にサーボモータの自作ドライバなどにも利用しています.
HTMLは, ウェブページを作成するためのマークアップ言語です. 基本的なWebページであれば作成することができます. 当サイトもHugoというフレームワークを使用してHTML/CSSで作成しています.
PHPは主にウェブ開発に使用されるサーバーサイドのスクリプト言語です. 実際のWeb開発ではLaravelやSlimフレームワークを扱っていました.
TypeScriptはMicrosoftによって開発されたオープンソースのプログラミング言語です. JavaScriptと比べて効率的に記述することができます. 主にAngular, Vue.js, Reactを扱っていました.
Aug 2020 - Oct 2023
東京都渋谷区
株式会社ロフタルではクラウドデータベースや研究室向けCMSサービスの提供などを行っています.
制作過程(ロボットアーム) 5自由度のマニピュレータを制作、制御します。マニピュレータで物を掴んだり、手書き文字を書いたり、イラストを描いたりすることが最終的な目標です。 あくまで趣味の延長として取り組んでいますが、将来的に私の研究の実証実験などで利用できれば一石二鳥と考えています。 また、サーボを手に入れるのに時間がかかりそうなので、まずは制御から取り掛かります。 この記事では、一度にマニピュレータの制御についてまとめると文章量が膨大になるため複数回に分けて記述します。 今回は、マニピュレータの先端速度を制御する術について書いていきます。 一般に順運動学とは、関節の角速度から先端速度や先端姿勢を求めることであり、逆運動学とは、先端速度や先端姿勢から関節の角速度を求めることをいいます。 今回作成するマニピュレータでは、直接的に操作できるパラメータは各関節のサーボの角速度であるため、マニピュレータの先端速度、姿勢を実現するために必要な関節角速度を求めることができる逆運動学を解くことが目標です。 そのためにまずは順運動学から計算して、関節角速度から先端速度、姿勢に変換する変換行列である「ヤコビアン」を計算します。 マニピュレータの定義 今回想定しているロボットアームはこのような5自由度の関節をもつマニピュレータです。 手先については、タスクに応じて手先にグリッパなどを取り付けたいと考えています。 5自由度マニピュレータのモデル 文字 定義 $\bm{r}$ 先端の座標ベクトル [cm] $θ_i$ 関節$i$の角度 [rad] $\bm{l_i}$ リンク$i$の長さのベクトル [cm] $\Sigma_i$ 座標系$i$ 太い矢印部分がマニピュレータの本体になり、回転軸が設定されている箇所に関節が存在します。 また、$\Sigma_i$の原点から$\Sigma_g$の原点までのベクトルを$\bm{P_i^g}$と定義します。 続いて、3次元(SE(3))空間での回転行列、手先姿勢は以下のように定義します。 文字 定義 $\bm{R_i^g}$ $\Sigma_i$から見た$\Sigma_g$の姿勢を表す回転行列 $\alpha$ 手先の姿勢 Roll [rad] $\beta$ 手先の姿勢 Yaw [rad] このとき、$\bm{R_0^1}$、$\bm{R_4^5}$はz軸周りの回転であり、$\bm{R_1^2}$、$\bm{R_2^3}$、$\bm{R_3^4}$はx軸周りの回転であることから、回転行列は以下の通りです。 ※視認性を良くするため、cos($θ_i$)は$c_i$、cos($θ_i$)*cos($θ_g$)は$c_{ig}$と記述します(sinも同様) $$ \bm{R_0^1} = \bm{R_4^5} = \begin{pmatrix} c_i & -s_i & 0 \\ s_i & c_i & 0 \\ 0 & 0 & 1 \\ \end{pmatrix} $$ $$ \bm{R_1^2} = \bm{R_2^3} = \bm{R_3^4} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & c_i & -s_i\\ 0 & s_i & c_i \\ \end{pmatrix} $$
作品紹介 電気研究部で電子工作教室を開催した際にキットとして販売したLEDバーサライタです。 LEDバーサライタは一定の周期でLEDの点灯を変化させることで振ると光の模様が残像として浮き出るおもちゃです。 LEDバーサライタの光の軌跡 工夫点はお客様が自ら模様をデザインすることで「世界に一つだけのLEDバーサライタ」を作成することができるという部分です。 当初、模様は予め作成したものをマイコンに書き込み大量にキットを用意して販売する予定だったのですが、お客様が模様をデザインできるようにしたところ、手紙をいただけるほど楽しんでいただくことができました。 同じ商品を売るとしてもコンセプト次第でここまで反応が変わるということに感動したことを覚えています。 電子工作教室の様子 デザインの仕方としては模様をエクセルで描いていただく方式で実施していました。(エクセルは馴染みがある方も多いため) デザイン後は模様を16進数配列に変換し、現地で配列をマイコンに書き込むという方法で行っていました。
作品紹介 1脚3関節の6脚ロボットをチームで作成しました。 私は主にリーダー、電子回路、内部システムを担当しました。 開発言語はPython、ミドルウェアとしてROSを使用しています。 蜘蛛型ロボット