The algorithm to find the closest waypoint has been implemented and needs  some extensive testing. The navigation software still needs a few things to be fully operational. A 24h record is in process to test the precision of the GPS receiver, possibly tomorrow I will post the results.

Map Matching Algorithms

After completing the client-server setup, the main focus is the navigation node where the problem now is how-to match the GPS data to the route generated by the planner. Because I don’t know exactly how this is supposed to work I’ve done some research in this field. There are some algorithms to do this and they are divided into three categories: Geometrical map matching, Topological map matching and Advanced map matching.

Geometrical map matching is divided into : Point-to-Point, Point-to-Curve and Curve-to-Curve.

The more advanced algorithms apply models to the geometrical or topological map matching . The models are: Probability theory, Kalman filter and Fuzzy logic.


The communication between the client and the server has been implemented although no tests have been made therefore there is a good chance that it might not work. Improvements to the existing code will be made and possibly another client/server communication will be implemented. This will allow the user to input the desired destination.


Well this week was dedicated to build an algorithm in C++ that can decode google’s encoded polyline and writting the “state of the art” chapter of my thesis. The algorithm is almost done but it has little bug. The coordinates that are extracted vary a little bit, but the variation despite of looking insignificant is actually unacceptable. I noticed that after plotting the two outputs on the map.

I let you with some videos on autonomous vehicles, in which the video about the Audi A7 demonstrates the technology I am trying to implement, but for now without an Android App.

Google Car:

Audi A7 parking:

Mercedes-Benz Truck:

It’s Alive !

After a few weeks trying to find a way to establish a communication with the gps receiver, I finally made it. I’ve tried another library (rtklib) but without success so I kept searching and found a way to use the USB connector instead of using a Rs-232 converter. After doing this I have tried again the GavLab Novatel library but this time it worked because the problem was using the COM port instead of an USB , which previously didn’t worked. After that I used the ROS gpsd library and with a few tweaks I was able to store the latitude and longitude.

Currently I am looking for a routing library that gives me driving directions.

Data acquisition

After some unproductive easter holidays, I am back to work. First of all lets start with some good news, my request to purchase some materials has been accepted. After some initial trouble to open .gpx files I found out how to open them and extract relevant information using QTCreator. But there are still some useful features that I need to implement before it is ready.

I still need to figure out how to get information from the gps receiver via ROS. Because the communication protocol is a little bit different, with different I mean it does not give you directly the nmea_sentences as soon as you plug it in on some USB port. To get the desired information, specific commands need to be sent to the receiver. Therefore I think that the standard libraries might not work ( nmea_navsat_driver & gpsd ) so after some research I have found two libraries that might do the job (GAVLab/novatel & ccny-ros-pkg ).


After some unexpected problems with QT and some software libraries to read .gpx files, I’ve decided to keep this issue on hold and try a different approach. So I’ve continued the search for existing solutions that might be useful for my work.

I have found some interesting solutions that I will try to implement during the next days.

Several things / Diversos

This week we configured the new server and defined the new layout for the car trunk. Because we needed additional material we had to ask for a budget and are currently awaiting a response. In the meantime we bought the cable that was missing to connect the gps receiver to the antenna and ran a few tests with it. During this week I have continued with the state of the art in mapping and routing.

Esta semana configurou-se o novo servidor e ficou definido o novo layout da mala do carro. Contudo são precisos alguns materiais que não estavam disponíveis no laboratório, foi então necessário ir pedir um orçamento e estamos a aguardar aprovação. Entretanto também foi comprado o cabo em falta para ligar o receptor GPS a antena, e foram realizados alguns testes ao equipamento. Durante a semana continuo-se com o o estado da arte em mapeamento e planeamento de rotas.

Research / Pesquisa

This week the main task was to create a ROS node that allows data acquisition from the GPS receiver. But due to the lack of the cable that connects the receiver to the antenna this task wasn’t possible, so I’ve decided to start searching for map providers. As soon as I got more details I’ll let you know.

Esta semana era necessário criar um modulo em ROS que permitisse a aquisição de dados do sensor GPS. Contudo, devido a falta de um cabo para ligar o novo receptor GPS a respectiva antena, decidiu-se avançar com as pesquisas das soluções existentes no mercado que fornecem mapas. A escolha do fornecedor ainda não ficou completamente decidida. Assim que tiver mais detalhes  estes serão publicados.