May 25

Development

Week 1: Idea proposal

Flora created a 3D model for the cone laying robot, which included both the cone collecting and dispensing mechanisms.

 

We presented our first idea during the progress check presentation. However, we received feedback on this theoretical mechanism and realised it is unlikely to be feasible. In particular, Dr. Ho suggested that the cone collecting mechanism might not be feasible due to the complexity of real-world scenarios, making the collection mechanism challenging to implement effectively. 

After searching online for available mechanisms, we could not find any viable solutions. Consequently, we were advised to focus on a cone dispensing mechanism only. 


Week 2: Refining Ideas for the Dispenser Mechanism

We tested a second idea for the dispenser mechanism by making a simple cardboard prototype as shown. The idea was to have a claw to support the stack of cones except the bottom-most one, and a flap would open to drop the cone via gravity. 


Our first idea for the cone dispensing mechanism.

Unfortunately, our cardboard prototype was unsuccessful when we tested it with an entire stack of cones. The cones stuck together in a stack  and did not separate easily by gravity as we had assumed. Thus, we had to think about another mechanism. 


Week 3: Our second idea

We tried coming up with other mechanisms and proposed them to Jeremy, but he was skeptical of them as we were unsure of what components (motor types, drivers, etc) we would need to make our theoretical mechanisms work. Then, Fu Den suggested we explore denester mechanisms, normally used to dispense trays or bowls. We took reference from the youtube demonstration below; as the stepper motor rotates, 3 separators also rotate via a pulley system, allowing a stack of bowls to be separated one by one. The pulley system could be the same ones used in 3D printers: with GT2 timing belts and pulley bores. The body of the dispenser could be 3D printed to fit the measurements of our cones. This seemed promising, and we decided to test this idea on our slalom cones.

We were advised to design and 3D print our own separators (pink pieces in the video) and see whether they could denest the cones the same way that the bowls were denested.


Week 4: Testing the Denester Mechanism 

We started to pick up the necessary knowledge to complete our project — how to 3D model, how to use the 3D printers, learning about arduino boards and shields, and determining what items to purchase. 

We modelled a few separator pieces to be attached to pulley bores. After some simple experimentation with slalom cones and the separator pieces, we felt that the denester mechanism is feasible and decided to pursue it.

 After consulting Yao Xiang, we also confirmed the components to purchase, and awaited their arrival. 

Our first time using the 3D printers to print a separator piece that fits snugly on a pulley bore. We rotated the bore by hand and ensured that the piece could enter the gap between 2 cones to separate them.


 Week 5: Finalising the mechanism

Here is a model of the proposed assembly of our dispenser:

 

Here is our block diagram for our cone-laying robot. We chose to use the Arduino Mega, RAMPS 1.4 shield and A4988 drivers as we planned support a total of 5 stepper motors; one motor for each of the 4 wheels and one motor for the dispenser. We also want to develop a joystick app to control the cone dispensing settings, and will be using a HM-10 bluetooth module to pair the robot with the app.

 


Week 6: Hardware has arrived, assembly starts!

Fu Den taught us the basics of getting our stepper motors to work. We learnt how to read the pinout of the Arduino Mega that corresponds to the pins of the RAMPS 1.4 shield. Fu Den also gave us a crash course on the purpose of each pin on the RAMPS 1.4 shield and the A4988 drivers. After some troubleshooting with coding in Arduino IDE, we got all 4 wheels to to turn. The next step would be to build a car body that houses the arduino and dispensing mechanism.


 Week 7: The car body

The next part was building the car body. Initially, we planned to 3d print the car body as modelled below. We would attach the dispenser at the back of the car, so they could be dispenesed as the car moved forward, with no obstructions from the car itself.

 

 

Thankfully, Jeremy advised us against printing the car body, as it would have taken very long and there was much less flexibility for changes. Instead, he recommended aluminium profiles. Fu Den taught us how to assemble them with brackets, screws and T nuts.

Assembly did not go as easily as we expected. Through much trial and error, we realised that there were specific orders and orientations that we had to follow put the car frame, motor brackets, stepper motors and car wheels together. We also struggled to ensure that the aluminium frames were flat, which was important in ensuring our wheels were balanced when we placed it on the floor. We installed and uninstalled the profiles over and over, and this took quite some time!


 Week 8: Our car moves, YAY!!

Nicholas handled the software to code the stepper motors usig Rust. After some struggles, we managed to get a moving car. We also placed a cardboard box at the back filled with some weights, to test if the stepper motors could handle the estimated weight of the dispenser mechanism. Thankfully, it worked fine. This was our first win! The next step was to set up the bluetooth module to control the movement of the car.

 


Week 9: Connecting the bluetooth module

Fu Den showed us the pinout of the HM-10 bluetooth module, and taught us how to connect it to our RAMPS 1.4 shield. We successfully connected the bluetooth module to our RAMPS 1.4 shield, and subsequently to a phone.

Afterwards, Nicholas started working on the bluetooth app, and we all worked on building the dispenser mechanism.


Week 10-12: Starting development of the dispenser mechanism 

There were 3 components of the dispenser that had to work harmoniously: the separator pieces, the ring, and the pulley system. We started to design and print the ring alog with shafts to be attached to the ring. 

At first, we tried to 3d print the shafts that the rotating pulley bores would sit on. However, as it is very thin, it snapped with very little force and we realised it would be impossible to use 3D printed materials for the shaft.

The 3D printed shaft

Instead, we replaced the shafts with metal shoulder screws, by screwing it into the ring, leaving only the unthreaded length above the ring. Shoulder screws were more ideal as the threaded part allowed the screw to be fixed tightly onto the ring, whilst the non-threaded part allowed the pulley bore to rotate smoothly.

Then, we were faced with another issue. There was unexpected up-down displacement of the pulley bore along the shaft as the pulley belt rotated. We wanted to clamp the bore down with a nut to prevent this, but that hindered the rotation of the pulley bore.

To solve this, we used a different pulley bore which had a bearing inside of it so the pulley bore could still rotate while being clamped.

Pulley bore with a bearing.

However, this led to another problem; there was no space on the new pulley bore for us to attach the separator like we did before. Instead, we would have to thread the separator through the shaft. Hence, we had to re design the dispenser mechanism to include thrust bores that allow the separator piece to rotate along with the bore.

Roche - 5x11x4.5mm Thrust Bearing (610007)

Thrust bearings


Week 13: Continuing development of the dispenser mechanism 

We waited for our thrust bearings to arrive, which took a few weeks. We also remodelled and reprinted the separator pieces several times to suit this new setup. At last, we came up with our first iteration of the mechanism shown below:

Although it was a relief to get the pulley system working, we were stumped when it could not denest the cones. Oftentimes, the whole stack of cones would tilt and fall halfway through the ring. To get to the root of the issue, we observed how each separator contacted the gap between cones. We realised that the pulley belt was not tight enough, and small slippages in any one of the pulley bores caused all the separators to turn in an uncoordinated manner. Furthermore, when the separators contacted the base of the cone instead of the gaps between cones, the whole stack of cones move away from the separator, hence the mechanism failed. We had to rethink the mechanism’s design again.


Week 14: Updating the ring design

We updated the designs for ring and the separators again.

  • To limit the movement of cones: added a wall along the inner diameter of the ring to limit the cones’ movement.
  • Enlarged the separators, such that it could enter the gaps between cones more easily.
  • To tighten the belt: enlarge the ring and increase the distance between the position of the bores.

The walls were useful and the enlarged separators could contact the gaps between cones much better when we tested by hand.

 

However, we had to use a larger pulley belt with the enlarged ring. The sizes currently had were all too tight or loose. Fu Den pointed out that we needed an adjustable mechanisim for tightening the pulley belt, especially since the belt could loosen overtime. In other words, we somehow needed to be able to tension it like in the video.

We also purchased more pulley belts of different sizes to try out.


 Week 15: Redesigning the ring, again…

We added an ellipse-shaped hole in the ring, to insert adjustable pulley idlers that would tension the belt. Here is our updated ring design:

However, upon attaching the belt to the ring, we encountered new problems. The tension from the pulley belt caused the entire ring to flex. The pulley system could not work this way, as the belt needs to be levelled.

Jeremy advised us to think about using aluminium profiles as supports to prevent flexing.


Week 16: Adding aluminium profiles to the dispensing mechanism

We updated our design again, using aluminium profiles as reinforcements for the ring. We screwed on the separators to the profile instead of through the ring, and adjusted the ring model so we could screw the ring to the bottom of the aluminium profile. This way, the ring would not experience any force from the pulley belt.

The aluminium profile was added to prevent the ring from flexing.

Unexpectedly, we ran into another problem with this design. We had to use a shaft coupler + metal shaft to level the stepper motor pulley bore with the rest of the bores. However, the entire coupler flexed when the belt was tensioned, so this setup failed too. We concluded that plastic was simply too weak to withstand the tension needed for our pulley to work, and had to find an alternative build.


Week 17: Getting rid of the 3d printed ring entirely

We decided to use aluminium profiles for the entire dispenser mechanism, so we would not need a shaft coupler or a 3d printed ring.

While attaching the belt, we found that the larger separators could not turn smoothly like they could before. We did not know why, and experimented repeatedly with different arrangements of the components (bores, washers, bearings) and changing the inner diameter of the separators.

With much tinkering and Fu Den’s help, we realised the problem was that the inner diameter of our thrust bearings was too big, causing them to misalign as they turned; this is seen in the up-down movement of the left thrust bearing in the video.

Hence, we got new thrust bearings with 5mm inner diameter. At the same time, we bought more pulley belts with different diameters for testing.


Week 18: We finally have something working!

Our new thrust bearings arrived. At last, we came up with a second working iteration!

This week, we were also successful in getting the stepper motors to turn by sending arduino commands from our phone.

This week was full of wins, and our spirits were lifted! The next step was to add walls back to this set up, to limit the movement of the cone stack.


Week 19: The dispenser works!!!

Denesting the cones was initially unsuccessful, as we were struggled to coordinate the 3 separators. However, we observed that the mechansim worked fine with just 2 separators, and that was much easier to coordinate. Hence, we removed one separator.

We redesigned a new 3d model that fits for just 2 separators. Furthermore, we fillet the edges of the walls, to prevent them from breaking easily.

We then assembled the final dispensing mechanism by screwing the modified wall to the bottom of the aluminum profile and used a 430 mm belt for the whole set-up. When we tested our design on the stack of slalom cones, to our surprise and relief, the dispensing mechanism finally worked, and all the cones were dispensed one-by-one in a regular and smooth fashion, shown in the video below.

We then mounted the whole dispensing mechanism onto the robot car. We attached and secured two vertical aluminum profiles onto the row on the right of the car body, from which we attached our dispensing mechanism onto the profiles and secured it with brackets.

 

Afterwards, we tested the dispensing mechanism on the newly mounted design, with similarly successful results with the cones being able to drop.

We then made some adjustments to the car design by moving the motors of the wheels to the four ends of the car body and made sure the dispensing mechanism is all leveled to a straight line. The modified design is shown in the picture below.

Finally, we see the light at the end of the tunnel!!


 Week 20: The finishing touches to the hardware

We added a piece of corrugated plastic to the car body for the Arduino board to sit on. To manage the cables, we coiled the wires and wrapped them using Velcro belts, to prevent entanglement of the wires and the obstruction of the movement of the car by the wires.

We built walls to protect the inner circuit boards using corrugated plastic board at both horizontal sides and the back of the car.

Nicholas also finished the bluetooth joystick app after much troubleshooting.

All that is left was to add batteries so the car be mobile. To power our 5 stepper motors, Jeremy and Fu Den recommended that we use 4 NCR21700 batteries with a battery holder, with a voltage regulator. Hence, we purchased the necessary items.


Week 21: Powering with batteries

After cutting, crimping and connecting wires, we connected the batteries to the voltage regulator and the RAMPS 1.4 shield.

Afterwards, we designed makeshift boxes to place our batteries in the circuit and voltage regulator inside the car in order to protect those components from coming into contact with the other components of the circuit.

We then tested the car, its dispensing mechanism, and Bluetooth joystick app. The car stops and drops one cone before continuing moving forward to dispense another cone, repeating until the stack of cones is dispensed. The testing was a success with the cones dispensed 60 cm apart from each other. The app allows for customisation of the number of cones to be dropped, and the distance between cones.

 

We finished the assembly of the product by placing our Arduino circuits and batteries into cardboard boxes to protect the inner circuits while the car is moving and dispensing the cones. With that, we are done with the project!!