Caption:
Constructing the obstacle avoidance system on the second level to enhance the robot’s navigation while maintaining an organized and scalable multi-level design.
Description:
On Monday, our team focused on constructing and integrating a new obstacle avoidance system on the second level of our robot, building directly on the structural foundation we had previously established. This step was a major shift from just assembling physical components to creating a system that allows the robot to interact with its environment in a more intelligent and independent way. By placing the obstacle avoidance system on the elevated platform, we were able to improve the positioning of our sensors, since both height and angle play a critical role in how accurately obstacles are detected. This decision was not random, it required us to think more carefully about how real-world conditions affect sensor performance, rather than just assuming the system would work the same in any position.
As we began constructing the system, we connected the sensors to the Arduino Uno and carefully routed wires between the first and second levels. This introduced a new level of complexity, since we now had to manage vertical spacing and ensure that wires were not too tight, tangled, or interfering with moving parts. We realized that as systems grow, organization becomes just as important as functionality, because even a working system can become unreliable if the wiring is messy or under stress. To prevent this, we took extra time to secure connections, organize wires neatly, and make sure each component was accessible for future adjustments or debugging.
While testing the obstacle avoidance system, we closely observed how the robot responded when objects were placed in its path. We quickly noticed that small changes in sensor placement or angle could significantly affect the readings, sometimes causing delayed or inconsistent reactions. Instead of ignoring these issues, we worked through them step by step by adjusting sensor alignment and modifying the code to create more reliable distance thresholds. This process helped us understand that programming is not separate from hardware, it depends heavily on how accurately the physical components collect and send data.
In addition, we began thinking more deeply about how this system will scale as we continue adding new features. The second level now acts as a dedicated space for sensing and decision-making components, which keeps it separate from the base level that handles power and movement. This separation makes the overall design cleaner and more efficient, but it also requires careful planning to ensure all parts communicate effectively. Through this experience, we started to see the robot not just as individual pieces, but as an interconnected system where every decision, even something as small as placement or wire length, can influence overall performance.
PLTW Step:
Create and Test because we physically built and integrated the obstacle avoidance system on the second level while continuously testing, observing, and refining both the hardware setup and programming logic.
Outcome:
By constructing the obstacle avoidance system on the second level, our team significantly improved the robot’s ability to detect and respond to obstacles in a more consistent and intelligent way. This step not only added an important functional feature, but also strengthened our understanding of how mechanical design, electrical connections, and programming must work together as one system. It also set a strong foundation for future development, since our robot is now more organized, scalable, and prepared for the addition of more advanced components and behaviors.
Caption:
Coding the obstacle avoidance system to enable the robot to detect and respond to its surroundings.
Description:
On Tuesday, our team focused on coding the obstacle avoidance system, shifting our attention from building physical components to developing the logic that controls how the robot behaves. This step was important because without proper programming, the sensors and hardware we added would not be able to function in a meaningful way. We worked on writing code that allows the robot to take input from the sensors, process that information, and then make decisions about movement based on the distance of nearby objects.
As we developed the code, we had to think carefully about how the robot should respond in different situations, such as how close an object needs to be before it reacts and what kind of movement it should perform to avoid it. This required us to understand not just the syntax of coding, but the logic behind decision-making, since small changes in values or conditions could completely change how the robot behaves. We also tested parts of the code as we went, making adjustments when the robot either reacted too slowly or not consistently.
This process helped us realize that coding is not just about making something work once, but about refining it so it works reliably under different conditions. It also showed us how closely connected programming is to the physical system, since the accuracy of the robot’s actions depended on both the code and the sensor input.
PLTW Step:
Create and Test because we developed and tested the obstacle avoidance code to ensure the robot could properly detect and respond to obstacles.
Outcome:
By coding the obstacle avoidance system, our team gave the robot the ability to interpret its environment and react accordingly. This step laid the foundation for a more autonomous system and prepared us for further improvements through integration and refinement.
Caption:
Finalizing and integrating the complete obstacle avoidance code by combining previously separate programs into one unified system.
Description:
On Wednesday, our team focused on completing the full coding for the obstacle avoidance system, which required us to combine all of our previously separate code segments into one cohesive program. Earlier in the process, we had developed different parts of the code individually, such as sensor input, distance detection, and motor response, but they were not yet functioning together as a single system. This step was important because a robot cannot operate effectively if its components are only working in isolation, everything needs to be integrated so that inputs and outputs flow smoothly.
As we began merging the code, we quickly realized that combining programs is not as simple as copying and pasting. Each section had to be carefully reviewed to ensure there were no conflicts in variable names, timing issues, or logical inconsistencies. We had to think more deeply about how the sequence of operations would affect the robot’s behavior, especially how quickly it should respond when detecting an obstacle. This pushed us to better understand the structure of our code and how small errors could lead to major issues in performance.
During testing, we encountered problems such as delayed reactions and inconsistent movement, which showed us that even if individual parts work correctly, integration can introduce new challenges. We worked through these issues by debugging step by step, adjusting delays, refining conditional statements, and ensuring that sensor data was being processed accurately before triggering movement. This process helped us see coding as a system of logic that must be carefully balanced, rather than just a set of instructions.
By the end of the session, we successfully created a unified program that allowed the robot to detect obstacles and respond in real time without relying on separate code segments. This made the robot’s behavior more efficient and reliable, and it showed us the importance of integration in both programming and engineering as a whole.
PLTW Step:
Create and Test because we developed and integrated the full obstacle avoidance code while continuously testing and debugging to ensure all components worked together correctly.
Outcome:
By completing and combining our code into one unified program, our team transformed separate functions into a fully working obstacle avoidance system. This not only improved the robot’s overall performance but also deepened our understanding of how complex systems require careful integration, logical flow, and continuous refinement to function effectively.
Caption:
Troubleshooting and refining the obstacle avoidance code to improve accuracy and reliability.
Description:
On Thursday, our team focused on troubleshooting the obstacle avoidance code to fix issues and improve overall performance. Even though we had already written the code, we realized that real-world testing revealed problems that were not obvious at first, such as inconsistent sensor readings and delayed responses. This step was important because a system that works in theory does not always work the same way when actually applied to a physical robot.
As we tested the robot, we carefully observed how it reacted to obstacles and identified patterns in its mistakes. We noticed that small errors in timing, sensor values, or conditional statements could cause the robot to either react too late or behave unpredictably. Instead of making random changes, we approached the problem step by step by isolating specific parts of the code, testing them individually, and then adjusting values to improve consistency. This process required deeper thinking about how the code interacts with real sensor data, rather than just focusing on whether the code runs without errors.
We also made refinements to improve efficiency and clarity, such as adjusting delay times and reorganizing parts of the code to make the logic more straightforward. Through this, we began to understand that debugging is not just fixing mistakes, but actually strengthening how the entire system functions. It forced us to be more precise and intentional with every decision we made.
PLTW Step:
Create and Test because we tested the obstacle avoidance system in real conditions and refined the code to improve its performance and reliability.
Outcome:
By troubleshooting and refining our code, our team made the obstacle avoidance system more consistent and dependable. This step improved the robot’s real-world performance and helped us better understand how testing and debugging are essential for turning a working idea into a fully reliable system.
Caption:
Diagnosing power issues by recharging batteries and testing voltage to restore motor functionality.
Description:
On Friday, our team encountered a major issue when the batteries powering our robot drained completely, causing the system to stop functioning properly. This was a critical moment because it prevented the wheels from moving and disrupted all motor activity, which initially made it seem like there was a deeper mechanical or coding problem. However, after analyzing the situation, we identified that the root cause was simply a loss of power supply from the battery pack.
To address this, we recharged the batteries and then began a systematic process of testing voltage levels using available materials to ensure that power was being delivered correctly throughout the system. This step was important because even after recharging, we needed to confirm that the batteries were supplying enough consistent voltage to support both the Arduino Uno and the motors. We also checked connections to make sure there were no loose wires or interruptions in the power flow that could affect performance.
During testing, we carefully traced the power pathway from the battery pack to the motor system, observing where voltage drops might occur and considering how power distribution could impact movement. This helped us better understand how essential stable energy input is for the entire robot, since even a perfectly written program cannot function without reliable power.
Through this process, we learned to distinguish between software issues and hardware power failures, which is a key skill in troubleshooting complex systems. By the end of the session, we restored functionality and gained a clearer understanding of how to diagnose electrical problems more efficiently in future builds.
PLTW Step:
Test because we diagnosed the system by testing voltage levels, recharging the batteries, and verifying that power delivery to the motors was functioning correctly.
Outcome:
By resolving the battery failure and testing voltage throughout the system, our team restored full motor functionality and improved our understanding of power management. This experience reinforced the importance of checking electrical systems carefully, since stable power is essential for every other component of the robot to operate correctly.
Next Week’s Focus:
Next week, our main goal is to transition from planning and testing into final system integration by physically connecting the remaining components and completing the robot’s full structural assembly. The focus will be on carefully wiring and securing all remaining electrical connections so that the system functions as one unified build, ensuring that power, sensors, and motors are all properly linked without instability or loose contact points. In addition to wiring completion, we will begin installing a protective transparent enclosure over the coding and control area to safeguard the electronics from external damage, dust, and accidental interference while still allowing visibility for debugging and inspection. Finally, once the system is fully protected and stable, we will attach the entire assembly securely onto the carrier base to finalize the robot’s physical structure.
Krishwa will take responsibility for overseeing the final wiring integration, ensuring that all connections align correctly with the overall system design and that the electrical flow remains stable across components. Hansika will focus on structural alignment and stability, making sure that the protective enclosure is properly fitted and does not interfere with movement, wiring, or accessibility. Julia will handle organization and securing of components, ensuring that wires are neatly arranged, safely contained within the enclosure, and properly managed before the final attachment to the carrier base.
By the end of next week, the expectation is to have a fully assembled robot system with complete wiring, a secured protective casing over the control unit, and a finalized attachment to the carrier structure. This will mark the transition from modular development to a complete integrated system ready for final testing and refinement.