Ubuntu Coreを搭載したロボットアームが Niryoから登場
by Alex Cattle on 29 October 2019

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年間の更新など、多くの機能を手に入れましょう!
ニュースレターのサインアップ
関連記事
Japan IT Week 2025 にCanonicalが出展!
最新のAIoT & セキュリティソリューションを体験しよう 日本最大級のIT展示会 Japan IT Week が、2025年4月23日(水)~25日(金)に東京ビッグサイトで開催されます。Canonicalは、今年も IoT & Edge Computing Expo に出展し、最新の AIoT および セキュリティソリューション をご紹介します。 イベント情報 開催日時: 2025年4月23日(水)~25日(金)会場: 東京ビッグサイトCanonicalブース: 26-14 | IoT・エッジコンピューティング EXPO来場登録: こちらから事前登録ライブデモ事前予約: 事前予約 Canonicalブースの見どころ Canonicalブースでは、以下の最新ソリューショ […]
IoTデバイス管理とは
IoTデバイス管理とは、IoTデバイスのデプロイ、モニター、メンテナンスに使用するプロセスや手順を意味します。企業がIoTの運用規模を拡大するとともに、しっかりしたデバイス管理アプローチでデバイス群を安全かつ効率的に運用することが必須となります。 世界中でコネクテッドデバイスが普及し(予測では2024年には188億台にのぼる)、IoTデバイス管理が複雑化しています。そして悪意ある者もそこに目をつけています。2023年には、平均して組織あたり1週間に60件ものIoT攻撃がありました。これはデバイス自体、そしてデバイスと他のデバイスや管理システムとの接続が、大きな攻撃対象領域を作るためです。 このブログ記事では、可視性、相互運用性、セキュリティという3つの目的に重点を置き、I […]
リアルタイムOSはあなたのビジネスに適していますか?
自動化は社会のほぼすべての分野に広がり、自動車や通信から工業生産まで、さまざまな業界でリアルタイムに対応したオペレーティングシステム(OS)が重要になってきています。リアルタイムオペレーティングシステム(RTOS)は、正確で確定的な応答を保証し、安全性とパフォーマンスに不可欠な厳しいタイミング要件を満たします。しかし、ZephyrやFreeRTOSのような従来のRTOSはビジネスにとって正しい選択肢なのでしょうか? それとも、リアルタイム機能を備えたLinuxソリューションの方がもっとニーズに合っているのでしょうか? Canonicalの最新のホワイトペーパーではこれらの疑問について解説します。このブログではその要点を説明しましょう。 システムを「リアルタイム」にするもの […]