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のプライバシーに関するお知らせ個人情報保護ポリシー

関連記事

常時接続フリートにおけるOTAとテレメトリの管理

私のブログ記事を過去2年間読んでくださっている方は、自動車業界がおそらく今日の最も革新的な業界であることをご存知でしょう。実際、世界でも極めて価値の高い企業が、電気自動車(EV)、自動運転(AD)、人工知能(AI)に携わっています。他の革新と同様、この革新にも一連の課題が伴います。 私は、理解や習得が最も難しいテクノロジーが、必ずしも最も複雑に見えるテクノロジーとは限らないことに気づきました。OTA(Over-The-Air)更新とフリートのテレメトリの管理は、今日の自動車業界において最も有望なテクノロジーですが、複雑に見えるテクノロジーでもあります。 OTAの隠れた力 OTA更新は、車両の価値を根本的に覆す可能性を持っています。リモートでのソフトウェアとファームウェアの […]

リアルタイムLinuxに関するCTO向けガイド

リアルタイムシステムおよびそのユースケースと仕組みを理解する 最近の予測によると、2025年には世界のデータの30%近くがリアルタイム処理を必要とします。制御システム、産業用エッジサーバー、PLC、ロボット、ドローンなどを駆動する産業用PCとリアルタイム機能への需要は高まる一方です。ワークロードによって必要なリアルタイムパフォーマンスやサイクルタイムは異なりますが、リアルタイムコンピューティングは今後もますます普及するというのがアナリストの見解です。 また、ソフトウェアがハードウェアデバイスや周辺機器を綿密にサポートすることで、Linuxカーネルを介したリアルタイムコンピューティングが活躍しています。カーネルにリアルタイム機能を持たせる多くのアプローチの中で、PREEMP […]

Canonical Jobs – Linuxエンジニア

Linuxフィールドエンジニア IoT分野における当社の主力製品、Ubuntu Coreはユニークな存在です。最高の信頼性、セキュリティ、フットプリントを実現するため、Linuxを再発明したものと言えます。当社の顧客は、自動車、市販電子機器、医療機器、産業システム、ロボティクス、ゲートウェイなど、さまざまな業界にわたりますが、厳しい品質とセキュリティの要件を満たすよう迫られているという点では共通しています。 日本市場での急速な展開に対応するため、当社はデバイス部門のフィールドエンジニアチームの拡大を検討しています。この重要なポジションは、新しいテクノロジーを迅速に習得し、多くの業界の最先端でお客様のソリューション構築を支援することが求められるため、能力ある候補者はキャリア […]