ロボット開発概要

ROS 1/2やHW選定、四駆・アーム型ロボットについて

過去に弊社が実施した、ロボット開発についての勉強会資料の、まとめ です。一部、正確ではないかもしれない事を、ご容赦下さい。

(日付は投稿日です)

2026/4/25

ROS とは? (ROS 1/2共通)

•Robot Operating Systemの略 (OSと名が付くが、実際には主にLinux上に載るミドルウェアである)
•ロボットを制御するための仕組み
•開発ツールやライブラリーが含まれている
•オープンソースのソフトウェア・プラットフォーム
•Linux系OS上を中心に動く
•世界中の人が使用している
•開発言語: C++、Python等
•RTミドルウェア(RTM)との比較:
•RTMは、Winでも動くが、国内団体が開発したものが多い
•RTMはGUIでの開発だが、ROSはCUIが基本である
→ 世界展開は、ROS程でない (英語のドキュメントやチュートリアルが少ないため)

ROS 1に含まれる内容

  • 通信
  • 各種ツール
    • catkin (ビルドシステム)
    • rviz (ロボットの情報を3次元に可視化する)
    • ROSbag (ROS メッセージ データを保存するためのファイル形式)
    • ROSlaunch (複数のROSノードをまとめて起動/停止するためのツール)
    • Gazebo (オープンソースの2D/3Dロボット・シミュレーター)

ROS 通信モデル

トピック通信 (単体)

トピック通信 (複数)

サービス通信

アクション通信

ROS 通信比較

種類 特徴 用途
トピック通信 連続データ
多対多通信可能
センサーデータ
ロボット呼び出し状態
サービス通信 短時間処理 単純呼び出し
状態把握
アクション通信 複雑
長時間動作
ロボット処理実行

catkin とは? (ROS 1のみ)

  • 1例として、次のコマンドを実行するとビルドされる

「イメージ的には」gccやg++みたいなモノ

$ mkdir -p ~/catkin_ws/src (ディレクトリー作成)

$ cd ~/catkin_ws

$ catkin_make

※ catkin build(新コマンド)でも、ビルドできる

(catkin_make後にcatkin buildするのは、移行作業が必要)

rviz とは? (ROS 1/2 共通)

1.URDFモデル(関節等)を作る

2.ロボットを動かすノードを作る

3.rvizとロボット動作を起動する

LiDARやSLAMで作ったマップ上に、ロボットが動くのが再現される

LiDARとは? (ROS 1/2 共通)

  • LiDAR = Light Detection And Ranging

レーザーを照射して、反射から距離や物体を検知する

SLAM とは? (ROS 1/2 共通)

  • SLAM = Simultaneous Localization And Mapping

自己位置推定と地図作成をするもの

Gazebo とは? (ROS 1/2 共通)

  • ロボットのシミュレーターである
  • 例:

1.CADでSTLファイルを作成

2.URDFモデルを作成

3.シミュレーター上で動かす

 

STL: Standard Triangulated Language

URDF: Unified Robot Description Format

ROSを用いた開発手順 (ROS 1/2 共通)

ROS 2の概要

  • 複数台のロボットを同時制御
  • 組み込み系のマイコン等、マルチプラットフォーム対応
  • 通信品質確保やリアルタイム通信機能を標準対応化
  • ROS 1と2の互換性は、低い (ただし、パッケージは移植可能)
  • ドキュメントやチュートリアルが少ない

複数台ロボット制御

  • Open-RMF等を使って、ロボットを群制御できる
  • RMF: Robotics Middleware Framework
  • オープンソース
  • ロボット群や、ドアやエレベーター、建物を相互運用する
  • ロボット同士の干渉を減らす → 処理負荷を軽減

ROS 1からの変更点

  • ビルドコマンドが変更 (catkin_make / catkin build → colcon build)
  • ROS Master不要 (1は、一々起動する必要があった)
  • パラメーターをノード毎に持つようになった (ROS Masterが関係)
  • 別マシンとの接続は、自動的に発見される (1は指定しないと、できない)
  • msgの型のルールが変更
  • ROS時刻が、2種類から3種類に変更された
  • 非同期APIがある (1は、同期APIしかなかった)

ROS 1からの変更点

  • catkin_make のROS 2版

(ROS 2 PG類をビルドするためのコマンド)

  • 例 (ビルドしてから実行する)

$ cd ros2_ws

$ colcon build

$ ros2 run “パッケージ名称” “実行名称”

colcon とは? (ROS 2のみ)

ノード とは?

  • ROS/ROS2のプログラムの単位
  • 通信して、他のノードと情報交換を行う

ROS 1/2 のパラメーター機能の違い

  • パラメーター
    • ノード実行中に変更可能な変数
    • 読み書きはサーバーを通じて実施する
  • ROS 1/2のサーバー機能の違い:
    • ROS 1 ・・・ マスターが持つ
    • ROS 2 ・・・ ノードが持つ

別マシンとの接続

  • ROS 1
    • ROS Master を使用して、IPアドレス等を指定しなければ、ならない
  • ROS 2
    • OMGのDDS対応
    • 自動探索できるので、通信しやすい
    • 多様な環境で利用可能

※ OMG: Object Management Group

※ DDS: Data Distribution Service

通信の相違

  • ROS 1/2 両対応
    • Pub & Sub通信 (メッセージを送信して受信する)
    • Service通信 (リスエストを送ると、レスポンスが返る)
    • Action通信 (数種コマンドを送ると、ステータス結果や応答が返る)
  • ROS 1/2 違い
    • 通信方法
    • ROS 1: TCP (一般にWebブラウジングやファイル転送に使われる)
    • ROS 2: UDP (一般にストリーミング等に使われる)
    • ROS 2 ではroscore不要
    • メッセージ型
      • ROS 1: std_msgs::String
      • ROS 2: std_msgs::msgs::String

ROS時刻

  • ROS1
    • ROS時刻はROS::Time
    • 実時刻はROS::WallTime
  • ROS2
    • rclcpp::Timeの1つの型。次から選べる
    • RCL_ROS_TIME : システムクロックをダイレクトに取得する
    • RCL_SYSTEM_TIME : use_sim_timeがtrueならば、/clockトピックから時刻を計算する
    • RCL_STEADY_TIME : HWの周辺機器が絡む時に使う
    • 違うオプションのTime同士の演算を行うとexceptionが起きる

対応OS

  • ROS 1
    • Linux(/Windows)
  • ROS 2
    • Linux、Windows (10のみサポート)、Mac

組み込みシステムでの利用

  • mROS 2
  • 例(ESP 32):
    • パッケージをgitからクローンする
    • 同一NWでの作動が条件
    • IPアドレス等を設定する
    • 基板上のROS 2で、Pub & Sub通信ができる

ROS 1/2 比較

ROS 2で、出来る事

  • 複数のロボット制御にも対応
  • 組み込みプラットフォームに対応
  • リアルタイム制御可能
  • NW品質が、アバウトでよい
  • プログラミング形式が、ある程度、固定
  • 製品化に対応

ROS 2で、出来ない事・課題

  • デバイスを物理的に繋いで、インストールだけすれば動くレベルではない
  • ワークスペースやビルドがCUIベースでGUIでない
    • RTミドルウェアはGUIである
  • マルチOS対応と謳っていても、Linuxが主
  • 計算リソースが少ない状態では、動かない
  • 制御系の、電源ぶつ切り等に、かなり弱い
  • 用途がロボット車両や、せいぜい、アームが主
    • 人間型や、四足歩行型には、標準で対応でない
  • 作ったモノに、高度な判断能力が無い
    • 障害物回避等はできても、状況に合わせた高度な動きは出来ない
  • 標準で、音声入力や音声合成に対応していない
  • 標準で、生成AIを用いた指令は、できない
  • 入出力のI/Fが、ROSに依存している
    • rvizやGazebo位がI/Fであり、それ以外は、独自に作る必要がある
  • スマホやタブレット対応でない
  • 標準で、ブラウザーから、直でプログラム作成や作動等はできない
    • Jupyter Notebookのような事は、できない
  • HWがROS対応でないと動かない
  • 他のIoT機器との連携感が、そんなない
  • 標準でデジタルツイン等に対応していない
  • ロケットや飛行機 等を全て制御できる等のレベルではない

汎用部品によるロボット開発 (例)

車両型ロボットを想定

  • JetsonとRaspberry Piが接続
  • Raspberry PiとArduinoが接続
  • Jetson/RPiと各モーターが接続
  • モーターが車体を進行停止回転
  • LiDARカメラが自己位置推定
  • 4つの測距センサーが物体との位置を測定
  • カメラが前方を記録
  • JetsonにはLiDARカメラが ついている
  • Raspberry Piにはカメラがついている
  • Arduinoには2つの測距センサーがついている

 

  • 耐故障性向上(電源瞬断 等)
  • 低価格化

展示会 等で見て説明聞いても分かる事

詳細設計

必要な物理性能

  • 汎用マイコン基板
    • Raspberry Pi
    • Jetson
    • Arduino
    • ESP 32
    • SPRESENSE
    • STM 32
  • 専用マイコン基板
  • PC

Raspberry Pi とは?

  • イギリスのラズベリーパイ財団が開発した、手のひらサイズの小型コンピューター
  • 小型で、ある程度安価な割に高性能である
  • キーボードやディスプレイと接続可能
  • センサーやNWで、IoT端末化可能

Raspberry Piの種類

  • 最新版は、RPi 5である
  • RPi 4と比較して性能が2倍向上したとの事
  • RPi Zeroという小型版もある (ロボット制御には性能不足)
  • 同じ種類でもRAM容量で、処理速度 等に性能差がある

Raspberry Pi選定で気を付ける事

  • RAM
    • ロボット制御用は最大容量(8GB)確保した方がよい
  • 熱が溜まらないような工夫が必要
    • ヒートシンク
    • ファン
  • 水分や埃に気を付ける
    • 専用ケース等を使う
  • メモリーカードの選定に気を付ける
    • 容量は64GB以上あるとよい (AI用途では更に容量要るが、RPiの性能的に高度化できない)
    • スピードに気を遣う (UHS-I、クラス10あると、よい)
    • 最近、日本製の方が安い? (キオクシアさん EXCERIA は2025/3時点で、アマゾンにて665円程度)

Raspberry Pi (価格)

製品名 日本の実売価格 (2024年) 公式の定価
RPi 5 (8 GB) 約17,500円~ 80ドル
RPi 5 (4 GB) 約13,000円~ 60ドル
RPi 4 (8 GB) 約13,500円~ 75ドル
RPi 4 (4 GB) 約10,000円~ 55ドル
RPi Zero 2 W 約3,000円~ 15ドル
RPi 400 約14,000円~ 70ドル

Raspberry Pi 結論

次の、いずれかを用意するのが、よいのでは?

  • RPi 5 (8GB)、micro SDXC 64GB
  • RPi 4 (8GB)、micro SDXC 64GB

Jetson とは?

  • NVIDIAが作ったエッジコンピューティング環境で駆動するエッジAI能力を持つデバイス
  • GPU搭載 (AI処理に強い)
  • JetPack SDK、Tensor、CUDA等、IoTデバイス開発を高速化する

Jetson の種類

  • Orin      性能重視
  • Xavier
  • TX2
  • Nano       価格重視

Jetson 選定で気を付ける事

  • 性能が、どれ位必要か考える
    • CPUやGPUが、どれ位、必要か?
    • AI抜きであっても、nanoは画像処理中等で固まる
    • Orin かXavier の方が、ロボット制御用途には、よいと思う
  • 費用が、どれ位か考える
    • 価格が高いので、オーバースペックには気を付ける

Jetson (価格)

製品名 日本の実売価格 (2024年) 性能 (CPU/GPU)
Jetson Orin NX 約140,000円 100 TOPS
1024コア Ampere
Jetson Xavier NX 約180,000円 21 TOPS
384コア Volta
Jetson TX2 約93,000円 1.33 TFLOPS
256コア Pascal
Jetson Orin nano 約86,000円 20 TOPS
512コア Ampere
Jetson nano 約40,000円 472 GFLOPS
128コア Maxwell

Jetson 結論

次の、いずれかを用意するのが、よいのでは?

  • Jetson Orin NX
  • Jetson Orin nano

Arduino とは?

  • イタリア製 小型マイコンボード
  • オープンソース・ハードウェア
  • 電子工作によく使われる
  • C言語ベースのプログラミング可能
  • 安価である
  • 純正品と互換品(廉価版)の性能は同じ

Arduino の種類

  • UNO (Rev. 4 / Rev. 3)
    • 14個のデジタルI/Oピン(6つはPWM出力として使用可能)、6つのアナログ入力ピン、水晶発振器、USB接続、電源ジャック、ICSPヘッダ、リセットボタンを備えています
    • R4は、CPU 48 MHz、RAM 256 KB。R3は、CPU 16 MHz、RAM 32 KB
  • Micro
    • デジタルとアナログの入出力端子の切り替えが可能。デジタル入出力は最大24本、アナログ入力は最大12本まで使用可能
  • Nano → Nano Every → Nano 33 BLE
    • Microより小型。GPIO 20本。Every: 性能向上、低価格。33 BLE: 性能向上、Bluetooth、IMU搭載
  • Mega
    • UNOのメモリやI/Oを大幅に増強したモデル(GPIO 70本)

Arduino 選定で気を付ける事

  • 性能が、どれ位必要か考える
    • GPIOが何本あるか?CPU性能 等
  • 大きさが、どれ位か考える
  • 費用が、どれ位か考える
    • 低価格である

Arduino 価格

製品名 価格 性能 (ピン・大きさ)
Arduino UNO 3,190円 (R4; Minima) 4,640円 (R4; WiFi) 3,630円 (R3) デジタルI/Oピン×14、アナログI/Oピン×6、DAC×1、PWMピン×6、外部割込み2,3
幅68.85mm × 長さ53.34mm
Arduino Micro 3,560円 LEDピン×13、デジタルI/Oピン×20、アナログ入力ピン×12、PWMピン×7
幅18mm × 長さ48mm
Arduino Nano 3,560円 LEDピン×13、デジタルI/Oピン×14、アナログI/Oピン×8、PWM×6
幅18mm × 長さ45mm
Arduino Nano every 2,360円 LEDピン×13、デジタルI/Oピン×14、アナログI/Oピン×8、PWM×6
幅18mm × 長さ45mm
Arduino Nano 33 BLE 5,500円 LEDピン×13、デジタルI/Oピン×14、アナログI/Oピン×8、PWM×6
幅18mm × 長さ45mm
Arduino Mega 2560 Rev3 6,920円 デジタルI/Oピン×54 (15はPWM出力)、アナログ入力ピン×16
幅53.3mm × 長さ101.52mm

Arduino 結論

次に気を付ける

  • 大きさ
  • GPIO (ピンヘッダ)数 等

ESP 32 とは?

  • 上海にあるEspressif Systems社製のマイコン
  • 32ビット
  • Arduino 互換でプログラムが組める
  • WiFi接続が得意
  • かなり安価である

ESP 32 の種類

  • ESP 32 DevKit
    • 標準タイプ
  • ESP Duino-32
    • ソケットタイプ
  • ESP 32 WiFi Kit
    • 液晶付きである
  • ESP 32-CAM
    • カメラ搭載タイプである

ESP 32 選定で気を付ける事

次に気を付ける

  • 技適対応かどうか
    • 技術基準適合証明 (電波法に基づく)
    • 技適マーク無しでは、電波法に違反となる
  • 種類
    • カメラ付きか?液晶付きか?

ESP 32 (価格)

製品名 価格 性能 (ピン・大きさ)
ESP 32 Dev Kit 1,200円 標準
ESP Duino-32 1,200円 大型 (ピン直刺し)
ESP 32 WiFi Kit 3,200円 液晶画面搭載
ESP 32-CAM 2,000円 小型カメラ搭載

ESP 32 結論

次に気を付ける

  • 付加機能 (カメラ、液晶 等)
  • 大きさ

SPRESENSE とは?

  • ソニーさん のマイコン
  • 32ビット
  • Arduino 互換でプログラムが組める
  • 他の基板との組み合わせができる
  • 高機能 (LTE、カメラ、GNSS対応可)

SPRESENSE の種類

  • メインボード
  • GNSSボード
  • カメラボード
  • 拡張ボード

SPRESENSE 選定で気を付ける事

次に気を付ける

  • どのボードを使うか?
    • メインボードのみでよいか?
    • 拡張ボードを取り付けるか? (Arduino互換ソケット、LTE使用、カメラ取付、GNSS使用)

SPRESENSE 価格

製品名 価格
メインボード 6,050円
LTE拡張ボード 10,240円
拡張ボード 3,850円
GNSSボード 8,740円

SPRESENSE 結論

次に気を付ける

  • 付加機能 (LTE、GNSS 等)
  • 価格

STM 32

  • スイス本社のSTマイクロエレクトロニクスのマイコン
  • 32ビットのマイコン
  • Arduinoより低価格
  • Arduino IDE対応

STM 32 選定で気を付ける事

  • 次に気を付ける
  • 開発できる人はいるか?
    • 日本で、扱える技術者が、多くは無さそう
  • 開発に必要な情報は十分か? (特に日本語)

STM 32 価格

製品名 価格
STM32 Nucleo Board
STM32H503RB
3,300円

専用マイコン

  • 汎用ではなく、ロボット固有のマイコンである
  • GPIOを付ける場合が多い
    •  次を接続する
    • サーボモーター
    • センサー
    • その他PLC等外部機器 (PLC: Programmable Logic Controller)
  • 電源を取る (家庭用電源・電池)
  • USB接続可能にする場合がある
  • 外部とLANケーブル等で接続できるようにする場合がある

PC

  • LANケーブルやUSB接続で、PLCに接続して信号を送る
    • PLCが受け付ける信号をPC側から送信する
    • 複雑な動作がPCからのプログラム呼び出しで簡単に動作可能にする
  • PCに汎用のGPIO端子を取り付け信号を送る
  • PCから汎用マイコン等を経由して信号を送る