1
/
5

デスクトップにROSのショートカットを作ろう

こんにちは TechMagic ロボット担当 但馬です。

今回は、ROSのプログラムの起動をデスクトップショートカットにする方法を紹介します。


弊社では、ロボットの試作や製品開発にROS(Robot Operating System)を使っています。
ROSは開発者にとっては非常に便利に使える反面、Linuxやコマンドラインになじみのない人には、プログラムを起動することさえ難しく感じることがあります。

たとえばROSのチュートリアルの複数のロボットシミュレータ(turtlesim)を起動するには、

1. ターミナルを立ち上げて

2. 環境設定ファイル(setup.bash)を読み込み

3. 以下のコマンドを打ち込む必要があります

$ roslaunch turtlesim multisim.launch

この一連の作業をLinuxを触ったことのない人に説明することを想像してみてください…けっこう大変です。

また、開発者でも、毎回同じコマンドを入力するのは非効率に感じると思います。デスクトップショートカットで起動できるようにしましょう。

やり方

まず、コマンドラインに打ち込む内容をシェルスクリプトに記述しておきます。
以下のようなファイル(turtlesim.sh)を作成します。

#!/bin/sh
roslaunch turtlesim multisim.launch –screen

ちなみに–screenオプションは、launchファイルで起動されたROSのログを画面に出力するもので、デバッグのときには入れておくと色々表示されるようになって便利です。実行権限をつけるのを忘れないようにしてください。

つぎに、デスクトップに以下のようなショートカットファイルを記述します。

[Desktop Entry]
Name=TurtleSim
Terminal=true
Exec=bash -c “source Codes/temp_ws/devel/setup.bash; ./turtlesim.sh”
Icon=/usr/share/icons/Humanity/apps/64/access.svg
Type=Application

“Terminal=true”とするとターミナルが起動します。
指定しておいたほうが良いでしょう。プログラムを終了する際は、ターミナルでCtrl-Cを押して終了します。

GUIプログラムの場合、ウィンドウの「閉じる」ボタンを押すだけではroscoreなどのプログラムが正しく終了しないことに注意してください。roslaunchのデバッグ出力もターミナルに出力されます。

Execには起動するコマンドを設定します。”bash -c”でシェルのコマンドを起動しています。sourceコマンドでROSの環境設定のためのsetup.bashを読み込んでから、ROS関連のコマンドが起動できます。
ここでは、先程作成したシェルスクリプトを起動しています。

ここにroslaunchなどのコマンドを直接記述しても良いのですが、roslaunchの引数などを変更したい場合などがあるので、経験上はシェルスクリプトにしておくほうが便利でした。

Iconにはショートカットへのアイコンの画像ファイルを設定します。お好きな画像をアイコンにしましょう。

ちょっとハマりやすいのは、ExecやIconなどファイルパスを指定する必要があるものは、絶対パスで記述する必要がある点です。
ただし”bash -c”の引数になっている部分はbashで実行されるコマンドなので、ホームディレクトリからの相対パスでも記述できます。

最後に、デスクトップのアイコンを右クリックして”Allow Launching”を選択します。


アイコンをダブルクリックをするとプログラムが起動します。


これで誰でもロボットが起動できるようになりますね!

■参考サイト

TechMagicブログはホームページでも更新中!

TechMagicでは食産業の未来を創造する仲間を募集しています。
募集ポジションの確認やオフィス見学、カジュアル面談の希望など、お気軽にHPからご連絡ください。
■Recruitページ
■Facebook

Invitation from TechMagic株式会社
If this story triggered your interest, have a chat with the team?
TechMagic株式会社's job postings
2 Likes
2 Likes

Weekly ranking

Show other rankings
Like TechMagic 採用担当's Story
Let TechMagic 採用担当's company know you're interested in their content