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年間の更新など、多くの機能を手に入れましょう!

ニュースレターのサインアップ

Ubuntuニュースレターの配信登録

お客様が購読登録を行われる場合、以下の条件に同意されたことになります。Canonicalのプライバシーに関するお知らせ個人情報保護ポリシー

関連記事

CanonicalがUbuntu Core 24を発表

Ubuntu Core(改変不可)が、IoTデバイスメーカー向けの新しい工場インストールシステム、AIoT対応のGPUサポート、LandscapeとMicrosoft Azure IoT Edgeによるデバイス管理統合機能を導入。 ロンドン、2024年6月4日 Canonicalは本日、12年間の長期サポート(LTS)を保証したUbuntu Core 24の一般提供を発表しました。Ubuntuの改変不可フレーバーであるUbuntu Core 24は、すべてのシステムコンポーネントとシステム自体をコンテナ群にまとめ、カーネルによる厳密な隔離、高度なマネージドコンポーネント統合、信頼性の高いOTA更新、フェイルセーフロールバックにより、インテリジェントなエッジ/IoTアプリケ […]

IoTデバイス管理の簡素化:Ubuntu CoreデバイスをLandscapeに追加する方法

Landscapeは、ほぼCanonicalの設立当初から製品リストに存在します。管理者はLandscapeにより、単一の集中型ポータルからデスクトップとサーバーのインスタンスを管理できます。Landscape Serverの最新リリース(23.10)では、Landscapeでsnapパッケージを管理する機能が導入されました。また、CanonicalのSnap Storeで入手できるLandscape Client snapパッケージのベータ版では、Ubuntu CoreベースのデバイスをLandscape環境に追加できます。 Landscapeは、組織のUbuntu環境全体にわたるリモートのフリート管理サービスを提供し、ソフトウェアのバージョンと設定の管理、セキュリティ […]

Canonical、Landscape 24.04 LTSを公開

12年間のサポートに対応するLandscape 24.04 LTSでは、新しいシステム管理ウェブポータル/APIにsnapおよびリポジトリ管理機能を追加しました。 Canonicalは本日、Landscapeの最初のLTSリリースを発表しました。Landscape 24.04 LTSにはバージョン管理されたAPI、アクセシビリティとパフォーマンスに配慮した新しいウェブポータル、直感的なソフトウェア配信管理機能が搭載されています。Landscape 24.04 LTSは、Landscape ServerとLandscape Clientで構成されます。モダナイズされたバックエンドとウェブポータルが搭載されているため、エンジニアリングチームは効率的に作業を行い、パッチや新機能 […]