ABEJA Tech Blog

中の人の興味のある情報を発信していきます

ABEJA開発合宿開催レポート 〜ロボティクスハッカソン〜

こんにちは!ABEJAでプロジェクトマネージャーをしている服部です!今回はABEJA社内で開発合宿の企画・運営をしましたので、レポートを記そうと思います!

t-Expertsとは

Fig: t-Experts LLMチームの開催の様子 (Biz/Dev合わせて十数名が参加)

「t-Experts(テクスパート)」とはtech-expertsの略で、ビジネス・テックサイドを問わず、顧客にとっての技術のエキスパートであろう!という決意のもと、LLMやデータ分析、各種AIツール、ロボティクス領域などの研鑽を積む社内プロジェクト(という皮を被った部活動)です。本合宿もそうですが、初心者が入りやすいような設計を意識しています。

開発合宿概要

合宿のテーマはずばりRobotics Hackathonでした。開発期間後に後述するコンテストを行い、その完成度を評価します。ABEJAは近年ロボティクス領域にも注力しており、AIRoAにも名を連ねています。とはいえ社内がロボットエンジニアだらけ、ということはなく、少なからずロボットに触れたことのない人材もいます。そこで今回ロボットへの馴れ初めと理解の向上、社員の交流などを目的として開発合宿が企画されました。

…というところまでが建前で、ABEJAは技術が大好きな人たちで溢れています!普段はソフトウェア界隈に浸りガチですが、①実際にモノが動く、②一筋縄にはいかない、③将来性は抜群、と三拍子揃っており目の前のロボットに興奮しないわけがありません。

「次も参加したい!と思える、技術を楽しむイベントにしよう。」

そんなコンセプトのもと、開発合宿が設計されました。開発タスクはシンプルで、ロボットアームによるモノの運搬を競うことになりました。できるだけ現実のタスクとの連結を意識しつつ、AIとの相性を考えたミニマムな設計にしました。

昨今、界隈ではSO-ARM100 / SO-ARM101というロボットアームが流行っており、「ぜひこれを使いたいねー」と話していたのですが、在庫切れで、発注してもいつ到着するかわからない状況でした。実は発案から開催まで約1ヶ月という超短納期だったこともあり絶望しかけたところですが、ABEJAにはロボットが趣味の猛者がおりまして、彼の全面協力の元、合宿前日までに必要分のロボットアームが揃うこととなりました。

tech-blog.abeja.asia

毎晩絶えず3Dプリンタを動かし、合間にはんだ付けをして、企画立案にも全力投球してくださった大田黒さん、改めて圧倒的感謝です! 運営側で自作したハードウェア・ソフトウェア(SDK含む)を参加者に提供し、それをベースにコンテストを行いました。

コンテストのルール

各チーム(4-5人)にロボットアームが一台配布されます。
これを用いて制限時間10分以内に、ピッキングエリアから、ドロップエリアまで、お菓子を運んでください。
運ぶお菓子の価格や運び方によって与えられる点数が異なります。

お菓子は何をいくつ配置するかは任意です。
ピッキングエリアへの初期配置は「固定」と「ランダム」を選ぶことができます。
「固定」は開発チームが指定した場所に置かれ、「ランダム」は運営がアームの可動範囲内でランダムに配置します。
また、アームの操作方法として「手動」と「プログラム」どちらでも選ぶことができます。
手動の場合、コントローラーやサーボモータの角度の直接入力でリアルタイムで人が操作できます。

各チーム配布物

  • ロボットアーム1台
  • USBカメラ1台
  • スマホスタンド2台

その他備品

  • 3Dプリンタ
  • 各種文房具

評価基準

商品名 価格 特徴
うまい棒 10円 強めの力でも滑らず保持できる!
ジューC 30円 形はうまい棒、でもツルツル
フーセンガム 50円 ちょっと小さめ!
チロルチョコ 30円 かなり小さめ!
ミニコーラ 50円 ツルツルで力を入れすぎるとすべる
ブタメン 100円 アームに対してサイズがデカい!
  • タスク点 = (価格) x (操作) x (配置) / 10
    • 商品価格(上記テーブルを参照)
    • 操作
      • 手動:0.5
      • プログラム:1
    • 配置
      • 固定:1
      • ランダム:3
  • プレゼン点
    • 普通:1点
    • よくできました:2点
    • 大変良くできました:3点
  • ワイワイ点
    • 明らかにワンマンだったチーム:0点
    • 適度に分担できていたチーム:3点
    • 皆協力してワイワイしていたチーム:5点

注)最終的にはこのような評価基準になりましたが、ハッカソン開始当初は「ドロップエリアの美しさ」や「そもそもアームがお菓子にタッチできただけで得点」などの基準を考えていました。進捗していく中で、どのチームもお菓子を掴むところまでたどり着いていたところを観て、上記の評価基準に変更しました。

合宿の様子(全体)

ビジネスメンバー、テックメンバー問わず、賑やかに開発を進めていたのがとても印象的でした。ロボティクスに関する知識やエンジニアリング力には当然差がありますが、それでも各々がやれることを全力でやりきっていたと思います。

スケジュール

Date time(from) time(to) contents
5/30 12:30 12:50 集合
12:50 13:00 着席・用意
13:00 13:20 合宿オリエン開始・アイスブレイク
13:20 18:00 1日目ワーク
18:00 19:00 自由時間(休憩、お風呂、開発の続き等)
19:00 21:00 夕食・宴会
21:00 - 自由時間(休憩、お風呂、開発の続き等)
5/31 7:00 - 起床
7:30 8:30 朝食
8:30 9:00 荷造り・部屋退出
9:00 12:00 2日目ワーク(発表・会議室撤収含む)
12:00 - 解散

上記のようなスケジュールをざっくりと決めて臨みました。また安全に配慮したルールとして、夜間はアームに触らないことなども定めていました。安全第一です。

2日目は発表と撤収作業でほとんど開発時間がとれなかったので、実質の開発時間は半日程度でした。終わってみれば「もっと時間が欲しかった」という声は多かったのですが、少し足りないくらいでちょうどよかったのかも、とも思っております。

食事、温泉、そして・・・

今回はハッカソンのレポート、ではなく合宿のレポートなので、開発以外のことも記そうと思います。

まず食事、めちゃめちゃ美味しかったです!!海鮮がメインでしたが、どの魚も味わい深く、噛むと旨味が鼻まで突き抜けました。ビールと交互に口にしていると、いつか無くなるのが欠点です。僕は普段、寿司ではあまりマグロを頼まないのですが、さすがは三浦というべきか、絶妙な弾力で、風味を味わい飲み込む際には、舌がマグロとの別れを惜しむのを感じました。

朝食のバイキングでも思ったのですが、どの料理も鮮度がよく、下処理もまったく手を抜いていないことが伺えます。大規模宿泊施設と侮るなかれ、マホロバマインズ三浦、非常におすすめです。

お風呂は天然温泉らしいです。皆で大浴場に入る体験は久しぶりでした。結構熱めのお湯だったように思います。(僕は熱いのそんなに得意ではないので耐えながら)役職もロールも超えて雑談していました。今思えばみんな熱いのを我慢していたような顔だった気がします。

普段はSlackやGoogle Meetごしに互いの顔も見えずに過ごしていますが、こういうアナログの交流も悪くないですね。

運営としては食事やお風呂のあと、みんな開発(夜間はロボット触るのは禁止なのでコーディングだけ)に勤しむのかと想定していたのですが、夜遅くまでロボットやABEJAについて、思い思いの雑談をしていました。あまり普段はしないような深みのある(お酒が回った頭ではそんな気がする)話をしていました。この合宿全体を通してですが、普段プロジェクトで一緒にならないメンバーとも交流を深めるとても貴重な機会になりました。

開発の様子

今回運営として一番の懸念は、ビジネスメンバーがテックメンバーの開発の輪に入れるか、でした。それぞれ出身は、コンサル、人材、Webマーケ、文系新卒…などロボットに掠りもしていません。最後発表はビジネスメンバーが行うことになっていたとは言え、資料作りに終わっては悲しいですよね。

結果としては完全に杞憂でした。一応全員Pythonくらいは触れる状態で臨みましたが、ロボット動作のプログラミングをしたり、操作用GUIを作ったり、ワークフローを意見したりと、積極的にバリューを発揮していました。

これはテックサイドの度量の大きさも起因していると思っており、ABEJAは確かに技術力がとても高い人が多いですが、どちらかというと、それを鼻にかけない人の良さが本当の魅力なのかもしれません。

かくして互いの人間性がうまく噛み合い、すばらしい開発体験だったように思います。

コンテストの様子

短い開発時間にも関わらず、どのチームも驚くほど多様で創造的なアプローチを披露してくれました!各チームの発表を聞いていて、「なるほど、そう来たか!」と何度も唸らされました。

チームA:「画像認識×機械学習の王道アプローチ」

チームAは最もオーソドックスな、しかし技術的に完成度の高いアプローチを取りました。ランダム配置のお菓子を画像認識で特定し、座標制御で正確にピッキングする、まさに「AIらしい」解法です。

特に印象的だったのは「四角いものよりも丸いものの方が認識しやすい」という発見でした。実際に様々なお菓子で実験を重ね、ライトを当てることで影をなくし認識精度を向上させるなど、現場での試行錯誤が光っていました。

アーム角度の算出に機械学習を使うという発想も素晴らしく、理論と実践のバランスが取れたチームでした。発表では実際にランダム配置されたミニコーラを見事にピックアップ!会場からは大きな拍手が起こりました。

チームB:「人間の知恵を活かす探索型」

チームBのアプローチは、地道に人間の操作を記憶させて再現するという手法でした。「逆運動学も検討したが実装まではいかず」とのことでしたが、限られた時間の中で現実的な解を見つける判断力が光っていました。

「操作者スキル向上をねらう」というコメントからも分かるように、単純にロボットの自動化を目指すのではなく、人とロボットの協調を重視したアプローチが新鮮でした。実際の発表では、操作者が上達していく様子を時系列で見せてくれて、とても興味深かったです。

チームC:「確実性と挑戦性のハイブリッド戦略」

チームCは最も戦略的なアプローチを取りました。「確実に点をとれるアプローチ」と「不確実性の高い技術性の高いアプローチ」を並行で進めるという、まさにプロジェクトマネジメントの教科書のような進め方です。

確実な方では、ハードコードでの実装で「一つでも正解を作成できると、残りは微調整のみで取り組める」という発想が秀逸でした。ビジネスメンバーもこの微調整の作業でチームに貢献することができました。一方で挑戦的な方では、手の動きをボーン推定してロボットを操作するという、かなり野心的な試みに取り組んでいました。

発表では両方のデモを披露してくれて、会場が「おぉー!」とどよめいていました。リスクヘッジをしながらも技術的挑戦を忘れない、ABEJAらしいアプローチだったと思います。

チームD:「LLM活用×コスパ重視の現代的アプローチ」

チームDは今回最も「AI x Roboticsらしい」アプローチを取りました。VLMを使った位置判別、プロンプトでのガム検出など、生成AI時代ならではの発想が随所に見られました。

特に「難易度と点を計算し、コスパの良いお菓子を狙う」という戦略は、ゲーム理論的で非常に合理的でした。実際の発表で「ブタメン(100円)は確かに高得点だが、サイズが大きくて難しいので、チロルチョコ(30円)を確実に複数取る方が効率的」という分析を聞いた時は、思わず「なるほど!」と声に出してしまいました。

GUI作成によって「人が操作すればピックできる段階」まで最速で到達していたのも素晴らしく、短時間でMVPを作り上げる力に感動しました。

結果と表彰

各チームの結果は下記のようになりました

運搬品数 タスク合計点数 プレゼン点数 わいわい点数 総合合計
チームA 1 15 3 5 23
チームB 2 15 1 5 21
チームC 5 30 3 5 38
チームD 4 28 2 5 35

優勝したチームCの皆さんおめでとうございました! 優勝チームのみですが、実際のタスク実行の動画を御覧ください!

www.youtube.com

チームCはとにかくアームの動きが安定しており、いち早くロボットの各動作(指定した座標に取りに行く、置きに行く)の規格化に成功していました。エンドエフェクターなしで6軸あるので、案外これが難しかったはずです…

熟練者であれば当然の内容でも、ロボット初心者もいる中、当日お披露目のロボットをフルスクラッチでプログラミングでかなりの完成度が出せたのは素晴らしいと思います。

制限時間が10分あったのですが、他チームが目一杯使う中、4分で固定のお菓子を取り終え、あとはボーン推定コントローラのお披露目に費やしていたのは、もはや貫禄がありました。

合宿のまとめとその後の様子

以上、ABEJAで実施した開発合宿のレポートでした。我々が技術を楽しんでいる様子が少しでも伝われば幸いです。

個人的に一番印象に残ったことは、どのチームもスキルレベルやバックグラウンドが全く異なる中、適切にタスク分担をして、各自のワークの結合時にもまったく手間取っている様子がなかったところです。また各チームが自律的に動いていたおかげで、運営として様々なヘルプを考えていたところですが、すべて杞憂に終わりました。

これからもチームとして、どんな困難にも立ち向かっていけそうだと感じました。

また嬉しい動きとして、合宿後も、「もっとやりたくなった勢」が自前でシミュレータを作ったり、ビジネスメンバーの商談に役立ったり、参加できなかった人から「次こそ参加したい」と伝えていただいたりと、社内での興味や熱気の高まりを強く感じました。大成功といって差し支えない、大変良いイベントだったかと思います。

We Are Hiring!

ABEJAは、テクノロジーの社会実装に取り組んでいます。 技術はもちろん、技術をどのようにして社会やビジネスに組み込んでいくかを考えるのが好きな方は、下記採用ページからエントリーください! (新卒の方やインターンシップのエントリーもお待ちしております!)

careers.abejainc.com

特に下記ポジションの募集を強化しています!ぜひ御覧ください!

https://hrmos.co/pages/abeja/jobs/dev-se61-prd11

トランスフォーメーション領域:ソフトウェアエンジニア(リードクラス) | 株式会社ABEJA

トランスフォーメーション領域:データサイエンティスト(シニアクラス) | 株式会社ABEJA