Planning

Let’s start with the biggest learning experience to be made. The number #1 most important thing is… Always Always ALWAYS double check your product before purchase.

1. Small Chassis

The chassis purchased was smaller than our liking, causing a cascade of problems when adding the functionalities. The tight constraint of space required us to get creative in perfboard design and cramming a bunch of electronics, eventually losing ourselves the ability to go modular.
Not to mention the 33GB-520 motors that came with the chassis was too weak to move on grass. Talk about false advertising! (ノ°Д°)ノ︵ ┻━┻

2. Drill

When purchasing a DC motor for our drilling mechanism, we were too preoccupied with the torque of the motor that we forgot to consider a very important aspect, the size. It came as a huge shock to us when the motor arrived in the mail.

Original purchase (╥﹏╥)[bottom], Replacement purchase [top]

Fortunately, DC Micro Metal Gearmotor was cheap and replacing it with a much bigger motor was not an issue. Still, regardless, we lost time waiting for the larger motor to arrive. Time that could’ve been useful to improve our designs.

3. Pixhawk GPS

A limitation of our final product was that the GPS does not have the accuracy we needed. The GPS module(M8N GPS with external compass) purchased together with the Pixhawk is said to have an accuracy within 1.5-2 meters. A 1.5-2 meter accuracy was incredibly optimistic in my opinion. In real-life experimenting, the variance showed around 5-15 meters of inaccuracy and GPS “jumping”.

This GPS is commonly used for RC Rovers and Quadcopters alike, however, our planting module has a much higher demand for high precision GPS locations. As such, Waypoints cannot be set closer than originally planned, as the Rover tends to stray from course. A compromise was made by making mission waypoints spread over a larger area. The moral of the story, don’t trust the manufacturer’s word on the product. Rather follow Ardupilot forums and other related community forums on the topic. In the future, it would also be advised to use LIDAR or other range sensors for more accurate positional location. GPS is really not known for its accuracy.


Secondly… Every project has its fair share of good ideas and bad ones. To mention a few, not inherently a bad idea, but due to better ideas that came along, which resulted in lost time and effort.

4. H-Bridge Motor Driver + I2C Controls

Initially, a genius idea to increase PWM output from a Raspberry Pi, which utilizes the I2C(Inter-Integrated Circuit) bus, to control PWM-controlled motors. Allowing for spare RPi PWM pins to be used for our servo motor. Our rover’s track motors will be controlled by Keyboard via a remote Laptop using Python scripts.

The problem with this idea is when implementing Autonomous controls, We would require swapping motor controls to a Pixhawk, using Ardupilot firmware. Time spent on this version (purchases, coding, soldering) had gone down the drain.

MDD3A H-Bridge and PCA9685 Module

Lastly… Don’t forget to prepare for the worst/have a backup plan.

5. Spare Parts

It was T-1, our final presentation is tomorrow. We decide to wrap up our project by taking a few more videos, when all of a sudden… smoke emerges from within the thick jungle of electronics. HOLY JEZ! This is super bad! We immediately cut the power to GAR and scratch our heads thinking of what to do next. (P.S. You should always ask for help from the TA’s at this point, as safety is a concern :)) In order to diagnose the problem, we must once again stimulate the smoke carefully observing where it comes from. It was nerve-wracking… our project could be completely ruined before the final presentation.

Long story short, we eventually found a single buck-converter that could no longer flash when powered, and heat up considerably. Fortunately, we had spares! All thanks to our lovely TA Justin for recommending us to buy spare parts earlier. Switching buck converters took no time at all. Our project was saved yay. \(ᵔᴥᵔ)/

Culprit Buck-converter

Designing

Considerations of functionality, purpose & design of every 3D print is crucial from the inception of ideas, though you could easily just reprint if the prior print doesn’t work out, we should do our part in saving resources & time. Much foresight is required to imagine how each part would contribute to the overall product, so here’s some things that may be useful to you if you are new to 3D printing:

Fusion 360

1. Create components instead of bodies & activate them:

It is indeed easier to just work with bodies in the beginning but as the project progresses, there will be a large number of varying parts and designs within any single file and using bodies will just clutter everything on the same timeline at the bottom. Components and activating each individual ones that you are working on allows for a controlled timeline that allows you to have better clarity and control when editing features that you made days or weeks prior easily. Remember to rename each part too, definitely helps with identifying them more quickly.

To activate components, click on the little white circle beside the component you want to work on. For some, if all your designs suddenly become transparent with wireframe outlines and you can’t deactivate components, just click on the toolbar at the centre bottom of your screen and go [Display settings > Visual style > Shaded with visible edges only]. Might be a problem for some and those who find the wireframe style (which is defaulted when activating components) too hard to work with.

2. Sizing and fit

    • For a snug fit of a single item that was printed into 2 or more parts, allow for around 0.2-0.3mm of negative offset space between each face
    • For removable sliding mechanism, allow for around 0.6mm of negative offset space between each face, you may also want to fillet/chamfer corners that come into contact
    • For nut & bolt holes, try to offset the prints hole by around 0.2-0.4mm. Also, if thickness allows, create an indentation fit for the head of the bolt to fit into, it helps to keep the surface of the print nice and flat.
  •  
Indentation for head of bolts

Simplify 3D (or equal slicing applications)

1. Orientation matters

Even during the designing phase within Fusion 360, take care of how your designs would affect the printing process, the printers print from the ground-up by adding layers of materials over each other. Some floating extruding parts would require supports (weaker parts that are removable after the print is done) to hold them during the printing process, some designs might even have hollow chambers within that might need supports. Also do consider the possible weak points of parts that undergo more stress than normal, re-orientating how the prints are made may help in this aspect.

Shortcut tips, try ‘Ctrl + L’ for reorientation & ‘Ctrl + R’ for centre & arrange, instead of looking for those tiny buttons on that huge screen in the slicing room ( ͡❛ ͜ʖ ͡❛)👌

2. Material settings & cost

In most general prints, we printed with the following settings:

    • Layer > outline/perimeter shells > 2 or 3
    • Infill > 30%-40% (20% for quick test prototypes)
    • Support > Enable ‘generate automatic supports’
  •  

For more hardy prints like eg. Couplers:

    • Layer > outline/perimeter shells > 4
    • Infill > 40%-50%
  •  

Programming

For projects where software plays a significant role, the organization of codes is very important. Here are some tips that might make your programming task becomes more comfortable:

1. Test & Debug

If you encounter a bug in your code, no need to be panic, because that’s perfectly fine (even professional programmers can’t guaranteed that their code is bug-free). In cases like this you should split your code into small parts and independently test those parts to narrow down the scope of the error. Our advice is that you should try out small parts of your code first to confirm they work, then after that integrate them to see if they work well together. Doing so will probably help you get less errors than writing a big chunk of code and then split it up to see where it went wrong. And of course you can make the most of surrounding resources to help you fix bugs on a case-by-case basis. For online code debugging forum, click here (thanks us later ;-)).

2. Structure & Organization

When you put all your code in one file and the scale of your project expands, that’s where things start to get complicated. Putting everything in one single file seems to be succinct but that’s not a good practice at all. With a bulky file, it would be harder to deploy the code and, also, it would be harder for different member to follow each other code. Our suggestion is that you should split the bulky code file into small files, each file holding specific properties and do make sure that those files communicate with each other properly. Doing so will make it easier to control the entire system as well as making the deployment tasks go faster.

If you have no idea how to organize your code keep, then that’s a good chance to start learning: object oriented programming.

3. Version Control System

Version Control System (VCS) is a system for keeping versions of a software product’s source code, making it easy for programmers to keep track and get back to the desired version.

This system can be used by a group of programmers, each member of the group is usually not allowed to change the source code of other members but can only view. VCS allows the administrator to divide files for each respective member. It also allows members to share some files with each other while developing. Members can conveniently detect and correct errors in the VCS.

When members edit the code of the same file at the same time, to avoid conflicting modifications, they will have to compare whether there are any differences between the members’ modifications. VCS makes this done automatically.

Git is one of the most popular VCS now. For more information, you can visit the website here.


Final Thoughts

Credit: Owlturd comics @shencomix

It takes initiative to learn
Join us in M&T 2022!! Whoooohooo