The objective of our project was to create an Ipod application capable of interacting with the robot car through Linux and the DSP. We realized pretty early that the Ipod was essentially acting as the Visual Basic program we created earlier in the year and we hoped we wouldn’t have to change too much with the Linux/DSP code.
The first step of the app was creating the basic layout. There wasn’t a lot that went into this and we used a variety of different online tutorials to familiarize ourselves with XCode (This is the Apple program used to create apps. It uses Objective C.)
From here, our next step was to be able to send data back and forth between the robot and the app. The other Ipod group found this tutorial (http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server) that described creating a chat room. We were able to use parts of this tutorial to allow the app to send and receive data using the TCPIP sockets just like the visual basic app. The only modification we made with the Linux code for VBDSPComm was changing the start and stop bits when sending data. Dan used char(253) and char(255) for his code that was given to us. XCode doesn’t use the extended ASCII able and these characters didn’t exist. We used char(66) and char(67).
At this point, we could’ve taken the project in many different directions. We decided we were going to use the built in accelerometer to create a controller that also had a map on the screen to show the robot’s position relative to its surroundings. We sent the x and y accelerometer values to our DSP code from the app. These values indicate the tilt of the Ipod for whoever is holding it. In code composer, we scaled these values and sent them to vref and turn. The Ipod could now control the robot as demonstrated in the video below. The control felt surprisingly intuitive and most people could pick up the Ipod for the first time and control it without error. For the map, we decided to always keep the robot’s position in the exact center. Instead of moving the car relative to its surroundings, we had the surrounding objects move relative to the car that was stuck in the center. This means we could place the car anywhere, not look at it, and hopefully be able to navigate and avoid the obstacles using only the map on the Ipod. In order to create this map, we sent over 11 equally spaced LADAR values. We associated a “blue box” on the app that represented where an object was with the LADAR value. Shown below is a screenshot of the app.
Figure 1 - The Illinois I symbol represents the car's location. The blue dots represent the LADAR data (obstacles). The four values on the left represent the x position, y position, x accelerometer tilt, and y accelerometer tilt.
Video of the application in action.