Can’t do a project without a plan

With all the parts we needed for the project bought and on the way, we were committed to the project.  But it is a big project. One that we couldn’t complete in a day, or in a week, or even a month.

While designing the rover we had realised how big of a challenge this would be for us. We would have to learn to work with a number of different electronic components (how does a I2C bus work, or an IMU?), we would need to learn to use new Python libraries and construct the mechanical vehicle itself, learning and doing at the same time, with dad living in a different country from us most of the time.

As we waited for the electronics to arrive we planned our work. We discussed the project amongst ourselves and finally decided to make the project plan revolve around proofs of concept, in which we would play around with a component until we got it working and then create the deliverables of the project for that component. The deliverables were what we would actually use when we integrated the final system, as the demo program created in the proof of concept would be discarded. The deliverables for each module thus consisted of  a software library and an electronics connection diagram. The library would have all the Python functions needed to command the module in the final program, while the diagram would explain how to connect electrically the component in the final circuit.

The project plan was quite simple in the end: we would do one module at a time and then write a program to integrate all the different modules. Integrating the libraries meant creating the a master program that glued it altogether. Actually the project required two programs: one for the rover and another for the command centre. Integrating the circuits (on the rover) was actually simpler, as it just meant connecting all the different circuits at the same time, into one single circuit.

The program structure for the two units is:

Program Libraries Commands
C_CommandC.py Pyglet
WiringPi2
Math
NA
R_Rover.py WiringPi2  NA
R_Motors.py
(uses time, math and WiringPi2)
cmd_forward()
cmd_reverse()
cmd_rotateleft()
cmd_rotateright()
R_Ranger.py
(uses spidev)
obstacle_detected()
R_Camera.py
(uses time and picamera)
cmd_takephoto()
R_GPS.py
(uses WiringPi2)
cmd_readGPS()
R_IMU.py (unavailable at the time of writing)
R_Laser.py cmd_togglelaser()
R_Headlights.py cmd_toggleheadlights()

At this point we decided we wanted to share our experience of doing this project, so we included in the plan a communication sub-project. This consisted of creating this blog, to share the stories and tutorials, to create a GitHub account, in which we would share the Python code we’d created, and to create an email address and YouTube account to support the blog. We planned to explore different blogging platforms, to test different blog themes and to write a number of test posts in different language styles, in order to find out which one would best suit our storytelling needs, and to set a calendar for the publication of posts, in order to give life to the blog.

Once we had the project plan outlined, we distributed the work amongst ourselves: dad would tackle the Command Centre, the Radios and the IMU, Gil would be responsible for the Rover program and the remaining modules, including the GPS and the motors, and I would focus on programming and the communication sub-project.

Having the work distributed amongst us, we then proceeded to identify the tools we would need, as we would have to collaborate simultaneously from across different countries. For this we decided to use OneNote to share our research notes (reference links, snippets of code, extracts of tutorials, wiring tables for each module, etc.), Dropbox, to share code amongst ourselves, and Skype, to discuss during the week how to solve anything that we got stuck on. Later on, when we started integrating the rover, we decided to use Asana to keep track of the tasks each one of us had to do and to measure the progress we made.

Project tracking
Project tracking

Having a plan gave us an advantage. Naturally, when we completed the first tasks of the project we were motivated, but when difficulties started to accumulate and we started to feel we had bitten more than we could chew, having a plan helped us to see progress and kept us motivated. It also helped us not to get sidetracked as time went by and other possible projects started to creep into our creative minds.

When the components finally arrived we had a plan. As luck would have it, it was also Easter break and my brother Gil and I  were headed to Madrid, to visit our dad’s house for the very first time and spend a week together in the country where we’ll be moving into in a year’s time.

Next story: The first module is ready!

Previous story: A rover is born

First story: Meet the Raspberry Pi


Leave a comment