Lab Samples Logistics - luricl/roboMAX_BTs GitHub Wiki

Lab Samples Logistics

Briefly speaking, in this mission the robot should transport lab samples from the patients room to the laboratory. You can see the full description as follows:

Lab samples should be transported from patient floors to the laboratory. A nurse responsible for collecting a sample can request a delivery to the laboratory. Each sample before collection is identified with a barcode. The nurse inserts data about the sample in a track system. Samples are transported in secure locked drawers. In the laboratory, the sample can be picked by a robotic arm or laboratory personnel. Only authorized personnel or specific robots in specific locations should be able to open the locked drawers. The robotic arm picks up samples, scans the barcode in each sample, sorts, and loads the samples into the entry-module of the analysis machines. Information about where and when a given sample was picked should be logged securely. The time between sample collection and laboratory delivery should be tracked to be sure that it goes according to laboratory protocols.

BT

The following nodes are used for implementing this mission

approach_person

approach_person

In this node, the id of the person to be approached is published to the topic approach_person. The id will be stored in the blackboard as person_id.

The id can be published in a separate terminal as follows:

ros2 topic pub /approach_person std_msgs/msg/String "data: '12345'"

navTo

navTo

The navTo node is to set the coordinates of a specific point in the map for the robot to navigate to

authenticate_person

image

This node will read the specified port from the blackboard and check it against the authorized people in the database. The id of the authenticated person will be publish by the specified number of times to the topic authenticated_person.

open_drawer and wait_for_deposit

open_drawer

Both nodes work in collaboration to manipulate the drawers of the robot. At the execution of the open_drawer node, a signal must be published. After the signal is received, the drawers will keep open until a new signal to tell the robot that the sample is loaded/unloaded is received or the waiting time is finished.

approach_arm

image

This node acts like the approach_person node, but now the topic to publish the arm id is approach_arm.

send_ready_signal

image

This node publishes a message when the robot has arrived to the location of the robotic arm and is ready to load/unload the samples.

request_human_assistance

image

This fallback node will try to request for human assistance, in case the robotic arm has failed to load/unload the samples.

The big picture

image