B18 Rover Design Report
B18 Rover Design Report
Maze Right- Left- Random Concept 1 was initially attractive due to its
Solving hand Rule hand exploration simple structure and high feasibility. However,
rule testing and early prototype development
revealed that stability was crucial for achieving
Concept 1: Two-Wheel with Caster accurate steering and consistent motion. While
Configuration
Concept 3 offered enhanced sensing capabilities,
its complexity was prohibitive given the Power Continuous >5min
available time and resources. Therefore, the final performance operating
design combined some features of Concepts 1 time
and 2. The final rover employed a relatively
simple dual-motor differential drive system with These standards ensure that the rover can
ultrasonic sensing, combined with improved perform navigation tasks in a controlled and
stability and motion control schemes developed reliable manner, while also making it easier to
during subsequent prototype testing. Ultrasonic quantitatively compare test data with project
sensors were chosen because they maximize requirements.
obstacle avoidance while maintaining low cost The initial rover design consists of an Arduino
and ease of integration. Furthermore, the team Uno controller, an L293D motor driver module,
adopted a rule-based navigation algorithm, two DC motors, and an onboard battery. The
which was simpler and more reliable than Arduino controls the speed and direction of the
random exploration within the project's two motors via PWM and direction signals. The
constraints. rover uses a time-based control strategy for
motion control. Straight-line motion is achieved
4. Preliminary Design by simultaneously driving both motors forward,
while steering is achieved by rotating the two
4a. Design Criteria motors in opposite directions. Our team
continuously adjusted the steering timing
To evaluate rover performance during
parameters through experimentation to achieve a
development and testing, several quantified
near 90° turn.
design criteria were established.
4b. Simulations, Prototypes and
Criteria Description Target
testing.
Straight-line Maximum <20mm
In the initial design phase, our team conducted
Accuracy lateral
multiple prototyping and testing processes to
deviation
improve the rover's motion performance and
Turning Deviation <5° stability. Our primary goal at this stage was to
accuracy from 90° turn ensure the rover could achieve straight-line
motion, approximately 90° turns, and stable,
Speed Foward >0.1m/s repeatable rectangular path movements. The
velocity rover prototype consisted of an Arduino Uno
Repeatability Ability to >3 controller, an L293D motor driver module, two
repeat successful DC motors, and an onboard battery, allowing the
rectangular cycles system to operate independently without an
path external power source or computer connection.
The team employed a time-based motion control
Stability Smoothness No major strategy, where straight-line motion was
of movement oscillations achieved by the two motors moving forward
simultaneously, while turning was achieved by
the two motors rotating in opposite directions.
The team continuously adjusted the turning
timing through experimentation to achieve a
near 90° turn. To test the rover's performance, During the straight-line test, the rover was put at
the team conducted multiple tests, including defined start point and then moved forward in a
straight-line tests to measure motion offset and straight line for one meter. One meter of tape
turning tests to improve directional accuracy. was placed parallel to the start position to be
The team also adjusted the motor PWM used for lateral deviation measurements. The
parameters to reduce motion offset and improve deviation was measured at the end with a ruler
operational consistency. Additional testing (measuring between tape and the final position
focused primarily on circuit reliability and of the rover). This test verified design
battery power stability. In the early development requirement 1 (less than 20mm of positional
phase, we also created cardboard prototype error). Trials before side-to-side motor speed
models to determine the optimal mounting compensation changes to code showed a
positions for key components such as the significant amount of drift to the unequal power
Arduino, motors, battery, and sensors. Tinker produced by the motors. The code was adjusted
CAD circuit planning and iterative physical to correct for this with final adjusted values for
prototyping were used to assist in the entire the PWM value of the left motor being 200 and
design process. Test results show that the rover the right motor being 188. The official trials
can achieve controlled forward movement and were run after calibration.
repeatable steering behavior, but the system still Test 2: Turning Accuracy
has some errors due to variations in battery The turning accuracy was tested similarly to the
voltage and differences in ground friction straight-line test with the use of tape to indicate
initial and final positions. Upon completion of
5. Evaluation of the Design the turn the rovers final heading was measured
Criteria relative to the initial position. This test verified
design requirement 2 (< 5-degree deviation from
5a. Description of tests 90 degree). The pre-test calibrations resulted in
the turn timing parameter (TURN_90_MS) to be
The rover’s performance against the design
calibrated 1925 milliseconds.
criteria was tested against three of the most
Test 3: Forward speed
important criteria. The straight-line accuracy,
This test used a stopwatch to measure time taken
turning accuracy and forward speed. These were
to travel one meter with start and end positions
chosen because they are the fundamental
marked with tape. Speed was calculated as
functionality requirements of the rover. Each test
Speed = Distance/Time and thus verified third
was conducted in the same conditions;
design requirement of greater than 0.1m/s.
consistently flat, hard surface with no external
effects (wind, vibration, etc). 5 trials of each of 5b. Results and Analysis
the criteria test were performed to allow for
statistical analysis and to also help reduce Test 1 Results:
influence of random error. Results were Trial Lateral Deviation
manually recorded with subsequent code (mm)
calibrations occurring between testing sessions 1 8
(not between individual trials). 2 11
3 9
Test 1: Straight line accuracy 4 7
5 10
Mean 9 Std Dev - 0.15 0.009
Std Dev 1.6 The rover exceeded the minimum speed
requirement of 0.1 m/s in all trials with an
All trials were within the 20 mm target. The average 0.244 m/s. The variation was limited
mean lateral deviation of 9mm shows the (standard deviation of 0.009 m/s), thus showing
calibration was effective in correcting the side- the high consistency of the result.
to-side imbalances. The relatively low standard
deviation of 1.6mm shows that these results are 5c. Summary of rover
repeatable and consistent across trials. The Performance against Design
standard deviation is likely due to minor Criteria.
irregularities in the surface and random human
Criteri Target Measured Status
error in measurement.
a Result (met/unm
Test 2 Results:
et)
Trial Measured Deviation
Straight <20 mm The rover Met
Turn Angle from 90° (°)
Line lateral after
(°)
accurac deviatio calibration
1 86 4
y n was on
2 91 1
average 9-
3 88 2
millimeter
4 93 3 deviated
5 89 1 after 1
Mean 89.4 2.2 meter of
Std Dev 2.7 - travel.
Turning < 5° Rover Met
All trials had turns within 4° of the 90° target, accurac deviatio consistentl
well within the 5° design criteria. The mean y n from y showed
angle being 89.4° suggests a slight under 90° less than 4°
rotation, however such changes were present deviation
(either or under rotation) regardless of from 90°
calibration. The 1925ms timing parameter’s with an
reliability was confirmed by the low spread average
across the trials however this accuracy was angle of
shown on highly consistent surfaces which was 89.4°
not the cases in the maze. Forwar >0.1 m/s Rover Met
Test 3 Results: d speed moved at
Trial Distance Time Speed 0.244m/s
(m) (s) (m/s) on average
1 1 4.2 0.238 Sonar Detectio HC-SR04 Met
2 1 3.9 0.256 Detecti n reliably
3 1 4.1 0.244 on between detected
4 1 4 0.25 Range 3-30cm walls at
5 1 4.3 0.233 distance
Mean - 4.1 0.244 between
and length of the rover (12.5cm) causing a large
include 3 turning radius incompatible in the corridor width
and 30cm. of 18-19cm. During the right-hand turn test, the
Sonar 40- Sensor was Met rover’s turning radius was too large to
mounti 60mm mounted at consistently complete 90° turns within the
ng above ~50mm corridor without contacting the wall. A reduced
height ground above length to less than 9cm would provide a good
ground amount of clearance to improve the ability of the
Sonar >90° Servo Met rover to navigate through the maze. This is the
scan sweep coded to highest priority recommendation as it was the
angle rotate major bottleneck that prevent further progress to
approximat the known and unknown maze sections in the
ely final test.
between The current sensor configuration used only one
40° and ultrasonic sensor mounted to a servo. However,
140°, adding fixed side facing ultrasonic sensors
providing would allow the rover to detect and respond to
about 100° lateral walls in real time during forward travel
of scan instead of once it has already detected something
range. in front. This would allow for more complex
Wall <50mm Rover Met maze solving algorithms. The current obstacle
Stop consistentl avoidance algorithm selects directions based on
distance y stopped a single left and right scan. A more sophisticated
approximat algorithm such as a flood fill algorithm or wall
ely 10 mm following (which would be possible with side
before sonars) would significantly improve the rovers
contact. navigational capabilities in the mazes and would
Sonar <= +- Repeated Met also be highly plausible with the current
reading 10 mm readings of hardware (Bouhal & Paraskevopoulos 2023).
Stabilit variatio fix wall Furthermore, the current system uses time-based
y n for showed motor control for the straight-line motion and
same variation turning. However, this system is highly
distance of ~+-8mm depended on the variation in the battery voltage,
Batter >5 Rover Met surface friction and other inconsistencies of
enduran minutes operated which there were many in the maze. The
ce continuo for over 10 addition of wheel encoders would allow Arduino
us minutes to measure the wheels rotation and apply a more
operatio without complex feedback system, thus allowing for
n power loss more accurate and repeatable straight and turned
travel regardless of external conditions.
5d. Recommendations
5e. Summary of design criteria
A highly impactful limitation of the design that
was identified during final testing was the excess Level 1 was achieved with the rover
demonstrating forward travel, stopping,
reversing and rectangular path travel in both Loose wiring may become a problem that
clockwise and anticlockwise directions. This significantly affects reliability and safety;
confirmed the design criteria for straight line therefore, the proper fastening of the breadboard
accuracy (<20 mm lateral deviation) and turning became an integral part of the final assembly.
accuracy (< 5° deviation from 90°) . Level 2 was
also successfully achieved with the rover Two DC motors are installed on the left and
correctly avoiding the wall in front and at 45 right sides towards the chassis’ rear, while the
degrees without colliding thus validating the 3D-printed design has a cylindrical holder
stopping distance, sonar detection range and slightly larger than the motor. This allows for
sonar reading stability under practical testing adequate space while holding the motor when
conditions (<50mm stopping distance, Detection the glue dries. This configuration fits the
between 3-30cm and <= +- 10 mm variation for differential drive approach, in which two motors
same distance respectively). Furthermore, level provide motion control in the forward direction
3 was also passed with the rover success and turning. Any small misalignment directly
demonstrating its ability to perform a right and affected the rover’s turning accuracy and
left hand turn in maze like conditions (18-19cm straight-line movement when performing a turn
width). This practically validated the servo scan at 90 degrees.
range criteria of >90° sweep.
The Arduino board and battery pack were close
Although all nine design criteria were met under to the rover's rear. The rear vertical support was
controlled testing, the length of the chassis and
printed as part of the main chassis structure. The
various issues in code logic led the rover’s battery holder was supported by the rear vertical
incapability to solve the mazes. section of the chassis. The battery pack
connection within this frame was taped. This
6. Detailed description of all placement ensured that the heavier battery pack
parts of the final design. was placed toward the back to balance the front
sensor assembly and reduce interference with
6a. Structure of the Rover the wiring by keeping the pack away from the
The resultant rover has a 3D-printed chassis moving servo at the front.
designed with a flat base and a raised rear
supporting section that holds the main A small, separate, 3D-printed bracket holds the
components. This configuration avoids servo motor at the rover's front. This bracket was
excessive width or length that could hinder the glued into place at the chassis’ front end. The
rover's operation in a maze, a crucial aspect of ultrasonic sensor mounting is above the servo
one of the design requirements. Besides, it motor so that it rotates and scans the space in
allows stable movement within the maze front of the rover. The ultrasonic sensor's
corridor. matching size was cut from stiff cardboard and
used as a simple mounting plate. The sensor was
The lower base is recessed for the breadboard, then attached to the cardboard and secured using
which keeps it in place without slippage during tape. While this may not have appeared to be the
testing, as it has been glued in. It also assists best method, it was the most practical under the
with wiring management, ensuring that only a available time and materials conditions.
few jumper wires are visible around the
Arduino, motor driver, and sensor connections.
This front sensor arrangement was used because
the rover needed to detect obstacles ahead and
compare the available space on both sides of the
maze. The sonar is positioned in front of the
rover, where it had a clearer field of view, and
the rover better detects walls and obstacles
ahead of it. The servo allows the sensor to scan
different sectors rather than be restricted to
measuring directly ahead only.
Figure 6.1: Final rover assembly with rear battery
The significant mechanical components of the mounting
rover thus became two large side wheels driven
by the DC motors and a small caster wheel 6b. Electronics Layout and Wiring
under the front section. The caster wheel is The rover’s electronics were primarily based on
provided in our material kit, we measured its an Arduino Uno, which acted as the main
size and set aside a specific groove on the controller for rover movement and obstacle
reverse side of the basis, fixed by glue, to make detection. Most of the wiring connections were
sure they are stable. In detail, this caster wheel completed on the breadboard mounted inside the
supports the rover's front section yet continues recessed section of the chassis. This helped keep
to allow it to turn. Using the caster wheel most of the jumper wires near the center of the
underneath the front section simplified the rover and reduced unnecessary cable movement
mechanical design, reduced the number of during testing. It also made the overall wiring
motors, and allowed the rover to move forward arrangement easier when connecting the
and backward and turn left and right. Arduino, motor driver and sensors together.
Figure 6.4: Logic flowchart showing the autonomous The code required multiple calibrations during
obstacle avoidance behaviour used by the rover testing because the actual assembled rover was
not so well put together initially. For instance,
After stopping, the servo motor turned the the wheels and motors were not fastened tightly
ultrasonic sensor to scan left and right, compare at one point, causing the wheels to sit slightly
the two distance values, and then continue angled. This produced different behaviors in the
driving in the direction with more space. It thus rover's turning, even though the unchanged code
avoided simple frontal obstacles and selected a controlled the turning. Once the wheels and
direction based on the measured obstacle motors were better secured, the turning behavior
distance on each side rather than continuing to became more repeatable and stable.
turn in a fixed direction.
This walled turn task was also challenging
because the 3D-printed chassis was relatively
large. During right turns, the right wheel would
sometimes miscalculate and not clear the wall.
To overcome this, the code was modified not to
have the rover always attempt the entire turn in
one movement. First, the rover turned about 45
degrees, moved forward a short distance,
detected the wall again, scanned left and right,
and then made another turn toward the side with
more space. This compensated for the enlarged
chassis size and significantly assisted in L293D 1 Provide Controls
correctly completing the walled turn segment. Motor d in kit the
Driver direction
Overall, the final code was a rather simple and speed
autonomous obstacle avoidance. It was not a of the DC
sophisticated algorithm for solving mazes, but it motors
allowed the rover to pass the first three levels of
the test: movement, object detection, and walled DC 2 Provide Drives the
turns. The final score of the testing for the rover Motors d in kit left and
was 6/10. This meant that the basic movement right
and sensing logic worked successfully, although wheels
the rover still had limitations related to its HC-SR04 1 Provide Detects
mechanical size, turning inaccuracies and Ultrasonic d in kit walls and
physical assembly. Sensor nearby
obstacles
6d. Final Arduino Code
Micro 1 Provide Rotates the
The final Arduino program used for autonomous Servo d in kit ultrasonic
obstacle avoidance and rover movement is Motor sensor for
included in Appendix A. obstacle
scanning
6e. Bill of Materials (BOM)
Breadboar 1 Provide Provides
Table 6.1 shows the main components and
d d in kit temporary
materials used during the construction and
wiring
testing of the rover.
connection
Some additional materials such as cardboard, s between
glue and tape were used during assembly and component
testing to improve component stability and s
mounting. Jumper Multipl Provide Connects
Wires e d in kit the
Componen Quantit Approx. Function
electronic
t y Cost
component
(AUD)
s together
Arduino 1 Provide Main
Battery 1 Provide Supplies
Uno d in kit controller
Pack d in kit power to
for rover
the rover
movement
electronics
and
and motors
obstacle
detection Wheels 2 Provide Allows
d in kit rover
movement
Caster 1 Provide Supports the 180–190 mm corridors. Future
Wheel d in kit the front improvements will focus on reducing chassis
section and length, adding side ultrasonic sensors to support
improves more advanced navigation methods, and
turning replacing the current time-based motor control
system with encoder feedback for more
3D Printed 1 Approx. Main consistent movement on different surfaces.
Chassis $4.00 structural Overall, the rover’s hardware and software
body of the system provides a practical starting point for
rover further development of autonomous maze
Cardboard 1 Approx. Supports navigation.
Sensor $0.50 the
Mount ultrasonic
sensor
assembly
Conclusion
The B18 rover project successfully designed and
built a fully autonomous differential-drive
vehicle capable of obstacle detection and maze
navigation. Iterative prototyping and testing
were carried out following the ASEP framework,
which helped refine the design and allowed all
nine design criteria to be achieved under
controlled conditions. The rover achieved a
score of 6/10 in the final maze test,
demonstrating that the main movement and
sensing systems operated successfully. The main
limitation preventing the rover from consistently
completing the entire maze was the 125 mm
chassis length, which created a turning radius
that was too large for reliable movement within
pinMode(R_IN1, OUTPUT);
References
pinMode(R_IN2, OUTPUT);
[Link], R & Paraskevopoulos, N 2023, Maze
Solving using Flood Fill Algorithm: Introduction pinMode(TRIG_PIN, OUTPUT);
to Micromouse.
pinMode(ECHO_PIN, INPUT);
Appendix A – Final Arduino
[Link](SERVO_PIN);
Code
[Link](90);
#include <Servo.h>
delay(1000);
const int L_EN = 5;
setSpeed(DRIVE_SPEED);
const int L_IN1 = 2;
}
const int L_IN2 = 3;
void loop() {
const int R_EN = 6;
[Link](90);
const int R_IN1 = 4;
delay(200);
const int R_IN2 = 7;
moveForward();
const int TRIG_PIN = 12;
stopMotors();
const int DRIVE_SPEED = 170;
delay(300);
const int TURN_90_MS = 1925;
[Link](140);
const int STOP_DIST = 10;
delay(750);
const int REVERSE_MS = 300;
[Link](40);
void setup() {
delay(850);
pinMode(L_EN, OUTPUT);
[Link](90);
pinMode(R_EN, OUTPUT);
delay(500); delayMicroseconds(10);
digitalWrite(L_IN1, LOW);
digitalWrite(L_IN2, HIGH);
digitalWrite(R_IN1, HIGH);
digitalWrite(R_IN2, LOW);
void turnLeft() {
digitalWrite(L_IN1, HIGH);
digitalWrite(L_IN2, LOW);
digitalWrite(R_IN1, LOW);
digitalWrite(R_IN2, HIGH);
void stopMotors() {
digitalWrite(L_IN1, LOW);
digitalWrite(L_IN2, LOW);
digitalWrite(R_IN1, LOW);
digitalWrite(R_IN2, LOW);
AI Assistance Statement
AI tools were used to assist with grammar
checking, wording improvements, and sentence
clarity during the preparation of this report. It
was also used during coding to logic testing and
help with fixing errors. All engineering
decisions, testing, and final technical content
were completed and reviewed by the project
group members.