https://haoqchen.site/2018/04/28/ROS-node-init/
#include " ROS / ros.h " の#include <signal.hに> 無効 MySigintHandler(int型SIG) { // ここで終了する前に保存するメインデータ、メモリスクラブ、他のノードが動作知らせる ROS_INFO(" シャットダウンを!" ) ; ROS ::シャットダウン(); } int型のmain(int型 ARGC、チャー ** ARGV){ // ROS ::のinit()/ * * ROSの* ::のinit()関数とargv ARGCはITとニーズを見るSO CANを実行 *あなたが再マッピングを取りのinit()のさまざまなバージョンAを使用して再マッピングCAN ROSし、任意の名前はATコマンドラインでであった場合Remapping(再マッピング)。プログラマのために*引数 直接*、ほとんどのコマンドラインプログラムのために、argcとargvのを渡すと、最も簡単でIS ITを行う*ウェイ。THIRDで、引数のinitへの()の名前にあります。ノード * *あなたがROSの一つ::使用して、他の前のinit(のバージョン)しなければならないことでコール * ROSのシステムの一部。 * / ROS ::のinit(argcのは、argvの、「ist_nodeは」); // ノードを初期化します名前は同じ名前がROSシステムを表示された場合、前のノードが自動的に閉じられます、最前線でなければなりません // 同じ名前を与えられずに複数のノードが必要な場合は、ROSを追加することができます:: init_options :: initの中AnonymousNameパラメータ / / このパラメータは、各ノードに固有の元のノード名の後ろにいくつかのランダムな番号を追加します //::のinit ROS(のargc、argvの、 "my_node_name"、ROS :: :: AnonymousName init_options); // ROS :: NodeHandle / * * * NodeHandleは、ROSシステムでとのコミュニケーションへの主要アクセスポイントであります。 *まずNodeHandleに建設完全ウィルによって、このノードを初期化し、そして最後に ウィルROSによって破壊* NodeHandle ::でノード閉鎖使用するシャットダウン()を呼び出します。 * / ROS :: NodeHandle h_node; //は、initはノードを初期化されるハンドルノードを取得し、これが開始されますノードは // 自分自身のノードを管理するために、あなたはノードと最後までオブジェクトのライフサイクルを管理するために開始したくない場合は、ROSは(開始::可能)とROS ::シャットダウン()。 ::レートloop_rate ROS(1 ); // 1秒に1回ループ、 //まずCAN NodeHandleが作成またはROSされた時に前を使用しない::スタート()が呼び出されました。 // シャットダウン 信号(SIGINT、MySigintHandlerを); // 元のCtrl + C割り込み機能を上書きし、元はROS呼び出します::シャットダウン() // あなたがノードに関連するサブスクリプション、出版、サービスコール、およびサービス閉じ 、サーバーのプロセス終了 // RUNステータス int型秒= 0 ; しばらく(ROS ::(OK)を&& ++秒< 5 ){ loop_rate.sleep (); ROS_INFO(" ROSはOKです!" ); ROS :: spinOnce(); } // ROS :: OK()は、次のイベントが発生に代わって、falseを返します //1.SIGINTシャットダウンと呼ばれます(Ctrl-C)トリガさ:: ROSは() // 2 ROSは、同じ名前の別のネットワークノードから追い出された //3.ros ::シャットダウン()呼び出しは、プログラムの別の部分である // 4.ノード:: NodeHandlesが破壊されているすべてのROS // ROS :: isShuttingDown():ROS一度::シャットダウン()と呼ばれている(注記真に戻り、)を呼び出すし始め、代わりの仕上げを呼び出して // )は、一般的に推奨されるROS :: [OK](、あなたは特別な事情:: isShuttingDown ROS()を使用することができ ROS_INFO(「ノードの出口」); のprintf(" プロセスの終了]を\ N- " ); 戻り 0 ; }