Sunday, April 19, 2015

Week 14

The Robot: Constructed but still being programmed
This week, Trent Wargo was working on assembling the electronics on the robot. The smaller Jupiter battery now powers the electronics tower which provides power to the Beaglebone and mini box. All connections are secure and working to power both of these devices. The larger NAPA battery now powers the H-bridge, logic boards and both motors. All power switches will be attached to the outer shell to be accessed by the outside. For this reason, Trent has installed several Anderson Plugs that are capable of handling high current and can be disconnected in order to completely remove the outer shell with the electronics reaming attached to the shell. Trent intends to continue interfacing the electronics with the robot.   


For the last two weeks Haris has worked on parts of a Calibration code in MATLAB. This code will not autonomously calibrate the cameras when they are moved from their initial position with reference to the robot, however, this code is simple enough to input a set number of measurements for where the camera is in terms of x, y and z coordinates with respect to the robot and the selected marker point in the registered images.



Derivation of PNP for vision system
Haris has applied different inputs for the testing phase and tried computing the vectors and transformation matrices with different unit measurements of length. It appears that in the original code the number of cells of the images taken for the calibration test were incorrect. The newer version of the code is within ten percent of error when calculating the distance of the vector aligning the measured features. Dr. Isenberg is suggesting refining the code to compute all vectors and angles to be within one percent of marginal error.

Gabe spent the week completing the localization method for the vision system. The program is now capable of determining the robot's distance from the edge of any given sidewalk to within an accuracy of about 0.5 inches.

Gabe will spend the next week implementing the vision system with the rest of the control system and hardware.

Brigette helped integrate the odometry code with Karl. She designed a PCB that will be used to mount the decoder chips along with the necessary logic to make the decoders work. She aided Karl is developing code where she could. Also, she looked into possible solutions to get the GPS and IMU integrated into the system. She and Trent Wargo checked out a small, accurate IMU and GPS unit from Dr. Bruder and she is looking into possible solutions to integrate the data taken from this more accurate unit, into the current control code.

Karl  was responsible for verifying the output of the odometer, when tested on Tour-PNADDER itself. Originally, the odometer was set up  to simply reset once the encoder’s count limit was reached, and subsequently rolled over. Karl ensured that the count remained continuous as soon as a roll over was detected. He has also tested PWM output to the h-bridges, which was met with success. As such, he is now incorporating pwm signal change into the system, to ensure that the pwm signal is modified as the minibus server code sends new values

Here are some pictures of the work that we have done.


Shell with control panel and speakers

Shell: Before Sanding


Motors and Power and Control Circuitry

Electronics Housing

Interface area composed of tablet and speakers

Sunday, April 12, 2015

Week 13


Over the course of the week, Karl researched and tested creating a threaded server, capable of connecting to multiple clients, and differentiating the data those clients are sending/sent. By the end of the week, a successful system was implemented with test code. With this capability, having a threaded server running running in the main script, on the minibox, will now be able to connect to both clients managing the individual decoder data, as well as the client running on the tablet. Karl also tested the odometry on the robot itself, demonstrating that values were being returned sequentially. A small bug needs to be addressed, however, considering the values returned were slightly shifted from their true values. 


Gabe spent the week finalizing camera localization. The Vision System is now capable of determining the distance and orientation of the robot from the edge of the sidewalk. Gabe will spend the next week preparing the system for full integration with the robot and other control and sensor systems.

This week, Trent Wargo has been working on the power supply system. He has been able to assemble several PCBs and stack them together into a tower type assembly. With the tower fully assembled, the minibox, Beaglebone, fans, encoder/decoders and other electronics can now be successfully powered with the on-board batteries.



This week Brigette had a breakthrough with the H-Bridges. She got a set of H-Bridges and Logic-Boards working and wired together. The H-Bridges are now mounted to the chassis and fully functional. The robot took its maiden voyage this week and successfully went forward and backwards using an Analog Discovery to send a single PWM and direction signal to the logic boards. Within the next few weeks she anticipates helping with the odometry, IMU, and software control system. 



This week Harris has figured out the proper format of the equations that are used in the camera calibration process. His MATLAB code will be refined and completed by the beginning of next week. The parameters being solved for must then be implemented into a simply Python code which will give Gabe the x, y, and z coordinates of the vector that translates the camera frame to the ground’s frame along with the rotation angles of the transformation matrix of the camera.

Jaya and Jason spent this week assembling the individual pieces of the foam shell, and sanding/filling the surface to represent the desired shape. Once the necessary supplies are in, they will layer fiberglass, using a wet layup technique, overtop the foam.


Sunday, April 5, 2015

Week 12

The Primary Chassis
In the past week we have received what will hopefully be our interfacing tablet. Karl has been researching how to interface the table with the minibox, so that it can serve as the user console to control desired position of the robot, and to start and stop the program itself. Karl also helped Tanner become familiar with the currently developed code(s) and the projected system flow, so that he could begin putting every thing together appropriately. The decoders were causing a lot of problems, so not much progress has been made it that department, but Gardner did return on Friday, and thinks to have fixed whatever the bug was. Hopefully now,  proper testing of the odometry can be conducted. 


This week Brigette has been sick but still put effort into debugging the H-Bridge. She redesigned the Logic board and had that printed. The logic board is now consistently outputting the correct data values. She also redesigned the H-Bridge and had that printed. After soldering the new H-Bridge components together, the motor is spinning due to logic from the H-Bridge but there is way too much current being drawn from the supply. She is aiming to completely debug the H-Bridge over the weekend so the team can test the robot software.
Gabe has spent the last week working to implement an alternate version of the PNP localization into the vision system. Currently the system is not performing as expected. The localization is set to be completed on April 6, so Gabe will spend the weekend completing the implementation.




This week Trent Wargo worked on the power supply board and got the prototype working. After completing the prototype, he worked on creating a PCB for the power supply. After the first revision of the PCB was made he decided to split the power supply board into several smaller boards to make debugging easier. He successfully designed the PCBs and is finishing soldering all the necessary components to finalize his design.

Jason And Jaya worked on the shell this week. They used the CAD drawing to measure out pieces of the foam and began to cut the foam into the shape and size needed to make the shell mold. Once all the pieces are cut they began to glue the pieces together. Next is for the shell to be completely glued together and sanded into the final shape. then the wet layup will be applied.

For the last two weeks Haris has worked on parts of a Calibration code in MATLAB

which will not autonomously calibrate the cameras if they are moved from their 
initial position with reference to the robot. However, this code is simple enough to 
input a set number of measurements of where the camera is in terms of x, y and z 
coordinates with respect to the robot and the selected marker point in the 
registered images.     

The first part of the code uses Newton’s method and the raphson method to solve 

for the roots of our roots which are three angle values in our camera transformation 
matrix and three values of x, y, and z components of the translational vector from 
the camera frame to the real world frame. The week before this Gabe and I were 
trying to find a solution for the calibration problem in python but we decided to take 
an easier measure as suggested by Dr. Isenberg which was to use initial 
measurements of the camera with respect to the body fixed frame and implement a 
calibration program just once rather than having the robot autonomously calibrate 
the camera every time the robot is powered up.