EE4-60: Human Centered Robotics [Imperial College London]. 2018-2019.
MailBot is an internal mail delivery service for the Electrical and Electronic Engineering department at Imperial College London. Sending a parcel to the office of your academic tutor has never been easier.
- Bluetooth Node - movement/catkin_ws/src/mailbot/scripts/
BTApp.py: Connects to tablet via bluetooth. Receives string of locations to visit and passes these to TSP solver on /deliveryLocations. Listens for /atLocation and notifies tablet. When a delivery is complete it posts to /deliveryComplete, to notify the queue. Sends serial commands to the Arduino to unlock locker latches. - Arduino Script - hardware/Arduino-latch-code/
latch.ino: Loaded to the Arduino. When it receives a value via serial it opens the corresponding locker - TSP Solver - movement/catkin_ws/src/mailbot/scripts/
tspSolver.py: Takes a string containing a list of locations e.g. 507 508 510 from topic /deliveryLocations and posts a solved route based on an input cost matrix 'Weights.csv' to /solvedPaths. Other solvers tested are included in EarlyTspTesting. - Goal Queue - movement/catkin_ws/src/mailbot/scripts/
locationQueueMoveBase.py: Takes a list of locations from /solvedPaths and passes the first location as a goal (MoveBaseGoal) to the navigation stack as an action. When it receives a result it will post that location to /atLocation. It then waits for a /deliveryComplete post. - Navigation Stack: Consists of many packages, transforms, config files. Takes a map, odom data, kinect sensor info etc. and a goal from Goal Queue and outputs twist messages to Rosaria to control the robot.
- RosAria: Framework used to interact with the P3AT to provide it with twist messages and such.
Android application created for the Lenovo Tab 2 A-10 70F (Android Version:6), on Android Studio (3.1).
The Android Studio Project folder is: MailBot/interface/mailbot. This can be used to export an .apk for installation.
MailBot/interface/Bluetooth: cotains some old bluetooth testing scripts.
The MailBot/movement/ folder contains the catkin workspace catkin_ws.
The system used was Ubuntu 16.04 running ROS1 (Kinetic).
apt-getrelated installs (detailed in :AnyInstalls.odt):- sudo apt-get install ros-kinetic-rviz-plugin-tutorials [Teleop plugin for rviz]
- sudo apt-get install ros-kinetic-p2os-urdf [Robot model]
- sudo apt-get install ros-kinetic-rtabmap-ros [RTAB-MAP]
- Other 'git clone'installed ROS packages (incl. commit hash) used:
depthimage_to_laserscan[git clone -b indigo-devel --single-branch https://github.com/ros-perception/depthimage_to_laserscan.git] [git checkout f135fbd5f60dc7b]iai_kinect2[git clone -b master --single-branch https://github.com/code-iai/iai_kinect2.git] [git checkout 0e2c5f63134a076606bb7996] NOTE: Not required for current version, this is the Kinect 2 specific driveropenni_camera[git clone -b indigo-devel --single-branch https://github.com/ros-drivers/openni_camera.git] [git checkout e898a]pointcloud_to_laserscan[git clone -b indigo-devel --single-branch https://github.com/ros-perception/pointcloud_to_laserscan.git] [git checkout ead0804]rgbd_launch[git clone -b indigo-devel --single-branch https://github.com/ros-drivers/rgbd_launch.git] [git checkout 2123238]rosaria[git clone -b master --single-branch https://github.com/amor-ros-pkg/rosaria.git] [git checkout aa8d5f7]rosaria_client[git clone -b master --single-branch https://github.com/pengtang/rosaria_client.git] [git checkout 31bf5c0]timed_roslaunch[git clone -b master --single-branch https://github.com/MoriKen254/timed_roslaunch.git] [git checkout 5283d6f]
install_iai_kinect2.shis for XBOX Kinect 2 required dependencies, this is no longer relevant as the XBOX Kinect 1 is now used.
- All scripts located in the
catkin_ws/src/mailbot/scripts/folder were set to executable using:sudo chmod +x <script_name>.py rtabmap_mailbot.launchshould be run beforehand to generate a map using the Kinect camera (and odometry provided by RosAria).- The
mailboot.launchfile starts up the major components of the system:boot.launch: Initialises: RosAria (driver for P3-AT) at specific USB port, includes the URDF model for the P3-AT. Establishes a static transform for the location of the sonar sensors.kinectBoot.launch: Initialises the Kinect 1. Additionally, the bottom of this file intialiases a static transform for the location of the camera.nav2.launch: Initialises RTAB-Map and sensor related transforms- The
.dbspecified in argdatabase_pathis generated beforehand usingrtabmap_mailbot.launch
- The
move_base.launch: Initialises AMCL andbtApp.launch: Initialises the ROS side of bluetooth communicationstspSolver: Receives delivery locations by bluetooth and figures out the best path based onweights.csv.- NOTE: The location of
weights.csvshould be changed in the tspSolver script, variable name:csvPath weights.csv: A lower-left triangular matrix that specifies the 'cost' of going to a given location. Each row/column would correspond to a defined room. e.g. (0,0) = ( start room, end room -1 ) time to go from Room 0 to Room 1- Uses https://github.com/dmishin/tsp-solver
- NOTE: The location of
locationQueueMoveBase: Associates delivery locations to co-ordinates that are sent to the ROS Navigation Stack. Ensures goals are sent at the appropriate time by communicating with the interface.
teleop.launch- keyboard based teleoperation.
rplidar.launch,laserscan_config.launch&view_rplidar.launch: initialises LIDAR and filters out certain laser data.gazeboMail.launch: Spawns Gazebo model of P3-ATrtabMap-fakeOdom.launch: Uses visual odometry for RTAB-Map
Bill of Materials: MailBot/hardware/BoM.pdf
Latches Arduino code: MailBot/hardware/Arduino-latch-code/
Latches Schematic: MailBot/hardware/Latch_Setup.png
Laser Cutter Design Files: MailBot/hardware/Locker Laser Cutting Design files

