The projects are officially complete. This has been quite the accomplishment for these 10 Microsoft Student Partners and we hope everyone has enjoyed the journey they've taken us, and their Sphero robots, on. Throughout this last month we've witnessed the MSPs build some fun and exciting projects, we've seen them run into challenges and roll through them, and we've hopefully started a pilot program that will continue to grow and expand into the future. Congratulations to all the students involved for contributing and we look forward to next year's MSP program and more fun things to come!
Also, the MSPs were so awesome throughout the pilot that GeekWire, a local tech blog, wrote an article about them - so make sure and check that out and share it with your friends!
Let's check out Group B's final video showcases!
Technology Toolkit: Sphero, Azure, Windows Phone
Hackster.io
Github
Project Recap: In the end my Sphero can be controlled remotely from anywhere in the world. You can even use Cortana voice commands from your phone or your Microsoft Band. From the beginning I came up with the idea to control a robot from another room and the ability for the robot to navigate it remotely. I began to think of the best way to send and receive the data, and Azure was the best solution. With lightning fast read write operations and real-time analytics Azure storage is the best way to go. So of the challenges that I faced actually had to do with the trigonometry, typically in math when a vector pointed at 0 degrees only the X value would change, whereas with the Sphero, the Y value changes when rolled at 0 degrees. So your Sphero would roll at its complementary angle, and since I implemented a simple PID theory (proportion, integral, derivative) as the ball got farther from its destination it would speed up!
Eventually I would love to use the native Windows SDK from Sphero once they have this finalized, this would cut down on lag and give the ability for people with just a Windows Phone to control the Sphero. The data could still be sent to Azure for analytics and possibly Machine Learning!
Technology Toolkit: Sphero, XB1 Controller
Hackster.io
Github
Project Recap: Sphero Drive, while being in a less favorable state than I’d prefer, has been a really fun project. At the start, I had zero experience with Node.js and only very basic experience with JavaScript. My main challenge came down to Xbox One controller support in Node.js and managing my time. Unfortunately there just
isn’t enough support quite yet for the XB1 controller to work well with the project – it is detected and it sends input, but not the right input. Given the opportunity to expand on this project more, I would most likely develop a Node.js library that supports the XB1 controller. For now, keyboard input exists and it will also log the interpreted input of the XB1 controller.
Project Showcase:
Technology Toolkit: Sphero, Visual Studio, Node.js Tools for Visual Studio
Hackster.io
Github
Project Recap: I can now generate an, albeit, basic floor plan by driving around my Sphero. Everything from learning the Sphero SDK to Node.js has been an absolute blast. I would say the majority of the problems I had stemmed from issues with blue tooth connectivity. The moment I generated a floor plan using the Sphero was definitely my favorite moment as I got to see the project I have been working on actually create something. Using the Sphero's odometer I was able to keep a track of the distance traveled and used the previous key press to determine the direction of movement and combined that all to put together a floor plan.
Project Showcase: In the video below I am showing off the various functions that I have created as well as the final floor plan that gets generated when I am finished and hit the generate floor plan button.
Tech Toolkit: Sphero, Sphero SDK, Windows Phone Dev Kit, Visual Studio
Hackster.io
Github
Project Recap: Teaching Ax some new moves was not quite as simple as I imagined. When I first played the Sphero, I was thrilled to discover that it had a 3 axis accelerometer and a 3 axis gyro. As a robotics enthusiast, it wasn’t long before my mind drifted toward inertial navigation systems (INS). Unfortunately, there were many other things drifting, which made it extraordinarily difficult to integrate accelerometer and gyro data into velocities and distances. Within seconds the Sphero’s velocity readings were so far off that at rest the velocity would still read over 10m/s and climbing. Distance, being the second integration, was even further off.
So, how could I determine the accuracy of a move and give useful feedback? I tried simply calculating percent error point by point. However, the accelerometer values drift about 100 units (1/4096 G) even at rest. So, I eventually figured that I could simply allow the user to specify a margin of error and use that number to set a range that would determine accuracy.
Despite some of the not-so-trivial challenges, I really enjoyed being part of this pilot. I still want to solve that INS problem, and I recently found how to create html apps that include JavaScript for Windows Phones in Visual Studio Community. So, I think I’ll be playing with Ax a little more this summer. Overall this project was fantastic, but my favorite part is actually more of a quote from the kickoff call.:
“We’re all Beta testers at heart” – Matt Secord, MSP Program Manager
Project Showcase: Sphero Trainer can record moves and asses the accuracy of a move being performed.
Technology Toolkit: Sphero 2.0 Robotic Ball, Xbox 360 Gamepad, Xbox 360 Wireless Gaming Receiver for Windows (required only if using a wireless Gamepad), Windows Computer with Bluetooth
Hackster.io
Github
Project Recap: I was able to achieve my goal of controlling the Sphero using an Xbox 360 Gamepad by making a C# frontend that talks to the Node.js backend. The official apps for controlling the Sphero make the Sphero roll in the direction that the virtual joystick is pressed. Sphero360 is different - it makes it function more like a racing game or a remote control car with turning and acceleration.
I was a bit nervous at the kick-off of the project, as I hadn’t worked with Node.js before this. After getting familiar with Node.js and the Orbotix SDK for Sphero, all of the pieces started to fit together.
My biggest challenge was figuring out how to get the Gamepad to work with Node.js. There were some ways to read Gamepad input with Node.js, but they didn’t give me all the information I needed. I overcame this by making a C# frontend that gets the information from the Gamepad using the Microsoft XNA Framework, and then sending the information to the Node.js backend.
My favorite moment during the MSP+Sphero pilot was when my program malfunctioned! I made a typo in some code, and the Sphero rolled away on its own. It was pretty difficult to catch it!
I plan on continuing to add on to Sphero360. While it is finished and does what I set out to do, I have some ideas to make it even better! I also plan on making the interface more user friendly.
Project Showcase: Here’s a video that shows how to use Sphero360, and an obstacle course to show it off!
Thanks again, and congrats MSPs, for a successful and enjoyable journey.
Roll On