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
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
The navTo node is to set the coordinates of a specific point in the map for the robot to navigate to
authenticate_person
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
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
This node acts like the approach_person
node, but now the topic to publish the arm id is approach_arm
.
send_ready_signal
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
This fallback node will try to request for human assistance, in case the robotic arm has failed to load/unload the samples.