There is no escaping it. For the majority of the year, Canada is subject to extreme cold and harsh snowfall. Many people are employed low-end city worker jobs operating snow removal equipment. Meanwhile, homeowners are tasked with either shoveling their own property, paying for a service, or counting on neighbors, which in any case leads to a lot of time spent and injury risk, especially for the elderly.
We believe that we can make better use of the AI available to us and make people's lives a bit better by automating the snow removal process in Canada.
We did not build an autonomous snowplow out of thin air. To start, we took our electronics and software knowledge and built small working prototypes, which we would learn from and apply to our full-size product.
In a nutshell, our design is split up into four stages:
1) Safety - how can we prevent emergencies and implement fail safes?
2) Mechanical and building - how are we going to make it?
3) Motor control - how are we going to control the motors?
4) Simultaneous Localization and Path Navigation - how will it know where it is and where to go?
Stage 1 - Safety
As for safety measures, we wanted to ensure that there were three mechanisms in place to shut off the snowplow in case of emergency:
1) Mechanical shut-off via the e-stop button
2) Remote shut-off for a person monitoring the system
3) Software shut-off if the system detects a situation where this is needed
Stage 2 - Mechanical Design and Assembly
A note on cost:
When we first conceived of this project, we wanted to keep cost as minimal as possible, without making unnecessary sacrifices. Our sponsor asked how much our autonomous snowplow would cost, and we verbally estimated "$2000-$3000 CAD (or roughly $2000 USD) after taxes".
We wanted our snowplow to perform well and be cost-effective. As a result, while the bulk of the project materials are from Canada, we also sourced parts from the United States, China and Taiwan.
For a breakdown of the project cost, see here.
Frame Concept:
We wanted to design a frame that was simple, strong, easy to build, cost effective and adjustable. First, we knew our frame needed to support the motors along with a lot of weight (which is needed for the snowplow to have enough traction).
Drivetrain Concept: The fixed-gear bike (times four)
Upon deciding on the best drivetrain for our snowplow, we drew inspiration from a design that dates back to the 1800's : the fixed-gear bike.
The decision for our drivetrain depended on several factors, including cost, ease of manufacturing, and our ability to conceive and visualize how it would work.
We opted against wheelchair motors because we did not want the added cost, inflexibility for speed (in the case of using only the wheelchair motor output) and difficulty to mount on our conceived frame.
Stage 3 - Motor Control
The team decided to use four BTS7960 motor drivers. For those who have done smaller robotics projects (including some members on the team), the L298N is a common motor driver. The BTS7960 is not too different, but rated for up to 40 amps of current, which was suited well for our high-current application.
Stage 4 - Simultaneous Localization and Path Navigation
The following two images illustrate a high-level view of our snowplow cleaning concept
Before we decided to shell out the money to build the full scale prototype, we decided we would build a smaller-scale concept to prove our idea. We started out with aluminum extrusion, and six 9V DC motors, which were to be controlled in the same way as in the block diagram in the last step.
Once we showed to ourselves that we could implement some of our project goals, on a smaller chassis, we decided it was time to start the build of the full-scale prototype.
Stage 1 - Safety
The full scale snowplow made use of a car fuse box, which would require an e-stop to be disengaged in order for all the relays to switch on and allow current to run from the batteries, and through to the motor drivers and motors (depending on the control signal).
Stage 2 - Mechanical Design and Assembly
Click here for full breakdown of our mechanical materials
We were tasked with assembling the drive train. It was required that this was done in a way that was mechanically sound (straight wheels, parallel axles) and easily serviceable (chain could be easily replaced, wheels could be removed). We decided to go with a four wheel drive system, with four independent motors. This was done for a few reasons. First, all wheel drive was a must as we needed to be able to deliver as much force as possible to the ground. This is done by maximizing friction force which is proportional to the normal force on the powered wheels. If only the front two or rear two wheels were powered there would be less force on the ground to push snow. Second, is we also wanted an independent left and right drive, we do not require a steering system with twisting wheels similar to what a car has, instead we have tank style turning, the left and right wheels turn in opposite directions to turn. Only four independent motors can accomplish these goals, unless we were to use tracks instead of tires.
Lastly, we mounted sprockets on the motor and wheel shaft, the sprockets were welded onto hubs, and then the tires were mounted on a set of plates, which could accomodate a hub. The original intention was to weld sprockets to these hubs as well, then bolt the plates to the sprocket. However, the welds we produced did not satisfy the requirement that the wheels were straight, the sprockets were crooked. Rather than attempting to do the welds again, we opted to machine custom aluminum hub adapters. These allowed for easier removal of the wheels, and were a lower cost solution to purchasing more hubs and sprockets. In conclusion, our drive system achieves its goals, the wheels are straight and concentric, we can service the chain and wheels with ease, and effectively deliver power efficiently.
The motors would be connected to the wheels with a chain. Alternatively we could have used belts or gears, gears are difficult to align, and much more complicated, they need to be greased, spacing is important, they can generate thrust forces, etc. Chains were chosen then over belts because they were readily available from a local hardware store, and are more flexible in design than belts, we can shorten or lengthen chain. To provide tension, the bearings used were mounted in pillow blocks. The pillow blocks had slots that allowed for some adjustment. Furthermore, our motors mounted on plates that we could translate to ensure a straight chain, and adjust tension. We machined plates with slots cut such that we could slide the motors approximately 0.125” allowing for 0.25” of adjustment on our 0.5” length chain links, the pillow blocks provided the rest needed to accommodate one link.
Stage 3 - Motor Controls
We chose to power the snowplow with two 12 V 120 Ah Deep Cycle marine batteries. Considering no weight limitation, these batteries were an ideal cost-effective option. Wired in series, the batteries deliver 24 V, which is optimal for powering the 500 W 24 V brushed DC motors. We wired each of the four motor drivers individually in series with both batteries, thereby supplying 24 V to each driver. Each of the four positive cables first passed through its own 25 A fuse and relay before connection to a driver. We chose 25 A fuses since this current at 24 V yields a power of 600 W, which the motors were assumed to be capable of for a short period. The the four relays were wired in a simple series circuit, consisting of the master switch and an emergency stop with power being supplied by one of the batteries. When both of switches are closed, 12 V is supplied to each of the four relays, thereby switching them on and allowing power to each of the motor drivers. When either the emergency stop or master switch are open, all of the relays are off, and power to the drivers is cut off. Each of the motor drivers were also wired to a respective motor. Each motor driver receives 24 V from the batteries and may use that power to drive a motor forward, backward, and at different speeds as determined by the software. Each of the motor drivers are controlled by signals from the ESP32. The ESP32 is powered by 5 V, which we achieved using a 5 V step-down converter wired to one of the 12 V batteries. The circuit powering the ESP32 is also wired in series with the master switch, so that the ESP32 is off when the master switch is open.
Problems encountered while building the electrical system were minimal compared to the problems involved with making the mechanical components. The built-in voltmeter stops working early into testing the electrical system, but this component was not necessary as we were able to test voltage using a voltmeter on hand. The most major issue was that some of the motor drivers which were installed were faulty, but this was addressed with some troubleshooting and replacement of the bad drivers.
Next steps for the electrical system are primarily to streamline and add protection to all of the cables. In its current state, the snowplow uses an excessive amount of cables and which have been set up in an unorganized fashion. The multiple jumper cables connecting the batteries in series can be swapped for a single suitable jumper cable and all connectors can be soldered to ensure a reliable connection. The numerous jumpers attached to the batteries can also be swapped with single high gauge jumpers, and block connectors can be used to split these into smaller cables at the points where power needs to be distributed. Any bundled wires can be wrapped with a sleeve to ensure longevity. The individual motor drivers can also be rewired to the ESP32 directly, rather than through an intermediate board.
Stage 4 - Simultaneous Localization and Path Navigation
We used the latest Dual Frequency (or Multi-Band) RTK from NavSpark NS-HP-GN2 which is GPS L1/L2C, Beidou B1I/B2I, Galileo E1/E5b, GLONASS L1/L2 capable. More satellites = more accuracy and more tolerance for signal blockage. We used 2 Heltec Lora 32 to communicate error correction between GPS receivers in the base station and the snowplow. We used LoRa (Long Range) 915Mhz version for North America. LoRaWAN is great for open spaces and for area not covered by Wi-Fi or cellular. It can exceed the 30 km range. But, its main inconvenience that it has a low data transfer limit of 27 kbps. We need to reduce the communication baud rate to 19200. The RTK receiver can send error correction signals at 10Hz without problem. NMEA and RTCM required only 9600 baud. The Heltec Lora32 has both way of communication Wi-Fi and LoRaWAN. We can configure it according to the area of operation.
The RTK solution (differential GPS) has been used for many years in surveying; however, the cost for such systems are typically very high (in the 5 figure range). The system we have implemented today uses the latest cost-effective technology in the market for a price tag of only $300 for both Base station and Rover (Snowplow).
If you are interested in connecting, feel free to connect with us on Twitter @OttawaAVGroup or email at ottawaautonomousvehiclegroup@gmail.com
Video credit: Chris Kuehl (@chriskuehlphotography)
Comments