MESSAGES QUEUES Group 05
WHAT'S A MESSAGE? Camera Node Processing Node
WHY A MESSAGE QUEUE? Camera Node Message Queue Processing Node
WHY A MESSAGE QUEUE? Camera Node Message Queue Processing Node
TODAY Introduction Messages in general Queue states Memory usage Priorities Messages in ROS
Queue Control Block QCB Memory (System Pool or Private Buffers) Sending Task Waiting List Queue Name/ID Receiving Task Waiting List Task Task Task Task Tail Queue Length Head Queue Element Queue Created (msgs = 0) Message Delivered (msgs = 0) Message Delivered (msgs = msgs-1) DEFINING A QUEUE Message Delivered (msgs = msgs-1) Empty Not Empty Full Message Arrived (msgs = 1) Message Arrived (msgs = Queue Length) Real Time Concepts for Embedded Systems - Qing li et. al.
Tail Queue Length Head Queue Element Queue Created (msgs = 0) Message Delivered (msgs = 0) Message Delivered (msgs = msgs-1) Message Delivered (msgs = msgs-1) Empty Not Empty Full Message Arrived (msgs = 1) Message Arrived (msgs = msgs+1) Message Arrived (msgs = Queue Length) tsendingtask treceivingtask Message 1 QUEUE STATES Message Message 1 1 1 st copy 2 nd copy Sending task s memory area Message queue s memory area Receiving task s Memory area Real Time Concepts for Embedded Systems - Qing li et. al.
tsendingtask treceivingtask Message 1 Message 1 Message 1 Sending tasks memory area Message queues memory area Receiving tasks Memory area MEMORY USAGE Real Time Concepts for Embedded Systems - Qing li et. al.
Message Queue Receiving Task Waiting List FIFO Msg 2 Msg 1 Msg 3 Message Queue Receiving Task Waiting List LIFO Msg 1 Msg 2 Msg 3 Sending Task Waiting List Message Queue Receiving Task Waiting List Task 3 Med. Task 2 Low Task 1 Med. Real Time Concepts for Embedded Systems - Qing li et. al. Task 4
Sending Task Waiting List Message Queue Receiving Task Waiting List FIFO Task 3 Med. Task 2 Low Task 1 Med. Task 4 High Sending Task Task Waiting Waiting List List Message Message Queue Queue Receiving Receiving Task Task Waiting Waiting List List Priority Task 1 Med. Task 3 Med. Task Task 22 Low Low Task 1 Med. Task 4 High Real Time Concepts for Embedded Systems - Qing li et. al.
TODAY Introduction Messages in general Queue states Memory usage Priorities Messages in ROS
WHAT S A MESSAGE IN ROS? LaserScan Matcher /Odom base_controller ActionHandler /Odom
WHAT S A MESSAGE IN ROS? LaserScan Matcher /Odom Subscriber base_controller Publisher ActionHandler /Odom Subscriber
WHAT S A MESSAGE IN ROS? LaserScan Matcher Queue /Odom Queue Queue Queue Buffer ActionHandler Queue /Odom base_controller
WHAT S A MESSAGE IN ROS? base_controller template<class message_type> ros::publisher advertise(const std::string& topic, uint32_t queue_size); LaserScan Matcher ros::subscriber sub = nh.subscribe("topic", 1, callback); http://mirror.umd.edu/roswiki/roscpp(2f)overview(2f)publishers(20)and(20)subscribers.html
DEFINING A MESSAGE #sequence ID uint32 seq # * stamp.secs # * stamp.nsecs time stamp # 0: no frame # 1: global frame string frame_id #content int64 order float64 amount http://www.ros.org/wiki/msg
SERVICES IN ROS LaserScan Matcher /Odom base_controller ActionHandler /Odom
SERVICES IN ROS LaserScan Matcher /Odom Subscriber base_controller Publisher ActionHandler /Odom Subscriber
DEFINING A SERVICE Request #request string orders --- --- Response #response int64 order float64 amount
SUMMARY Messages are used for communication between nodes Queues store messages temporarily ROS nodes communicate over topics Bilateral communcation via services
Fabien Bruning Yanick Douven Joost Groenen Luuk Mouton Ramon Wijnands