Ubuntu 24.04でリアルタイムカーネルをマスターする:ロボティクスとプロオーディオのための「武器」

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

クイックスタート:5分でリアルタイムカーネルを有効化する

Ubuntu 24.04 LTSで即座に応答するシステムが必要ですか?もうカーネルを手動でビルドする必要はありません。CanonicalはUbuntu ProにRTパッケージを統合しており、個人利用であれば最大5台のマシンまで無料で利用可能です。

ステップ1:トークンの取得
ubuntu.com/pro にアクセスしてアカウントを登録します。その後、ダッシュボード(Dashboard)にあるトークンコードをコピーしてください。

ステップ2:コマンドの実行

# パッケージリストの更新
sudo apt update && sudo apt upgrade -y

# マシンをUbuntu Proに紐付け(<TOKEN>を自身のコードに置き換えてください)
sudo pro attach <TOKEN>

# リアルタイムカーネルを有効化
sudo pro enable realtime-kernel

ステップ3:結果の確認

sudo reboot

# 再起動後、カーネルのバージョンを確認
uname -a

結果に PREEMPT_RT というサフィックスが表示されれば、システムは正式にリアルタイムモードに切り替わっています。


なぜプロジェクトにリアルタイムカーネルが必要なのか?

以前、ROS2を使用したロボットアームのプログラミングで問題に直面したことがあります。シミュレーション上のアルゴリズムは完璧でしたが、実機で動かすと時々ロボットが「カクついたり」、わずかに振動したりしました。原因はコードではなく、デフォルトの Generic Kernel にありました。

通常のカーネルは、マルチタスクの円滑さを優先します。ブラウザ、音楽、バックグラウンドプロセス間でリソースのバランスを取ろうとします。これにより、非常に大きな Jitter(遅延の変動)が発生し、時には数十ミリ秒に達することもあります。

PREEMPT_RT を使用すると、優先度の高いタスクが即座にCPUに「割り込む」権利を持ちます。これにより、明らかな違いが生まれます:

  • ロボティクス (ROS2): 制御ループ(Control Loops)を1000Hzのような高周波数で安定して維持できます。
  • 産業・CNC: ステッピングモーターをマイクロ秒(µs)単位の時間精度で制御できます。
  • オーディオ (Pro Audio): 低バッファで仮想楽器を処理する際のポップノイズやクリックノイズを完全に排除します。

高度な設定:実用的なパフォーマンスの最適化

新しいカーネルをインストールするのは始まりに過ぎません。ソフトウェアが実際に優先権を活用できるようにするには、システムをさらに微調整する必要があります。

1. リアルタイム優先権(Real-time Priorities)の設定

Linuxはデフォルトで、一般ユーザーによる深い干渉を制限しています。limits.conf ファイルを編集して、ユーザーに「VIP」権限を付与する必要があります。

sudo nano /etc/security/limits.conf

ファイルの末尾に以下の行を追加します(<username> を自身のユーザー名に置き換えてください):

<username> - rtprio 99
<username> - memlock unlimited
<username> - nice -20

2. Cyclictestによるレイテンシの測定

推測に頼らず、実際の数値を確認しましょう。cyclictest ツールを使えば、カーネルがどれほど効率的に動作しているかがわかります。

sudo apt install rt-tests

# 全CPUコアで1分間の負荷テストを実行
sudo cyclictest --mlockall --priority=80 --interval=200 --distance=0 --threads=$(nproc) --loops=60000

Max カラムに注目してください。最適化されたUbuntu 24.04では、この数値は通常50µs未満に収まります。もしこの数値が数千まで跳ね上がる場合は、ドライバやハードウェアがボトルネックになっている可能性があります。

実戦経験:陥りやすい「落とし穴」を避ける

Intel NUCから産業用PCまで、数十のシステムに導入してきた経験から、3つの重要な注意点を挙げます。

Nvidiaドライバ:リアルタイムの天敵

Nvidiaのプロプライエタリドライバは、しばしば PREEMPT_RT と激しく競合します。起動時にシステムがフリーズ(Kernel Panic)する場合は、Nvidiaドライバをアンインストールし、nouveau に切り替えてください。ロボティクスのタスクでは、Intelの統合グラフィックスを使用するのがより安全な選択です。

Wi-Fiの電力管理

Wi-Fiカードの省電力機能は、予期せぬレイテンシの急増を引き起こす可能性があります。産業環境ではLANケーブルを優先してください。Wi-Fiを使用する必要がある場合は、以下のコマンドでパワーセーブモードをオフにします:

sudo iw dev wlan0 set power_save off

アップデート戦略

Ubuntu Proは apt upgrade を実行した際にRTカーネルを自動的に更新します。しかし、本番環境でシステムが安定して動作している場合は、すぐに更新を急がないでください。サードパーティのモジュール(CANバスドライバなど)にエラーが出ないか、予備機で十分にテストしてください。

まとめ

Ubuntu 24.04がリアルタイムカーネルを公式にサポートしたことは、技術コミュニティにとって大きな転換点です。プロセスは今や「Proに接続 -> RTを有効化 -> Limitsを設定」という極めてシンプルなものになりました。

レイテンシの測定やドライバの設定で困ったことがあれば、下のコメント欄で質問してください。

Share: