Week 1 – 3 (10th May – 28th May)
Basics, Ideation & Research
Fundamentals are important and through the 3D printing & soldering crash course, we were able to familiarize ourselves with the tools & skills necessary for this course.
From the get-go, we wanted a tracked vehicle as it allows for better off-terrain mobility, initial considerations made were to place the electronics within a container, on the roof of the vehicle while the modular rails for the varying packages would be mounted below the chassis as most of the vehicle’s role purposes would require the modules be closer to the ground.
During these weeks, we also self-learned other fundamentals such as setting up and using the Raspberry Pi for our project.
Week 4 – 5 (31st May – 11th June)
Software & prototyping developments
We began to utilize our Raspberry Pi 4 Model B as the CPU to control items such as our (1) drilling mechanism, (2) seed dispensing servo motor & (3) water pump. Early models of our seed dispensing mechanism & water dispensing nozzles were 3D printed and tested here too. Development is a rough process, requiring many rounds of prototyping and reiterations, so as to achieve the ideal balance of functionality & design.
Purchasing equipment was also a pain, of which required thorough planning and insight into issues such as the compatibility and suitability for various functions. Successes were welcomed wholeheartedly & failures were made great learning points, all part of the journey in makerspace.
Not all 3D prints designs resulted in success though, the first iteration of water nozzle designed created too little pressure to be useful in precise and controlled water dispersal. Well… back to the drawing board.
For more complex tasks, motion studies were great tools for visualizing our ideas. As we needed to create a digging mechanism, which required a strong torque to displace soil as well as a Z-axis that can apply sufficient pressure into the ground, we decided that the use of a stepper & DC motor for the sliding mechanism & drill mechanism respectively, would be the most suitable for the task.
NEMA stepper motor (as the slider) with a DC motor (drill) attached
Week 6 – 7 (14th June – 25th June)
Motor movement, Experimenting with modules
In these weeks, we use a H-bridge motor controller and a little Python code to give our rover movement 8 degrees of freedom! The code worked beautifully, but we have yet to test it on the ground. Hopefully in the weeks to come, we can attach a Lithium Polymer (LiPo) battery to make it mobile! Celebrate the small victories ~~ ʕ•ᴥ•ʔ ~~
Testing movement motors
Controlling Stepper with Python
Just for fun, we added a ‘FPV’ camera that can be viewed on a Flask web framework.
Week 8 – 9 (28th June – 9th July)
Soldering! Permanent wiring! Lots and lots of 3D printing!
All hell broke loose this week! We had not expected soldering to be such a strenuous and tedious process and more iterations of 3D design was needed as our overall designs evolved. Lots of planning were needed to be done to determine the ideal arrangement for the electronic components and long-term aspect of the project as space was very constrained within the chassis. In future projects, we will definitely attempt using PCB (printed circuit board) designs so as to miniaturize and simplify the soldering process.
Another cause of concern was the strength integrity of the mount for the NEMA slider and drill motor, as these items are quite hefty, changes such as adding an extra lip at the bottom of the slider mount that is to be connected to the base plate which added as an extra point of support. The drill mount was also changed to be able to split into 2 parts, allowing for better fit & clamping force onto the drill motor. Both mounts were redesigned to have ‘railed’ holes instead of fixed ones for the nuts & bolts, making adjustments of height much easier.
To protect the drill module and electronics below, buffer plates were also made for both front and back, providing protection from unwanted collisions.
Week 10 – 11 (12th July – 23rd July)
Beginning of Automation, Lots and lots of coding!
Before today, we controlled our motors with Python scripts using a H-Bridge motor controller. This week, we levelled up our robot by introducing automation and controls using a Pixhawk. Automation of Rovers and other Remote controlled (RC) drones such as quadcopters, planes or boats, is a dense topic with a vast community. We chose Ardupilot as the autopilot firmware for our rover. Though well documented, there is a high learning curve when using autopilot software. Into the rabbit hole we go!
In our project, the Pixhawk will control the movements of the rover, while the Raspberry Pi will control the more complex functions such as; Drilling, Seeding and Watering.
As a short explanation to the controls of the rover;
Autopilot features:
Hardware: Pixhawk → Runs on firmware and sends PWM signals to motors
RaspberryPi (RPi) → Companion Computer that allows Dronekit scripting and used as communication channels
Firmware: Ardupilot → Software that controls the motor movements
Ground Control Stations (GCS): Mavproxy, Mission Planner → Commands the firmware (eg. Do missions, Manual Mode, Guided Mode)
As many GCS can be added. Likewise, QGroundControl could be used from mobile to control the Pixhawk if necessary.
Dronekit is a Python API that allows us to control the firmware with Python. This is where the fun begins ( ͡° ͜ʖ ͡°).
Communication:
Wireless Access Point → Wifi created by the RPi as a platform to link Laptop and RPi
SSH(Secure Shell Protocol) → The most basic method used to control the RPi with a remote laptop
UART (universal asynchronous receiver-transmitter) → Used to communicate between Pixhawk and RPi (via Mavlink)
UDP (User Datagram Protocol) → IP protocol that sends commands(from computer) and data(from RPi) to visualise flight data with Mission Planner
Mavlink is a protocol for communicating with small unmanned vehicle using various telemetry methods (eg. IP protocol/Radio Frequency)
Creating a simple mission for the rover, using Mission Planner. A mission is a pre-designed route that the rover can follow for automation.
Simulated Rover on a mission (AUTO mode)
Our 1st test run (MANUAL Mode)
GUIDED Mode test
During live testing, we realised a critical flaw in our rover. The track motors are too weak to drive on soil! Oh no! With all that we’ve learnt, we’re quicker on our feet, let’s tackle this problem >:D Purchases of beefier motors and a little 3D printing are in order.
Week 12 – 13 (26th July – 6th August)
Testing Everything!
Finally, we are finally able to place together all our components: (1) Drill, (2) Seed dispenser, (3) Water Dispenser, (4) Automated movements and be able to test it in a realistic environment. During week 12, we discovered with a full load attached, the default movement motors weren’t strong enough to operate on off-terrain. As such, immediate purchase of replacement motors with stronger torque were made and tested in week 13.
1st off-terrain test run (MANUAL Mode)
Drill goes brrrr (҂ ͡❛ ͜ʖ ͡❛)ᕤ
3-step process: Drill, Move, Drop seeds