Thanks To Mark over at www.mastincrosbie.com for creating this incredible project and providing the information. Also Thanks to Xander for providing the community with drivers to use the mentioned sensors in ROBOTC.
You might remember the original Lego Street View Car I built in April. It was very popular at the Google Zeitgeist event earlier this year.
I wanted to re-build the car to only use the Lego Mindstorms NXT motors. I was also keen to make it look more….car-like. The result, after 4 months of experimentation, is version 2.0 of the Lego Street View Car.
As you can see this version of the car is styled to look realistic. I also decided to use my iPhone to capture images on the car. With iOS 5 the iPhone will upload any photos to PhotoStream so I can access them directly in iPhoto.
The car uses the Dexter Industries dGPS sensor to record the current GPS coordinates.
The KML file that records the path taken by the car is transmitted using the Dexter Industries Wifi sensor once the car is within wireless network range.
The LEGO Street View Car is controlled manually using a second NXT acting as a Bluetooth remote. The remote control allows me to control the drive speed and steering of the car. I can also brake the car to stop it from colliding with obstacles. Finally pressing a button on the remote
Every time an image is captured the current latitude and longitude are recorded from the dGPS. The NXT creates a KML format file in the flash filesystem which is then uploaded from the NXT to a PC. Opening the KML file in Google Earth shows the path that the car drove, and also has placemarks for every picture you took along the way. Click on the placemark to see the picture.
For each GPS coordinate I create a KML Placemark entry that embeds descriptive HTML code using the CDATA tag. The image link in the HTML refers to the last image captured on disk.
The images are captured by triggering the camera on my iPhone. I use an app called SoundSnap which triggers the camera when a loud sound is heard by the phone. By placing the iPhone over the NXT speaker I can trigger the iPhone camera by playing a loud tone on the NXT. While this is not ideal (Bluetooth would be better) it does the job for now.
To get the photos from the iPhone I use the PhotoStream feature in iOS 5. I select the pictures in iPhoto and export them to my laptop. The iPhone will only upload photos when I am in range of a wireless network.
Finally the Dexter Industries Wifi sensor is used to wirelessly transmit the KML file to my laptop over the wireless network.
<Placemark> <name>LSVC Snapshot 1</name> <description><![CDATA[<img src='Images/IMG_1.jpg' width=640 height=480> ]]></description> <Point> <coordinates> -6.185952, 53.446190, 0</coordinates> </Point> </Placemark> <Placemark> <name>LSVC Snapshot 2</name> <description><![CDATA[<img src='Images/IMG_2.jpg' width=640 height=480> ]]></description> <Point> <coordinates> -6.185952, 53.446190, 0</coordinates> </Point> </Placemark>
The snippet from the KML file gives you an idea of what each placemark should look like.
Once the car has finished driving press the orange button on the NXT to save the KML file. This writes a <pathstring> entry which records the actual path of the car. A path string is simply a list of coordinates that define a path in Google Earth along the Earth’s surface. For example:
<Placemark> <name>LSVC Path</name> <description>LSVC Path</description> <styleUrl>#yellowLineGreenPoly</styleUrl> <LineString> <extrude>10</extrude> <tessellate>10</tessellate> <altitudeMode>clampToGround</altitudeMode> <coordinates> -6.185952, 53.446190, 0 -6.185952, 53.446180, 0 </coordinates> </LineString> </Placemark>
Is a path two coordinates not far from where I live.
From the NXT to Google Earth
How do we get the pictures and KML file from the NXT and into Google Earth? First of all we need to get all the data in one place. The KML file refers to the relative path of each image, so we can package the KML file and the images into a single directory.
An example of the output produced is shown below. In this test case I started indoors in my house and took a few pictures. As you can see the dGPS has trouble getting an accurate reading and so the pictures appear to be scattered around the map. I then drove the car outside and started to capture pictures as I drove. From Snapshot 10 onwards the images become more realistic based on where the car actually is.
I shot some video of the car driving outside my house. It was a windy dull day, so the video is a little dark. The fun part is seeing the view from on-board the car!
More videos are coming soon…