ページの本文へ

ロボット開発におけるシミュレーター利用について

エンジニアリング事業部 第4本部 第2部 浜本 賢一

キーワード

  • #エンジニアリング
  • #ハードウェア
  • #ソフトウェア

はじめに

こんにちは!エンジニアリング事業部 第4本部の浜本です。

少し前では、漫画やアニメの世界でしか見なかったロボットが、近頃では身近によく目にするようになりました。

あるレストランでは食事の配膳をロボットが行っていたり、ある場所では不審者がいないかどうか警備するロボットが見回りを行っていたりします。病院内を案内するロボットというのもありました。

さまざまな人が行きかう中、ロボットはぶつかりもせず目的の場所に移動するのを目にすると「すごいなぁ」と感心します。

今回はそんなすごいロボットの開発について、取り上げたいと思います。

ロボットの開発

では、こうしたロボットはどのようにして作られているのでしょうか。

配膳ロボットや警備ロボット、案内ロボットのような移動ロボットは、その場にとどまることなく施設内を移動します。その裏側では、人や障害物を避けながら安全に移動し、状況に応じて進み方を変えられるように、ロボット内部でソフトウェアが動いています。

近年のロボット開発では、その土台としてROS2と呼ばれるミドルウェアが使われることが多くなっています。

ROS2とはRobot Operating System 2の略で、ロボット開発に向けたオープンソースのソフトウェアです。

ROS2上で動作するソフトウェアは、ロボットに対して「どの方向に、どのくらいの速度で動くか」を指示しながら、同時にロボットから「現在位置」「速度」「障害物までの距離」といった情報を受け取ります。これらの情報をもとに、進むのか、曲がるのか、停止するのかといった次の行動を判断し、指示を更新していきます。

ただし、多くの人が行きかう場所で、開発途中のソフトウェアを使いながらロボットを動かすことは大きな危険を伴います。

ちょっとした制御ミスによってロボット同士が衝突したり、急発進して想定外の場所へ移動したりする可能性もあります。人がいない時間帯を見計らってロボットを動かすという方法もありますが、それは開発の最終段階で行うことがほとんどです。実際の開発では、ロボット本体がまだ完成していない段階からソフトウェア開発を進めることも少なくありません。

そこで、ロボット開発ではシミュレーターが利用されます。

シミュレーターの利用

仕組み@:ロボットの動きを時間ごとに計算する

ロボットは命令を受けた瞬間に目的地へワープしているわけではありません。

たとえば配膳ロボットのように「2番テーブルに移動する」という指示が出た場合でも、ロボットは少しずつ加速し、方向を修正しながら進んでいきます。

シミュレーターの中では、「今から0.001秒後にどうなるか」「次の0.001秒は」というように非常に細かい時間刻みで未来を計算しています。そのたびに、モーターにどれくらいの力がかかるのか、車輪はどれだけ回るのか、床との摩擦でどれだけ進むのか、といった要素を積み重ねて計算しています。

この処理を高速に繰り返すことで、私たちが画面上で見る「なめらかに動くロボット」が成り立っています。一見すると当たり前に見える動きの裏側では、膨大な計算が絶え間なく行われているのです。

仕組みA:センサー出力を計算で再現する(LiDARの例)

・レーザーが出る位置と角度を決める

・その方向から「見えない線」を飛ばす

・壁や物体に当たった場所を計算する

・そこまでの距離を数値として出力する

レーザーが出る位置と角度を決めてその方向から「見えない線」を飛ばし計算して距離を数値として出力

実際にレーザー光を照射しているわけではなく、「この方向にはこの距離の位置に壁があるはずだから、距離は○○m」というように、計算によって結果を作り出しています。その結果は、実機のLiDARと同じ形式のデータとしてロボットのソフトウェアに渡されます。

ロボット側から見ると、それが本物のセンサーなのか、シミュレーターが作ったデータなのかはほとんど区別がつきません。これにより、実機と同じプログラムをそのままシミュレーターで動かすことができます。

シミュレーターを使うメリット

シミュレーターを利用する最大のメリットは、安全性と効率の高さにあります。実機では、ちょっとした制御ミスにより転倒や衝突による破損、想定外の挙動による事故など常にリスクが伴います。しかしシミュレーターなら、どれだけ失敗しても機材が壊れることはありません。パラメータ変更やアルゴリズムの検証が容易である点は、開発者にとっては大きな利点になります。

また、開発効率の面でもシミュレーターは優れています。ロボットが1台しかない場合、複数人での同時開発が難しくなりますが、シミュレーターがあれば各自のPC上で同じ環境を再現できます。

さらにシミュレーターの大きな特徴として、ロボットが取得している情報や内部状態を人間が目で見て確認できる点が挙げられます。レーザーがどの方向に飛び、どこで障害物に当たっているのか、ロボットがどの位置にいると認識しているのか、作成された地図がどのような形になっているのかといった情報は、実機では数値やログとしてしか確認できません。

一方、シミュレーターと可視化ツールを組み合わせることで、これらの情報を画面上で直感的に把握できます。これにより、「なぜこの場面で停止したのか」「なぜこの方向へ進もうとしたのか」といったロボットの判断理由を追いやすくなります。

このような可視化はデバッグ効率を大きく向上させるだけでなく、ロボットがどのように周囲を認識し、行動を決定しているのかを理解する助けにもなります。

おわりに

ロボット開発においてシミュレーターは、実機の代わりに動かすための補助的な存在ではなく、ロボットがどのように世界を認識し、判断し、動いているのかを理解するための重要な開発環境です。

ROS2と組み合わせることで、実機とほぼ同じソフトウェア構成で安全かつ効率的に試行錯誤を重ねることができ、未完成な段階でも開発を前に進められます。

シミュレーターで基本的な挙動を作り込み、実機で最終的な確認を行う。この流れを前提とした開発が、これからのロボット開発では欠かせないものになっていくでしょう。



2026年5月
株式会社 日立情報通信エンジニアリング
エンジニアリング事業部 第4本部 第2部 浜本 賢一


※編集・執筆当時の記事のため、現在の情報と異なる場合があります。編集・執筆の時期については、記事末尾をご覧ください。