Phases of K-9’s development, K-1 through to K-9 v1.0.
1. Make it possible for Rpi to accessed remotely. The only cable connection should be the power until inductive charging is complete.
* If my home router is unavailable, try to connect to my phone's WiFi hotspot - this is a good fall back in that K-9 needs to follow the phone anyway and if WiFi is unavailable, at least my phone’s signal is pretty solid and provides a hotspot.
* Have K-9 set up his own ad-hoc network. However, I don’t know if you can do both. Can it still connect to outside wifi?
2. Build a chassis that you can mount the Rpi and servos to.
3. Connect Rpi to servos mounted on the chassis, and demonstrate ability of Rpi to control the servos.
* NOTE: Already an issue with the tracks. Switching to Mecanum wheels.
* Mecanum wheels can move an object in all eight cardinal directions as well as spin in place. They will provide total freedom of movement and better traction.
* Write software that will allow speed and direction controls to the servo-driven wheels.
* Create a remote control web app - this should be a web front-end on a lightweight web server running on K-9.
* Use an Arduino Mega for servo control
4. Video camera and side display support.
* Single front-facing camera mounted in head.
* Provide a way to shine a headlamp for darkness? (Maybe a pen light instead a laser pointer for the nose?)
* Primary purpose is for visual detection of objects, and maybe faces?
* Secondary purpose is for streaming security video feed or even as a live-streaming video chat.
* Provide a side display panel to bring up local diagnostic info and direct input (touchscreen)
* DO NOT ALLOW any kind of command access. (Command and control can ONLY be done over secure WiFi channel to a secure account.) We must not allow anyone with physical access to K-9 to be able to alter him from this display.
5. Batteries and changing circuitry. Need one battery for Rpi/camera/touchscreen and one for all servos, sensors, lights, etc. Because of power draw of combined Rpi, camera, and touchscreen may be > 1A, we may need one battery for Rpi & camera and a separate battery for the touchscreen.
* Since we need to determine current draw of Rpi, camera, and Touchscreen together, I moved their installation phase up before this one.
* Use Qi Charging Pads so that the batteries can be charged wirelessly.
* The charging receivers will be placed on a side panel will “dock” next to the pads aligned on a wall.
6. Add microphone and speakers for accepting voice control commands and responses.
* Voice recognition of user.
* Microphone doubles as a “tail”.
* Query processing, to be able to answer questions and perform commands.
* If online, K-9 can query the hive mind (aka Google) to answer questions like “OK Google” (or Siri or Alexa or Cortana…)
7. Add Sensors and be able to use them to observe and map his environment.
* Use an Arduino to get data from the sensors
* Install ROS/Johnny-five/MQTT if desired
* ROS does the bulk of the communication and can prioritize sensor feedback and determine actions.
* Can we do this without ROS? Perhaps with MQTT. I would prefer to have MQTT be a secondary queue, to communicate with IoT/openHAB Things, but still use ROS for K-9’s controls.
* Also, ROS interfaces with OpenCV, the camera view application, so it has that advantage.
* proximity detection and obstacle avoidance.
* SONAR scanning
* Room mapping to learn where movement is possible, where bed is.
* Object and user recognition via video inputs.
* Ramp/cliff detection - allow it to go up or down small angle, but if angle is to steep, or if at edge of cliff/stairs, it must stop
* Altitude detection - specifically detect if it has been lifted or set down
8. Track Master/Mistress to be able to freely follow us, find us. We need to be able to track K-9 also via GPS.
* find and follow my cellphone via bluetooth/Wifi
* K-9 must also be able to find his bed/charging station. Rather than use a tag at this location, it is better for K-9 to “remember” the GPS location of it’s bed. However, it may be quite necessary to have a tag on his bed because its location is not permanent. If we have to move the bed, K-9 will need to find it. So unless he can visually recognize it, he’ll need GPS to find it. If K-9 cannot find it, then K-9 should find Master/Mistress and alert us, or send a message to us to alert us.
9. True “K-9” autonomous personality with remote conversation control.
* At this point, it should be close to acting like the character from Doctor Who.
* It will answer to “K-9”. This is his “wake word”.
* Shell mockup to allow the robot to look like the classic robot character from Doctor Who. This can be done anywhere along the way, and should be just as phased. Additionally, adding “flashy bits” like the rotating ears, flashing lights, laser nose, control pad, are all to be done as they can be afforded and installed without sacrificing true functionality.
* A miniature projector would be awesome, to display recorded video, or online movies, warnings, stats, etc. Purely for cool factor.