A social robot that greatly reduces the time and energy physicians have to spend retrieving and delivering items for patients. Erica starts at a specified location (inventory cabinet) and when something is ordered for a patient (i.e. blankets, water, snacks, etc), she autonomously drives through the ED into an appropriate location in the patient’s room, and then automatically dispenses the requested item.
There are three pairs of files in this directory. We had to map our environment three times to end up with one that was accurate and usable. final_cse_map.pgm
and final_cse_map.yaml
are the final versions of the map we ended up using.
This represents the main workspace that is present on the onboard Turtlebot laptop (catkin_ws
). However, we did not include any of the required library directories or other directories that were present, only the ROS programs we were actively running. In workspace/src/simple_navigation_goals/src
, there are two files: simple_navigation_goals.cpp
and navigate_to_patient_bed.cpp
. The first file is based on the ROS Sending Simple Goals tutorial, and the second file is the one we used and ran for our project. It was based on the tutorial file and modified with the following: custom coordinates (to the patient bed), the ability to play a sound at arrival (when goal is reached), and outputting a 0 or 1 (failure/success) of reaching the specified destination.
This is the startup automation and systems integration bash script. It launches the ROS navigation/move_base nodes with the specified final_cse_map.yaml
from turtlebot_custom_maps
and it launches sound_play in order to play audio later on at arrival. Finally, it runs the navigate_to_patiend_bed
executable (file described above), redirects the output (0 or 1) to a file and saves this output in a bash scripting variable, and finally checks the variable value. If the goal was reached (and the output was 1), then it will send a character to the Serial Monitor in order to trigger the arrival alerts and vending (this is the method of communication between ROS and the Arduino).
This directory contains the file Arrival_Script.ino
. This file is constantly reading from the Serial Monitor and checking for characters. As mentioned above, a character is only sent to the Serial Monitor from the start_nav.sh
script when the robot successfully reaches its goal (when a 1 is output from the ROS program). When a character is then read from the Serial Monitor, this triggers the LEDs to change from blue to green and then starts the vending mechanism.
-
Unplug laptop charger
-
Unplug Turtlebot charger
-
Place laptop on 2nd Turtlebot plate and make sure necessary Turtlebot wires are plugged into laptop
-
Make sure necessary hardware (Arduino) is plugged into laptop. Servo should be attached to 5V power, Ground and Pin 10. The LED strip should be attached to 5V power, Ground, and Pin 9.
-
Turn on robot
-
Open Turtlebot laptop and login
-
Make sure it's connected to UCSD protected
-
Startup (only once): Follow instructions on this Turtlebot Setup and Getting Started document about checking the IP address,
.bashrc
file, etc, and make sure to run the following two commands:roscore
androslaunch turtlebot_bringup minimal.launch
-
After these two commands are successfully running, then
cd ~/catkin_ws
andcatkin_make
-
Make sure robot has enough space to move + not collide with anything and nothing is blocking sensors
-
(in
~/catkin_ws
directory) Type./start_nav.sh
-
This will automatically start the program and will automatically close when it finished successfully or unsuccessfully so you can run it again to test again once the program finishes (just make sure it's in position again!)
- Ctrl-C all running processes
- Unplug arduino cables and robot-laptop cables
- Turn off Turtlebot
- Close laptop
- Take laptop out of Turtlebot, put into cabinet, plug into laptop charger
- Plug in Turtlebot
ROS Creating Package Tutorial
Turtlebot Apps
ROS SLAM Map Tutorial
Creating a Map (learn.turtlebot.com)
ROS Autonomous Navigation Tutorial
Autonomous Navigation (learn.turtlebot.com)
ROS Sending Simple Goals Tutorial
ROS Sound Play
Gaitech Map-Based Navigation
Sending Multiple Goals to Robot (answer.ros.org)
Serial Input Basics (forum.arduino.cc)
Bash Serial I/O and Arduino (stackoverflow.com)