ROSノードが自動的に起動します

ROSプロジェクトの開発では、コンピュータの電源を入れた後に一部のノードを自動的に実行できることを認識したいことがよくあります。これには、Ubuntuでの自己起動の問題が含まれます。ROSノードの起動は、他のスクリプトの自動操作とは異なります。rc.localを作成して使用するだけではできません。これは、その時点ではbash環境が開始されていないため、ROS環境をロードできず、ROSノードの開始に失敗するためです。

したがって、ROSノードを起動するには他の方法を使用する必要があります。UbuntuでROSノードを起動するには2つの方法があります。1つ目は、ubuntuに付属する起動アプリケーションを使用して起動スクリプトを設定する方法、もう1つは使用する方法です。 ROSに含まれる自動起動サービスrobot_upstartの実現。

1つのスタートアップアプリケーション

最初の方法は、ubuntuに付属する起動アプリケーションを使用して起動スクリプトを設定する方法で、現時点ではbash環境が有効です。

最初に新しいmytest.shファイルを作成し、次の内容[6]を入力します。これは、タートルボットノードと小さなタートルを開始する例です

#! /bin/bash
### BEGIN INIT INFO
# Provides:          xxxx.com
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: mylaunch service
# Description:       mylaunch service test
### END INIT INFO

gnome-terminal -x bash -c "source /opt/ros/kinetic/setup.bash;roslaunch turtlebot_bringup minimal.launch" #新建终端启动节点
sleep 8 #等待8秒
gnome-terminal -x bash -c "source /opt/ros/kinetic/setup.bash;rosrun turtlesim turtlesim_node" &  
wait
exit 0

その中で、gnome-terminal -x bash -cは、新しいbashターミナルを作成し、cに続くステートメントを実行することを意味します。コマンドは ';;'
区切られます!注:それがubuntu 18.04システム[6]の場合、gnome-terminal -x bash- cはgnome-terminal-bash -cに書き直す必要があります

次に、mytest.shファイルの権限を変更します

sudo chmod 777 mytest.sh

ここで、自分で作成した.shファイルが実行できるかどうかをテストするのが最善です

./mytest.sh

ubuntu 1604で「スタートアップアプリケーション」を検索すると、設定ソフトウェアが見つかり
ここに画像の説明を挿入
ます
ここに画像の説明を挿入
新しく作成したmytest.shファイルを選択します。ここでは、自動ログインするように現在のアカウントを設定する必要があります

ここに画像の説明を挿入
再起動後、自動的にデスクトップ、次にrosノードに入ります。注(テスト中に、このメソッドはアカウントに自動的にログインするように設定する必要があることがわかりました。これは、デスクトップに入って設定した起動スクリプトを実行した後である必要があります)

上記の方法は、機器をデバッグする場合に適しています。製品やプロジェクトでコンピュータアカウントのパスワードを他人に知られたくない場合は、上記の方法は無効です。現時点では、ROSを使用できます。サービスを開始するには、ROSパッケージを自己開始状態に設定し、コンピューターが起動後に指定されたROSパッケージを自動的に開始するようにします。次に、開始する必要があるすべてのノードを起動ファイルにカプセル化し、このパッケージに書き込みます。

2 ROS robot_upstartインストールサービス

ステップ1:インストール環境

sudo apt-get install ros-kinetic-robot-upstart

ステップ2:ROSワークスペースにauto_startという名前のパッケージを作成する

catkin_create_pkg auto_start std_msgs roscpp rospy

step3:auto_startパッケージの下に新しい起動ディレクトリを作成し、起動フォルダーにauto_start.launchという名前の新しいファイルを作成し、内容を書き込みます。

<launch>
<include file="/opt/ros/kinetic/share/turtlebot_bringup/launch/minimal.launch"/>

<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node" output="screen">
</node>
</launch>

ステップ4:Xiaoqiangホストにauto_start.launchファイルを自動起動サービスとして登録する

a。まず、以前に登録したスタートアップサービスを停止して削除します。スタートアップを初めてインストールする場合は、直接bにスキップしてください。

sudo service auto stop //这里注意auto为注册时候使用的名称
rosrun robot_upstart uninstall auto 

b。スタートアップスタートアップサービスを再登録します。

rosrun robot_upstart install auto_start/launch/auto_start.launch
sudo systemctl daemon-reload && sudo systemctl start auto

現時点では、起動後、新しいターミナルを直接作成し、rostopicリストを使用してメッセージリストを表示しています。使用している環境は、Ubuntu1604 + ROS KバージョンとUbuntu1804 Mバージョンです。

参照

[1] Xiaoqiang Robot:https://doc.bwbot.org/en/books-online/xq-manual/topic/27.html

ランニングの問題を抱えている友人のために、電子メールを送るか、cenruping @ vip.qq.comについて話し合うためにメッセージを残してください

おすすめ

転載: blog.csdn.net/crp997576280/article/details/108272412