1. ブログ
  2. 記事

Alex Cattle
29 October 2019

Ubuntu Coreを搭載したロボットアームが Niryoから登場


Niryoがすごい6軸ロボットアーム「Niryo One」を開発しました。3Dプリント部品で構成され、価格も手頃なこのロボットは、主に教育用途向けです。完全にオープンソースで、ROSで動作します。ハード面ではArduinoおよびRaspberry Pi 3(RP3)を搭載しています。このロボットについて知ったとき、私たちはこう思いました。Ubuntu CoreとSnapを使うのにぴったり!

ロボットが手に入るとまず、Niryo Studioを使ってみました。これはNiryoが開発したツールで、ロボットを動かしたり、シーケンスを学習させて保存するなど、さまざまなことが可能です。ロボットは、Pythonや、GoogleのBlockyベースのグラフィカルエディターでプログラムできます。Niryo Studioは、手軽に楽しくロボットに親しむための優れたツールです。


Niryo Studio の Blocky エディター

次に、ロボットを制御するROSスタックでSnapの作成に取りかかりました。SnapcraftがROSをサポートしているため、難しいタスクではありません。catkinプラグインでほとんど処理できます。ただし、重要性の高いプロジェクトにはよくあることですが、Niryoスタックにもいくつか対処すべき問題があります。

  • WiringPiというライブラリを使用するため、Snapの作成には追加パーツが必要です。
  • RPi3でコンパイルするとデバイスのメモリーが不足してGCCがクラッシュしました。Niryoでは既知の問題であり、ビルド時に2つのコアを使用することで解決します(-j2 -l2 makeオプションの使用)。残念ながら、Snapcraftのcatkinプラグインを使用する場合はそこまでの制御はできません。しかし、Snapcraftは非常に拡張性が高いため、Snapcraftに付属するcatkinプラグイン関連をコピーし、必要な修正を加えればローカルプラグインを作成できます。私は作成したcatkin-niryoプラグインで-j2 -l2オプションをビルドコマンドに追加しました。これでGCCのクラッシュは回避できます。
  • 変更しなければならないハードコーディングされたパスがたくさんありました。また、不足していた依存関係も追加し、その他の細かいコード修正も行いました。完成したパッチはこちらにあります。
  • Snap内の構成ファイルもいくつかコピーする必要がありました。
  • 最後に、Node.jsパッケージをビルドに含める必要があります。Node.jsプラグインが効果的に機能したため、問題はありませんでした。

これらすべての作業を経て、RPi3デバイスでSnapを構築できました。作成方法はGitHubのniryo_snap repoにあります。ビルドの簡単な手順も含まれています。Snap Storeではabeato-niryo-oneという名前でリリースしました。このSnapは現時点では制限(confine)されていないため、–devmodeオプションでインストールする必要があります。

続いて、RPi3用にUbuntu CoreイメージをダウンロードしてSDカードに書き込みました。ロボットのRPi3に挿入する前に、UARTシリアルポートに取り付けた別のRPi3を使用してconsole-confを実行しました。このツールでネットワークと、イメージで使用するUbuntu Oneユーザーを設定しました。Nyrioスタックは初期設定を簡単にするためにWiFi APを設定しようとしますが、Snapでは現時点ではサポートされていないため、console-confによるネットワーク設定により、後でロボットに接続する方法が決まります。

この時点で、snapdはおそらくカーネルSnapとコアSnapを更新します。これによりシステムが数回再起動し、それが終われば更新完了です。その後、First Stage Bootloaderのファイルをいくつか修正する必要があります。RPi3がすべてのセンサーとモーターを制御できるようにするために、Niryo OneではデフォルトのGPIO設定の変更が必要となるためです。最初に、/boot/uboot/cmdline.txtを編集します。console=ttyAMA0,115200を削除し、plymouth.ignore-serial-consolesを追加して、以下のようなコードにします。

dwc_otg.lpm_enable=0 console=tty0 elevator=deadline rng_core.default_quality=700 plymouth.ignore-serial-consoles

次に、/boot/uboot/config.txtの後に次の行を追加します。

…

# For niryo

init_uart_clock=16000000

dtparam=i2c1=on

dtparam=uart0=on

次に、必要なSnapをインストールして接続します。

snap install network-manager

snap install –devmode –beta abeato-niryo-one

snap connect abeato-niryo-one:network-manager network-manager

このように簡単なコマンドでフルROSスタックのインストールと構成が完了です!


動作中のロボット

最後に、ロボットにSDカードを挿入し、ブザー音が鳴るまで待ちます。音が鳴れば、通常の方法でNiryo Studioを使用して接続可能になります。これで元のイメージを使用するのと同じ方法でロボットを操作できるだけでなく、Ubuntu Coreのさまざまな機能(最小フットプリント、アトミックアップデート、制限アプリケーション、アプリストアなど)が使用可能になります。

さらに、Snapをx86 PCにインストールしてシミュレーションモードで使用できるというメリットもあります。サービスを停止して、以下のコマンドでシミュレーションを開始するだけです。

snap install –devmode –beta abeato-niryo-one

snap stop –disable abeato-niryo-one

sudo abeato-niryo-one.simulation

それからNiryo Studioを実行して127.0.0.1に接続します。とても簡単です。ROSアーカイブを追加して多数のdebパッケージを手動でインストールする必要はありません。

ご覧のとおり、ROS DebianベースのプロジェクトからUbuntu CoreおよびSnapには簡単に移行でき、大きなメリットがあります。ほんの少しの手間で、更新が簡単、セキュリティ優先、10年間の更新など、多くの機能を手に入れましょう!


関連記事

Canonical、Ubuntu Core 26を発表

Ubuntu Core 26は正確なLinuxビルド、最適化されたOTA更新、ライブでのカーネルのパッチ適用、ハードウェア支援保護機能の拡張を採用し、ミッションクリティカルな運用に対応。 Canonicalは本日、Ubuntu Core 26の一般提供を発表しました。Ubuntu Core...

ワットあたりのトークン数だけではない:Ubuntu 26.04 LTSをAIに利用するメリット

TpW(Tokens per Watt)、つまり消費電力1ワットあたりの生成トークン数は、企業のCEO、AI責任者、インフラストラクチャ担当者が最も重視する指標です。GPUクラスターの運用には莫大なコストがかかるため、投資から可能な限り大きな価値を引き出すことが重要なのです。...

Ubuntu Proとは?

Ubuntu Proは、オープンソースのセキュリティ、サポート、コンプライアンスに対応したCanonicalの包括的なサブスクリプションです。ここでは、15年間のセキュリティメンテナンス、24時間サポート、自動堅牢化ツールなど、Ubuntu ProサブスクリプションがIT管理者に提供するメリットの数々をご紹介します。 Ubuntu...

Ubuntu 16.04 LTSのUbuntu Pro標準Expanded Security Maintenanceが終了。この後はどうする?

Ubuntu 16.04 LTS(Xenial Xerus)の5年間のExpanded Security Maintenance(ESM)が2026年4月に終了しました。16.04をまだお使いのお客様は、引き続きセキュリティとコンプライアンスを保つため、必ずサポートステータスを更新してください。 サポートのオプション...