ROS 2とUnityを繋いでロボットアーム(mechArm 270 M5)を動かすための事前連携ガイド
LOG20R2R2R2025/12/29

ROS 2とUnityを繋いでロボットアーム(mechArm 270 M5)を動かすための事前連携ガイド

Elephant Robotics社のmechArm 270 M5は、研究開発や教育に最適な小型6軸ロボットアームです。この実機を自在に操るための知能として欠かせないのが、世界標準のプラットフォームであるROS(Robot Operating System)です。

※本プロジェクトの目的:実機「mechArm 270 M5」の制御を通じて、AIの判断をいかに物理的な動きへ変換するか。そのロボット制御の仕組みを理解するプロセスを記録・検証するものです。
mechArm 270 M5イラスト

ROSとは?:ロボット開発の万能ツールボックス

ROSは、複数のOS(Linux, Windows, macOS)上で動作する、ロボット開発専用のミドルウェアです。世界中のエンジニアが開発した「腕を動かす」「物体を認識する」といった高度な機能を、パズルのように組み合わせて利用できるのが最大の特徴です。

Point: ROS自体がOS(基本ソフト)ではなく、OSの上で動く「便利な道具箱」であると理解するのがコツです。

チームワークで動く「ノード」の仕組み

ROSでは、一つの巨大なプログラムを作るのではなく、ノードと呼ばれる小さな役割(例:カメラ担当、計算担当、モーター担当)を連携させてシステムを構築します。その連絡手段には、用途に合わせた3つのスタイルがあります。

2025年の主流は「ROS 2」

これから学習を始めるなら、最新のROS 2が主流です。従来のROSと比較して、産業利用に耐えうる進化を遂げています。

  • 司令塔が不要な分散型: マスター(中心管理)が不要になり、一部のプログラムが止まってもシステム全体がクラッシュしにくい強靭な構造になりました。

  • マルチプラットフォーム対応: Appleシリコン(M1/M2/M3)搭載のMacにも対応。高性能なPC環境をそのまま開発に活かせます。

  • リアルタイム性の向上: 産業用ロボットや自動運転など、一瞬の遅れも許されない現場でも採用されるほど、正確で素早い制御が可能です。

 Unity × ROS:最強の「体」と「脳」

Unity(高精度な3Dシミュレーター)とROS(ロボット制御用フレームワーク)を連携させることで、開発の安全性と効率を飛躍的に向上させます。 ※本プロジェクトでは、ロボットアームmechArmをUnity上で制御する環境構築を目指しています。

役割分担: 直感的なインターフェースと高度な計算

Unityを「仮想世界と視覚化」、ROSを「制御と知能」として切り分けることで、それぞれの強みを最大限に活かせます。

Unityシミュレーション導入のメリット

実機(mechArm)を動かす前に、仮想空間で徹底的にテストを行うことができます。

  • 安全性の確保: プログラムのミスでアームが壁や自分自身に衝突しても、実機が故障するリスクがありません。

  • 開発速度の向上: 実機が手元になくても、PC一台でモーションの確認やデバッグが可能です。

  • 視覚的なフィードバック: ROS内の数値データをUnityで3D可視化することで、直感的に動きの正誤を判断できます。

便利なツール

  • MoveIt: 障害物を避ける通り道を自動で計算します。

  • Rviz: ロボットが世界をどう見ているかを確認できる3Dモニターです。

  • ROS-TCP-Connector: UnityとROSの間を高速に繋ぐ公式ツールです。

Mac(M1 Pro)でROS 2を動かす手順

MacでROS 2を動かすにはいくつか方法がありますが、最も動作が軽くおすすめな「RoboStack」を使った手順をご説明します。

Homebrewを入れる

まずは「ツールをインストールするための道具(Homebrew)」を入れるところからスタートです。

ターミナルに以下の長い命令をコピーして貼り付け、エンターキーを押してください。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • 注意: 途中でMacのパスワード(画面を開く時のもの)を求められます。入力しても画面には文字が出ませんが、そのまま打ってエンターを押せばOKです。

  • 最後に: 画面に「Next steps」と出たら、その下に表示されるコマンド(2行ほど)をコピーして実行してください。これで brew が使えるようになります。

ターミナル画面
※ターミナルをはじめて使う。本当に初心者で何が書かれているのか謎だけど、生成AIに聞きながら作業を進めていきます。
Gemini3 Pro画面
※なんとか成功してROS 2を導入するためのはじまりの一歩がスタートです。

Miniforge(ROSの作業部屋作り)

brew が使えるようになったら、先ほどエラーになったコマンドをもう一度打ちます。

brew install miniforge

ダウンロードの棒グラフ(### のマーク)が100%になり、再び画面の左下に % マークが表示されるまで待機します。

設定のコマンドを打つ

% マークが出たら、Macに「これからconda(Miniforge)を使えるようにしてね」と教えるための設定を行います。以下のコマンドをコピーして貼り付け、エンターを押してください。

conda init zsh
ターミナル画面
※close and re-open your current shell.というメッセージが出たのでターミナルを閉じます。

ターミナルを再起動する

その後、初期設定を行います(一度ターミナルを閉じて開き直してください)。

成功を確認する

新しく開いたターミナルで、名前(shimazueiichi...)の左側に (base) という文字が出ていれば成功です。

ターミナル画面-成功

ROS 2 Humble の部屋を作る

(base) が出ているのを確認できたら、いよいよROS 2をインストールします。以下の3つのコマンドを、1つずつ順番に貼り付けて実行してください。

情報の取得先を登録(その1)

conda config --add channels conda-forge

情報の取得先を登録(その2)

conda config --add channels robostack-humble

ROS 2 本体をインストール(これには数分かかります)

conda create -n ros_env ros-humble-desktop

※途中で Proceed ([y]/n)? と聞かれたら y を押してください。

ターミナル画面

コマンド conda create -n ros_env ros-humble-desktop を実行したことで、MacがインターネットからROS 2に必要な何百ものパーツ(パッケージ)を集めてきています。

  • 並んでいる名前の正体: opencv(目の役割)、python(計算の言語)、qt6(画面表示の仕組み)など、ロボットを動かすために必要な色々なプログラムです。

  • パーセント表示: 今、どのパーツがどれくらいダウンロードできたかを表示しています。

  • 待ち時間の目安: 全体で数GB(ギガバイト)という大きなデータ量になるため、ネット環境にもよりますが、あと5分〜15分ほどかかる場合があります。

終わったあとに起きること

すべてのダウンロードとインストールが終わると、画面の動きが止まり、一番下に再び % マーク(または入力待ちの状態)が表示されます。

そうなったら、Macの中にros_envという名前のROS 2専用の部屋 が完成したことになります。

失敗することもあるので確認をする

ターミナル画面-インストール失敗
※一番下の名前の左側が (ros_env)になっていないので失敗してしまったようです。

なぜ動かなかったのか?

ネットワークの一時的なエラー: 画面に CondaHTTPError と出ているのは、ROS 2の膨大なデータをダウンロードしている途中で、インターネットの接続が一時的に切れてしまったことが原因です。

部屋が完成していない: ダウンロードが途中で止まってしまったため、ros_envという名前の作業部屋がまだ作られていません。そのため、conda activate ros_env と打っても「そんな名前の環境は見つかりません」というエラーが出てしまっています。

解決するための手順(もう一度挑戦!)

こうした大きなデータのダウンロードでは、通信状況によって時々起こることなので心配いりません。以下のコマンドをもう一度実行して、インストールを再開しましょう。

ROS 2とUnityを繋いでロボットアーム(mechArm 270 M5)を動かすための事前連携ガイド|解決するための手順(もう一度挑戦!)

作成コマンドをもう一度打つ:

conda create -n ros_env ros-humble-desktop
  • ※すでに少しダウンロードできている分があるため、さっきよりは早く進むはずです。

  • 途中で Proceed ([y]/n)? と聞かれたら、また y を押してください。

  • 終わるまで待つ: 今度は途中でエラーが出ずに、最後まで終わって % マークが戻ってくるのを待ちます。

  • 最後に「部屋」に入る: インストールが完全に終わった後に、改めて以下のコマンドを打ちます。

conda activate ros_env

名前の左側が (ros_env) に変わり、今度こそ成功しました。

動くかテストしてみる

環境を呼び出す: 新しいターミナル画面で毎回最初に行うおまじないです。

conda activate ros_env

カメを出す

ros2 run turtlesim turtlesim_node

これで青い画面のカメが現れたら成功です!

ターミナル画面-成功

Unityとの連携に向けた次のステップ

ROS 2が無事に動いたら、以下の強力なツールを組み合わせて開発を進めます。

  • MoveIt: 腕が自分や壁にぶつからない道を自動で計算。

  • Rviz: ロボットが「今、どう見えているか」を確認。

  • ROS-TCP-Connector: UnityとROS 2を高速道路のように繋ぐツール。

 運用のポイント

  • 画面の許可: カメの画面などが出る際、Macから実行の許可を求められたら許可してください。

  • Unityとの連携: UnityはMac上でそのまま動かし、ROSはこの作業部屋(ros_env)の中で動かします。この2つがネットワーク越しにおしゃべりすることで、ロボットアーム(mechArmなど)を思い通りに操れるようになります。