-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of https://github.com/zx40224617/EECS106A-Final-P…
- Loading branch information
Showing
12 changed files
with
588 additions
and
358 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,39 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<link rel="stylesheet" type="text/css" href="styles.css" /> | ||
<link | ||
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap" | ||
rel="stylesheet" | ||
/> | ||
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> | ||
<script | ||
id="MathJax-script" | ||
async | ||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" | ||
></script> | ||
<title>EECS106 A Final Project</title> | ||
</head> | ||
|
||
<body class="pageContents"> | ||
<nav class="top-bar"> | ||
<a href="index.html" class="nav-item">Introduction</a> | ||
<a href="design.html" class="nav-item">Design</a> | ||
<a href="implementation.html" class="nav-item">Implementation</a> | ||
<a href="results.html" class="nav-item">Results</a> | ||
<a href="conclusion.html" class="nav-item">Conclusion</a> | ||
<a href="team.html" class="nav-item">Team</a> | ||
<a href="additional.html" class="nav-item">Additional Materials</a> | ||
</nav> | ||
<div class="background"> | ||
<h1 class="backgroundImageTitle"> | ||
EECS 106A Final Project - Grippy Kasparov | ||
</h1> | ||
<p class="backgroundImageText">EECS106A Fall 2024 Team 23</p> | ||
</div> | ||
<h1>Additional Materials</h1> | ||
<div class="wrapper"> | ||
<h2 class="title"></h2> | ||
</div> | ||
</body> | ||
</html> | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<link rel="stylesheet" type="text/css" href="styles.css" /> | ||
<link | ||
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap" | ||
rel="stylesheet" | ||
/> | ||
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> | ||
<script | ||
id="MathJax-script" | ||
async | ||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" | ||
></script> | ||
<title>EECS106 A Final Project</title> | ||
</head> | ||
|
||
<body class="pageContents"> | ||
<nav class="top-bar"> | ||
<a href="index.html" class="nav-item">Introduction</a> | ||
<a href="design.html" class="nav-item">Design</a> | ||
<a href="implementation.html" class="nav-item">Implementation</a> | ||
<a href="results.html" class="nav-item">Results</a> | ||
<a href="conclusion.html" class="nav-item">Conclusion</a> | ||
<a href="team.html" class="nav-item">Team</a> | ||
<a href="additional.html" class="nav-item">Additional Materials</a> | ||
</nav> | ||
<div class="background"> | ||
<h1 class="backgroundImageTitle"> | ||
EECS 106A Final Project - Grippy Kasparov | ||
</h1> | ||
<p class="backgroundImageText">EECS106A Fall 2024 Team 23</p> | ||
</div> | ||
<h1>Additional Materials</h1> | ||
<div class="wrapper"> | ||
<h2 class="title"></h2> | ||
</div> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,87 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<link rel="stylesheet" type="text/css" href="styles.css" /> | ||
<link | ||
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap" | ||
rel="stylesheet" | ||
/> | ||
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> | ||
<script | ||
id="MathJax-script" | ||
async | ||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" | ||
></script> | ||
<title>EECS106 A Final Project</title> | ||
</head> | ||
|
||
<body class="pageContents"> | ||
<nav class="top-bar"> | ||
<a href="index.html" class="nav-item">Introduction</a> | ||
<a href="design.html" class="nav-item">Design</a> | ||
<a href="implementation.html" class="nav-item">Implementation</a> | ||
<a href="results.html" class="nav-item">Results</a> | ||
<a href="conclusion.html" class="nav-item">Conclusion</a> | ||
<a href="team.html" class="nav-item">Team</a> | ||
<a href="additional.html" class="nav-item">Additional Materials</a> | ||
</nav> | ||
<div class="background"> | ||
<h1 class="backgroundImageTitle"> | ||
EECS 106A Final Project - Grippy Kasparov | ||
</h1> | ||
<p class="backgroundImageText">EECS106A Fall 2024 Team 23</p> | ||
</div> | ||
<h1>Project Conclusion</h1> | ||
<div class="wrapper"> | ||
<h2 class="title"></h2> | ||
</div> | ||
</body> | ||
</html> | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<link rel="stylesheet" type="text/css" href="styles.css" /> | ||
<link | ||
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap" | ||
rel="stylesheet" | ||
/> | ||
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> | ||
<script | ||
id="MathJax-script" | ||
async | ||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" | ||
></script> | ||
<title>EECS106 A Final Project</title> | ||
</head> | ||
|
||
<body class="pageContents"> | ||
<nav class="top-bar"> | ||
<a href="index.html" class="nav-item">Introduction</a> | ||
<a href="design.html" class="nav-item">Design</a> | ||
<a href="implementation.html" class="nav-item">Implementation</a> | ||
<a href="results.html" class="nav-item">Results</a> | ||
<a href="conclusion.html" class="nav-item">Conclusion</a> | ||
<a href="team.html" class="nav-item">Team</a> | ||
<a href="additional.html" class="nav-item">Additional Materials</a> | ||
</nav> | ||
<div class="background"> | ||
<h1 class="backgroundImageTitle"> | ||
EECS 106A Final Project - Grippy Kasparov | ||
</h1> | ||
<p class="backgroundImageText">EECS106A Fall 2024 Team 23</p> | ||
</div> | ||
<h2 class="title">Conclusion</h2> | ||
<div class="wrapper"> | ||
<div class="content"> | ||
<h3>Finished Solution vs Design Criteria</h3> | ||
<p> | ||
We acheived an end result that meets our design criteria on our project proposal. | ||
For sensing, we used computer vision via color thresholding to identify the center of the board, which | ||
laid the foundation for the rest of the programming. We also developed our own haptic sensing, which allowed | ||
us to perform haptic search and identify, without vision, how to get a stable grip on a chess peice, as well | ||
as when to proceed with moving the peice once the gripper had been actuated. We were not able to recognize the | ||
gamestate with computer vision, and so instead relied on recording the gamestate with Stockfish's API. | ||
|
||
For motion planning, we simply performed the gameplay, including capturing, castling, promoting, etc. | ||
|
||
For actuation, we relied on the packages built into the lab's robot to perform movement control, | ||
as well as our own circuitry to actuate the negative and positive pressure of the vacuum suction cup. | ||
</p> | ||
</div> | ||
|
||
<div class="content"> | ||
<h3>Challenges Encountered</h3> | ||
<p> | ||
By far the most difficult challenge was properly executing haptic search. Chamber 3 on our suction cup misread | ||
positive pressure by about 10% more than the others, which, given that haptic search relies on using the pressure | ||
readings to create a direction vector toward the chambers that have not grabbed onto an object, skewed the direction | ||
the next search location was in and effectively broke haptic search entirely. To cope, we isolated the datapoint and | ||
scaled it down, and if this didn't work, we really just prayed that chamber 3 was one of the initial chambers that found | ||
something to grab. | ||
</p><p> | ||
Another difficult challenge we had to tackle was our circuit construction. As a prototype, it was done on a breadboard, which | ||
resulted in the occassional loose wire. This then broke the positive pressure actuation, and was quite tricky to debug. To fix | ||
it, we eventually just had someone push it in every five minutes while playing a game of chess. | ||
</p><p> | ||
Lastly, it was extremely difficult to cope with the safety parameters of the lab bot. Movements outside a specific imaginary box | ||
or at a specific speed would cause the robot arm to automatically shut down. This would interrupt any process we were executing, | ||
and became a significant delay strain on the iterative design process we were executing. | ||
</p> | ||
</div> | ||
|
||
<div class="content"> | ||
<h3>Hacks and Improvements</h3> | ||
<p> | ||
As aforementioned, would we be able to ensure better hardware, the immediate improvements we would make would be | ||
having a real circuit that does not involve loose wires and a vacuum that reads its pressure properly. That would enable | ||
our group to avoid our hacks of "pray the 3rd chamber actuates first" and "pray the wires don't come loose". Other improvements | ||
we would like to make are mostly aesthetic: black and white peices instead of blue and black, a chess board that is checkered instead | ||
of a grid of squares. It would also be nice to get better timing on all the sequential steps of a the robot moving a peice so | ||
games can be played at a faster rate. | ||
</div> | ||
|
||
|
||
</div> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
|
||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
|
@@ -34,48 +35,131 @@ <h1 class="backgroundImageTitle"> | |
<h2 class="title">Project Design</h2> | ||
<div class="wrapper"> | ||
<div class="content"> | ||
<h3>Design Goals:</h3> | ||
The following is a list of our criteria needed for what we considered to be a successful implementation | ||
of the UR-10 with the smart suction cup gripper to play chess: | ||
<h3>Functionality:</h3> | ||
|
||
<p> | ||
The desired functionality starts with the user inputting their desired | ||
move into the terminal and ends with the robot arm using the suction | ||
cup gripper to do pick and place operations. The robot arm plays the | ||
users move as well as a move of its own. To pick up a piece the UR-10 | ||
robot arm must move its end effector to the appropriate location, | ||
activate a pull state the suction cup and lower slowly until a seal is | ||
formed. If the initial attempt to pick up the piece fails, the end | ||
effector moves toward the most probable location that a seal will be | ||
formed. The robot arm then moves the piece to the appropriate location | ||
switching between the suction states as needed. This continues until | ||
their has been a check mate, or the user surrenders. | ||
</p> | ||
</div> | ||
<img class="noteImage" src="images/System Diagram.png" /> | ||
<div class="content"> | ||
<h3>Design Goals:</h3> | ||
<p> | ||
The following is a list of our criteria needed for what we considered | ||
to be a successful implementation of the UR-10 with the smart suction | ||
cup gripper to play chess: | ||
</p> | ||
<ul> | ||
<li> | ||
Use computer vision to identify the center of the board | ||
and adjust mapping of board accordingly. | ||
Use computer vision to identify the center of the board and adjust | ||
mapping of board accordingly. | ||
</li> | ||
<li> | ||
The terminal accepts a user input and returns the next move played, | ||
resulting in pick and place operation to move pieces according. | ||
resulting in pick and place operation to move pieces according. | ||
</li> | ||
<li> | ||
Upon an unsuccessful suction seal, the UR-10 move the end effector towards | ||
the most likely location for a better seal. | ||
Upon an unsuccessful suction seal, the UR-10 move the end effector | ||
towards the most likely location for a better seal. | ||
</li> | ||
<li> | ||
The suction cup should be appropriate state (Push, Pull, Off) | ||
The suction cup should be appropriate state (Push, Pull, Off) | ||
corresponding to the action or nonaction happening. | ||
</li> | ||
<li> | ||
The robot arm can recognize the current game using machine learing | ||
and computer vision so we don't need to record the game stats. | ||
Consider chess edge cases. (i.e. Capturing, Castling, Promotion) | ||
</li> | ||
</ul> | ||
|
||
<h3>Design Decisions:</h3> | ||
<p> | ||
With this combination of design goals, the UR-10 robot arm should be | ||
able to repeatability and reliably play countless number of chess | ||
games. Additionally, it was important that we design our chess pieces | ||
such that it demonstrates appropriate use of haptic feedback search | ||
using the smart suction cup technology. | ||
</p> | ||
</div> | ||
<div class="content"> | ||
<h3>Design Decisions</h3> | ||
<h4>Custom Chess Pieces:</h4> | ||
<p> | ||
Our team custom designed flat chess pieces in order to highlight the | ||
application of haptic search. The pieces were designed using the | ||
computer-aided design software OnShape, and are pictured below. When | ||
designing these pieces we ensured there was ample surface area for the | ||
gripper to form a seal, while adding still some degree of complexity. | ||
The some pieces have sharp corners and holes making it difficult for | ||
the haptic search to be successful. Further, we wanted the pieces to | ||
be light to demonstrate the need for a push state. These pieces are | ||
light enough such that when the section gripper is in the off state, | ||
the piece remains attached to the gripper due to a residual vacuum | ||
left within the system. | ||
</p> | ||
</div> | ||
<img class="noteImage" src="images/Chess pieces.png" /> | ||
<div class="content"> | ||
<h4>Hardware and Electronics:</h4> | ||
<p> | ||
We built off the system provided by Dr. Jungpyo Lee. Pneumatically, the system consisted of a single solenoid to control the flow of air | ||
to an in line vacuum generator. The solenoid was electronically wired to a n-type MOSFET, whose gate pin was controlled | ||
by a ESP32 microcontroller. In it's initial state, the system had no means for pushing air out of the suction cup end effector. | ||
Together with Dr Jungpyo Lee, we devised a new system which included push. This newly devised system saw the addition of 3 more | ||
solenoid-MOSFET pairs. The updated pneumatic lines and circuit are shown in the image below, accompanied by a schematic of the the circuit as well. | ||
We built off the system provided by Dr. Jungpyo Lee. Pneumatically, | ||
the system consisted of a single solenoid to control the flow of air | ||
to an in line vacuum generator. The solenoid was electronically wired | ||
to a n-type MOSFET, whose gate pin was controlled by a ESP32 | ||
microcontroller. In it's initial state, the system had no means for | ||
pushing air out of the suction cup end effector. Together with Dr | ||
Jungpyo Lee, we devised a new system which included push. This newly | ||
devised system saw the addition of 3 more solenoid-MOSFET pairs. The | ||
updated pneumatic lines and circuit are shown in the image below, | ||
accompanied by a schematic of the the circuit as well. Initially, we | ||
experimented with splitting the line using only two solenoids. The | ||
idea being the solenoids would be on separate lines and activate | ||
corresponding to being in a push or pull state. This did not work as | ||
intended air was escaping through the vacuum generator. We decided to | ||
get the third solenoid to isolate the vacuum generator when going into | ||
the push state. | ||
</p> | ||
</div> | ||
<img class="noteImage" src="images/Detailed Circuit.png" /> | ||
<img class="noteImage" src="images/Circuit Diagram.jpg" /> | ||
<div class="content"> | ||
<h3>Gameplay</h3> | ||
<p> | ||
Initially, we experimented with splitting the line using only two solenoids. The idea being the solenoids would be on separate lines and activate | ||
corresponding to being in a push or pull state. This did not work as intended air was | ||
escaping through the vacuum generator. We decided to get the third solenoid to isolate the vacuum generator when going into the push state. | ||
We out sourced the logic behind the game play to an open-source chess | ||
engine called Stockfish. Due to hardware limitations we were | ||
restricted to using older version. We drew up a 24 in x 24 in chess | ||
board, resulting in squares that were 3 in x 3 in. We decided to hard | ||
program the location of each squares center, however this does not | ||
grantee a piece will be in an orientation that can be picked up on the | ||
first try. Additionally, we programmed in extra locations on the off | ||
the board for each team to have a graveyard and place where promotion | ||
pieces can be grabbed from. This way we could handle the common | ||
capture and the less frequent edge cases like promoting and castling. | ||
</p> | ||
</div> | ||
<img class="noteImage" src="images/Discriptive Board Layout.jpg" /> | ||
</div> | ||
</body> | ||
<footer class="footer"> | ||
<div class="footer-content"> | ||
<p>© 2024 Berkeley EECS106A Team 23. All rights reserved.</p> | ||
<p> | ||
Github: | ||
<a href="https://github.com/Jungpyo-L/pushpull_suctioncup_106a" | ||
>EE106A Push Pull Suction Cup</a | ||
> | ||
</p> | ||
<p> | ||
Contact: | ||
<a href="mailto:[email protected]">[email protected]</a> | ||
</p> | ||
</div> | ||
</footer> | ||
</html> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.