Programming

Programming October 26th

In today's class, our primary focus centered around the intricacies of programming, especially in light of our recent addition of the expansion hub. However, our journey in this realm was riddled with challenges that required some nimble troubleshooting. One of the most perplexing issues we encountered was related to the arms of our robot. Despite meticulous programming, there was an odd anomaly – the arms would not raise as expected. It became apparent that the source of this conundrum might be linked to our coding approach. Our suspicion was that the expansion hub didn't quite mesh with our block-based coding structure. To tackle this, we undertook a significant shift in our programming strategy. Rather than bundling the code for the arms with the rest of the script, we segregated it into its own dedicated block. This adjustment, we hope, will enable smoother interaction between the expansion hub and the arms. In our quest to further refine our robot's capabilities, we also delved into programming that offered enhanced control over the arm. This control sought to address an issue with its speed, which sometimes led to undesirable tilting. To alleviate this challenge, we opted to replace the arm extension mechanism with an extrusion, as it promised to be a lighter alternative, potentially reducing the risk of tilting. As we proceed, there's a sense of urgency looming, given the numerous tasks still on our to-do list. First and foremost, we have the imperative task of programming our autonomous mode, a cornerstone of our robot's capabilities. Simultaneously, we're actively working on enabling our robot to suspend, which is a crucial component for our team's objectives. Another item on our checklist revolves around delving into the intricacies of TensorFlow, a skill that we recognize as vital for optimizing our robot's performance. We're eager to gain a deeper understanding of this tool. In the midst of these programming efforts, we've also set our sights on practicing driving our robot. This hands-on experience is pivotal in fine-tuning our operational skills. Moreover, in an effort to maintain an organized workspace, we've initiated the task of labeling and arranging our cables systematically. This seemingly simple task contributes to the efficiency and smooth operation of our project. As we continue to investigate the issue of tilting with the arm, we're open to reevaluating our base's design. If necessary, we're willing to start from scratch to ensure that our robot operates optimally. With these ongoing tasks and limited time at our disposal, our class underscores the dedication, adaptability, and teamwork required for our robotics project's success. Each challenge we encounter serves as a stepping stone toward further refinement and achievement.


Picture of program 

Encoders

Picture of program

During class today, I tackled several important tasks. For instance, I discovered a crucial issue - the absence of a delay. Following Mr. Newman's advice, I promptly removed the expansion hub, which seemed to resolve the problem. My exploration led me to the fascinating world of encoders. While researching this topic, I stumbled upon a valuable resource linked to the encoders subheading, providing significant assistance in my quest for understanding. I initiated work on the encoder program, but an unfortunate incident occurred when I accidentally logged out without saving the code. Fortunately, we hadn't made significant progress, so it was a minor setback. In my pursuit of efficiency and optimization, I decided to disassemble our claws. The goal was twofold: to reset them to their initial positions and configure the servos back onto the control hub. This process required careful labeling, leaving cable organizing towards the end in case of any last-minute adjustments that might be necessary. Looking forward to our next class, my primary goal is to complete the encoder program. This achievement will allow us to test its functionality. The next milestone on my agenda is the autonomous program. Given my experience in programming, I plan to tackle this task independently, allowing the rest of the team to focus on our website and design drawings. In conclusion, each day in the robotics lab provides a unique opportunity for learning and growth. I'm excited to be at the forefront of programming, guiding our team toward success in this exciting endeavor. 


Programing Practice 11/10

Today in class Santanne, Keely, and I worked on finalizing the programming. Keely and I helped by placing the pixels in the claw, and repositioning the robot.

Santanne Programing

Ava Claire & Keely Working on Placement for the Claw on the Backboard

Autonomous plan 

In class today, our team realized that the original drivetrain was the best option. It was a last-minute decision, so we took apart the base and rebuilt the original one. I worked on a plan for both autonomous and driver control, and Ava created some design drawings. 

The next day during my visit to the robotics lab, I noticed an issue with the right wheel – it seemed to spin on place due to unbalanced weight. To fix it, we added a temporary motor at the back. Our plan is to remove the chains and directly connect the motors to the front wheels to balance the weight and improve control. 

I also adjusted the arm shaft by lowering it by one notch to get under some obstacles. However, we're still facing a problem with the wrist occasionally stopping when moving down but working fine when going up. 

Our goal for the next class is to move the motors to the front without the chains so that Mr. Newman can assist with programming.

SPARKmini+lifters

Configuring the SPARKmini

Blocks for the arm found in the servo section since the SPARKmini needs to be plugged into the servo section 

In class, I worked on programming and configuring the Spark Mini for our arm. It had to be plugged in right next to the battery port, essentially drawing direct power from there. However, it couldn't connect to the standard port motors, so we had to plug it into the servo section. After some research on programming, I found that it slots in right under the continuous rotation servo port. It works as expected, but there are some limitations to what you can program with the Spark Mini. I set it up so that when you press the D-pad, it moves down with a power level of one. Upon release, it goes back to receiving no power, and the same process is mirrored for the arm going up.

What the SPARKmini looks like 

Program for arm 

Lifters

During this class period, I successfully configured and programmed our lifters, assigning them to ports 3 and 2. Notably, I omitted the initialization block specifying their direction, causing the program to default to -1 instead of both being set to 1. Due to limited space on gamepad 2, I found myself in charge of controlling the lifters manually. This task consumed a significant portion of the class, and it wasn't until the end of the day that I had the opportunity to test the lifters. To my surprise, I observed that they ascended and retracted at different speeds, despite being programmed at the same speed. We initially didn't dwell on this discrepancy, assuming that adjusting the speed in the programming would offer a straightforward solution.