理系学生の皆さんへ、組込み系インターンシップの実態とは

(※本記事は2022年度夏季インターンシップに参加した福井工業高等専門学校4年の五十子瑠飛さんによる寄稿です。)

今年の夏、インターンシップとしてLED-Camp10に参加しました。この記事では、LED-Camp10で実施したチーム開発の内容を画像や競技会の動画を交えながら解説していきます。

組込み?モデル駆動開発?

組込みって何?

組込みシステムとはマイコンのようなものを様々な機器に取り入れたり、機器に組み込むソフトウェアを指したものです。産業用、医療用、家庭用など様々な分野で用いられていて、エアコンを例に挙げると室内の温度を検知して自動で温度調整するといった機能があります。今回は、左図のようなLED-Tankというロボットに動きを組み込んで演習を行いました。

モデル駆動開発を知る

モデル駆動開発では、ある観点で抽象化したモデルを作成、変換し、最終的にソースコードに自動変換します。変換の自動化で作業量を大幅に削減し、一貫性を保持できるので、大規模化、複雑化するシステム開発に大きなメリットがあります。抽象化は、例えばパトカーや救急車を「緊急車両」というモデルに変換することをイメージしてください。今回はastah* professionalでモデルを作成し、m2tというプラグイン(拡張機能)でソースコードに変換してモデル駆動開発をしました。

チームのルールと開発の流れ

目標とルール

「チーム晴れやか」のミッション(目標)は、競技会で1位になることでした。
ルールは三つです。

  • 思ったことはすぐ口に出す
  • 常に心は晴れやかに(分からないことは聞いたり調べたりする)
  • 積極的に発言する

これらを土台として開発を進めていきました。私たちのチームは、プログラミングの経験年数が3チームの中で最も短かったこともあり、ミッションには下剋上の意図も含まれます。

競技内容

競技はLED-Tankという実機を使用して、左図のフィールド上にあるブロックを得点エリアに押し出し、総得点で競うものです。私たちのチームの戦略は「とにかくブロックを外に出す・ブロックを最大限押し出す」でした。無得点エリア以外は、どの方向に押し出しても得点ゾーンになるため、全てのブロックを押し出そうと考えました。

開発の流れ

  1. astah* professionalm2tでモデル作成、コード生成する
  2. Webots※1でシミュレーション(下図はWebotsのシミュレーション画像)
  3. LED-Tankで動作確認
  4. 1~3を繰り返す

シミュレーションを介しながら動作確認を繰り返すことで不具合をイメージしやすく、比較的短時間で改善できました。このルーティンで最も苦労したのは、シミュレーション上のセンサーと実機に付属しているセンサーの精度がずれている点でした。特に角度や距離の調整を何度も行う必要があり大変でした。

※1:Webots:オープンソースの3Dロボットシミュレータ。マルチプラットフォームのデスクトップアプリケーションで、ロボットの動きをシミュレートできる。

実際のモデル図

競技会をふりかえる

競技会のルール

  • 制限時間:2分間
  • ブロックは8個(競技開始時のブロック位置は固定)
  • 2回挑戦し、ポイントの高い方で競う
  • 1回のリトライあり(リトライなしで+2点)
  • 緑ライン:3点、赤ライン:1点、黒ライン:0点

状態遷移で見る競技の流れ

左の画像は状態遷移を図にしたものです。シミュレーションを数十回繰り返し、多くの事象で不具合のないように10cm単位で調整しました。おかげでフィールドからはみ出さず、ブロックを全て押し出すことができました。戦略の通り、ブロックを最大限押し出すことで、押し出した後のブロックを再検知することなく、さらにポイントが入るようになり、結果的に高得点を獲得できました。

獲得ポイント

1回目:15ポイント
2回目:17ポイント

結果は3チーム中2位でした。1位になるというミッションを達成することはできませんでしたが、予想していた獲得ポイントよりも3ポイントほど上回っていたので、改善を重ねることでより良い成果物を作り上げることができたと思います。

計画とコミュニケーションの重要性を実感した四日間

普段は計画なしで開発に没頭することが多かったので、初めてScrumという開発手法を実践する中で、計画を立てること、チームメンバーとのコミュニケーションの重要性について大いに感じるものがありました。競技会では1位になれなかったという悔いが残り、後から改善点が多く浮かぶことになりました。これからの開発では今回の学びを活かし、時間にシビアになり、余裕を持った計画と改善の時間を用意するようにしたいと思っています。LED-Camp10には私のような高専生の他に、大学院生や20代の社会人の方も参加されていて、研修の内容だけでなく日頃は聞けないような先輩方の話も聞けたので、これから社会に出るにあたっての不安解消にもなりました。組込み開発初心者の方や未経験の方でも、問題なく参加・学習できるので、ぜひLED-Camp11に参加してみてはいかがでしょうか。

参考リンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中