JetsonNanoでROSを自動起動する方法

JetsonNanoでROSを自動起動する方法

今回はJetsonNanoでROSを自動起動する方法について説明していきます。

JetsonNanoにROSを入れ、例えばロボットを動かすときなどに毎回ターミナルでROSを起動するのは面倒かと思います。

そこで今回はJetsonNanoの電源を入れたらROSも自動で起動する方法を説明していきます。

ROSCOREのサービスを登録する

まずは必要なものをインストールします。

次にホームディレクトリで「.bash_profile」を作成して開きます。

「.bash_profile」が開いたら以下の内容を書き込んで保存します。「.bashrc」は、端末でログインしたときに読み込まれるbashの設定ファイルです。自動起動するときには読み込まれないので「.bash_profile」が読み込まれたら「.bashrc」も読み込まれるようにします。

「setup.bash」はROSのワークスペースを作成したときにできるファイルです。こちらは自分の環境に合わせてパスを変更する必要があります。

つぎに「systemd」のサービスを追加していきます。今回はこちらの機能を利用してROSを起動していきます。以下を実行して「roscore.service」ファイルを作成して開きます。

ファイルには以下の内容を書き込みます。今回はネットワークを利用しないので一部コメントアウトしています。

保存して閉じます。次にこのサービスを有効にしておきます。まずはデーモンをリロードしておきます。

次にROSCOREサービスを有効にしておきます。

サービスを開始します。

これでROSCOREが起動します。少々待ってからステータスを確認します。

active(running)と表示されていたらroscoreがちゃんと起動しています。これでJetsonNanoを再起動したときにroscoreも起動するようになります。

ROSのlaunchファイルを用意する

次にROSのlaunchファイルのほうも自動で実行されるようにしていきます。まずはROSで実行するlaunchファイルを事前に用意しておきます。

launchファイルを作成する方法についてはこちらの記事が参考になります。

まとめて起動するやり方

launchファイルをサービスとして登録する

launchファイルが用意できたらサービスとして登録していきます。今回は「rover.service」という名前のファイルを用意して登録します。

ファイルが開いたら以下の内容を書き込みます。こちらはroscoreが起動してから実行してほしいので「After=roscore.service」と「Requires=roscore.service」を定義しておきます。

また今回は「jetbot_ros」がパッケージ名、「roslaunch jetbot_ros rover.launch」がlaunchファイルを実行するときのコマンドとなっていますので、こちらは実行したいlaunchファイルに合わせて変更する必要があります。編集が完了したら保存します。

サービスを追加したらデーモンを再起動します。

サービスを有効にします。

サービスを開始します。

多少待ったらステータスを確認します。active(running)になってたらサービスが起動できたことが確認できます。

これでJetsonNanoを再起動するとroscoreとlaunchファイルが自動で実行されるようになります。

ターミナルは起動しないので、例えばトピックとして登録している場合は以下のコマンドでトピックが表示されているか確認したらいいと思います。

サービスを停止、無効にする

上記までのサービスが不要になってきたら以下の手順を実行します。

まず、サービスを停止したいときは以下を実行します。

次にサービスを無効にしたいときは以下を実行します。

これでサービスが無効になりましたので、いつも通りターミナルからroscoreとlaunchファイルを実行することもできます。

参考記事

今回はこちらの記事を参考にさせていただきました。ありがとうございます。

ROSを自動起動する

 

以上、今回は「JetsonNanoでROSを自動起動する方法」について説明させていただきました。

1つ星 この記事が役に立ったらいいねをお願いします!
読み込み中...



AIカテゴリの最新記事