4 つの車輪を持つデバイスの制御ノードを実装しています。これまでのところ、次のノードがあります。
TALKER:
--Publishes messages for movement of vehicle
LISTENER:
--Listens to messages for movement of vehicle and controls vehicle directly
これら 2 つの作品間の通信と私の唯一の問題は、車両の制御不能な動きを防ぐためにどちらかがシャットダウンした場合にどうするかということです。ros::isShuttingDown()
LISTENER を呼び出して、いつ殺されようとしているのかを検出します。
ただし、TALKER がシャットダウンされた場合、LISTENER は TALKER から受信した最後のメッセージに従って車両を動かし続けます。最初はros::isShuttingDown()
、最終的な「停止」メッセージを LISTENER に送信するために、TALKER でも使用しようとしましたが、ノードがシャットダウンすると、通信ができないようです。
したがって、ノード TALKER がまだ生きているかどうか (または新しいメッセージがまだ受信されているかどうか) を LISTENER 内でチェックする方法を探しています。
ノード(この場合はTALKER)がまだ生きているかどうかを確認する方法についてのアイデアはありますか?または、最後の ROS メッセージが受信されてからの経過時間を検出する簡単な方法はありますか?