ECE497 Telepresence Robot
Embedded Linux Class by Mark A. Yoder
The basic idea of this project is to create a mobile platform that would allow a user to control it as well as visually and verbally interact with the world around the robot.
For our proof of concept design we were able to get a robot controllable via web page that displays video feed, drives with two motors, and can take text input to display to an LCD. The robot is powered by an attached 9V Battery and has two DC motors with accompanying encoders.
We were not able to get a video display on the robot to work, or audio input/output. We also encountered issues with the range of wireless connection and using the attached battery versus 12V outlet, as both of these options slow down operation, especially when used in tandem.
Overall, we have designed a neat proof of concept and gained large amounts of experience working with pipes and flask to run programs over web applets, and we are satisfied with the proof of concept produced. Given more time, we are confident that we could implement more advanced systems.
For the purpose of this protect we are using a small scale robot chassis with a mounted PS eye camera and LCD all controlled by a Beadle-bone Blue.
Steps to install program
- get the files from github 
- go into rc_test_motors and run the Makefile
- go into flask and run the install
- follow the instruction avlible here  making sure to leave the port as the defult (8081)
- Navigate to the downloaded Github repository, ECE497_Telepresence
- Use the commmand ./run.sh to begin the operation
- Navigate to 22.214.171.124:5000, you should see the control buttons, Video Feed, and LCD text input
- In web applet, use forward, back, left, and right to control the wheel, and stop to halt the robot. Type text into the enter bar and press echo to update the LCD Display
To exit the program
- Press the end button to halt the program, then ctrl-c out of both terminals of the t-mux
- Run the command ./close.sh to stop the camera
- Communication to web applet via flask.
- DC Motor drive.
- Update enabled LCD Display integrated into the Web Applet
- All systems work either independently or together.
Theory of Operation
The program makes use Flask to run the web server on the bone which the host will connect to. If the user connects to the correct port they will be greeted by a webpage that has buttons to control the moment of the robot as well as a video feed from the robot which is streamed using motion. When the user clicks a button a signal is placed in to a pipe that has a c program listening on. When the correct codes are sent the c code controls the motors on the robot moving it around. The c code will also call shell scripts to update the LCD display. The camera is handled in the set-up operation so that while the camera is operational, the video feed is forwarded to a port, which is displayed on the website.
- Research and implement video feed
- Proof of concept website design
- Hardware Integration
- DC Motor operation
- Research into flask and pipes
- Final website design
- Software integration
- Testing and Documentation
We have come up with many different idea as the taking this project farther below are some of those ideas.
- Get two way audio
- Get two way video
- Scale up robot chassis to be usable in public places
- Fine tune movement controls to be more manageable
- Joystick controlled motion
- Fix lag when using battery power
- Increase operational range
- Clean up starting and stopping the program.
Over all we are happy with where we are leaving this project, although we wish we had a week or two more to continue on with our work. With more time we would have tried to get two way audio and video to fully work as this was a goal we set for our selves early on but found out we did not have to time to get it work. We also found that the 9 volt battery we used lead to a substantial slow down in communication speed so a true 12 volt power system would be beneficial. Also we with we had longer range with wireless communication as well as a lab or homework covering it.
Embedded Linux Class by Mark A. Yoder