The concept of the project is to create a digital pet dog that provides companionship to individuals who desire the presence of a pet but may not have the means or capacity to care for a real one. The digital dog will be projected onto a whiteboard using a small projector, allowing for a more lively and interactive experience. Users can play with the digital dog by throwing a ball, which the dog will retrieve.
Through preparatory research, I further clarified what a successful interactive experience is. I settled my project direction according to the template of successful interactive experiences in my mind — that are games. I took the game “League of Legends” as an example. In my opinion, the key to the success of this game is that players can have different experiences based on their knowledge and proficiency with different characters and skills. Although designing a complex game like the League of Legends is impossible for us, it provided inspiration for what an interactive game should be.
Our primary thought was to make a digital dog that connects to different flex sensors, and dogs will have different reactions to different flex sensors. But it lacks interaction between this project and its users. So after talking to Professor Andy, we changed this project to a throw-and-catch game. Though the idea and the game seem to be simple, the companionship provided by this digital pet can significantly impact one’s mood.
In the process of making this project, I made great breakthroughs in the coding part. I had been blank in coding, but with the guidance from LA and Professor Andy, and also the intuitive tutorial video sent by Professor Andy, I gradually learned how to read codes and revise them. When the code operated as I wish, the sense of achievement fulfilled me.
We started with the example code of the vector function that allows a big ball follows the track of the small ball. Then, we used the dist function recommended by Professor Andy to achieve the effect that as soon as the small ball was caught, both balls would go back to the starting point. After that, we replaced the big ball with an image of a corgi. This is our primary product.
In the user testing session, our project was still raw. The background was totally dark, the corgi was just a static image, the flex sensor was just stuck on the table, and so on. But Professor Andy still greatly encouraged us and praised our progress and also provided us precious suggestions like revising the throwing part to a more lively pattern as if users are literally throwing a ball, and changing the background into a piece of lawn that can make the project more immersive.
After receiving numerous valuable suggestions, we implemented some exciting changes to enhance our project’s appeal. Firstly, we transformed the corgi image into an adorable cartoon version, adding a charming touch. Additionally, we replaced the background with a lush lawn, further enhancing its visual appeal. To inject more excitement, we incorporated a drifting motion for the corgi while it chases the ball. We affixed the Arduino box and the flex sensor to a charging panel suspended from the ceiling. This setup effectively isolates the Arduino circuit from our displayed project. Moreover, by simply slapping the flex sensor, we can simulate the action of throwing a ball, triggering its launch promptly upon detection of movement. Our aim is to replicate the experience of physically throwing a ball, creating a realistic illusion. These achievements mark significant progress. However, there remains room for improvement, particularly in the physical design. We could have made the physical design more delicate by adding some cardboard or using 3D printing to decorate it instead of just taping it on the charging panel.
Throughout the development process, I gained valuable coding skills and achieved significant progress. By implementing suggestions, we improved the project’s appeal, including transforming the corgi image, adding a lush lawn background, and simulating a realistic throwing motion. Overall, I learned a great deal from this experience.
Here is my documentation link (including code)
https://drive.google.com/drive/folders/1MUnXWLfNwIHZjitRHfPVoGcDT9i_4yUo?usp=sharing
Works – Cited
Processing example code — Vectors — AccelerationWithVectors
“dist().” Processing, processing.org/reference/dist_.html.