Location: Engineering Design Center, 715 N Park Ave, Tucson, AZ 85719
Time: Tuesday, 12:30pm, Door Opens Noon, Closes 2pm.
Live Stream: Youtube Live. Stream might be a few minutes delayed. If bandwidth is insufficient stream might stop.
The Game Objective is to pick up game pieces and to hand them over to another player.
You will score by:
Picking up a game piece.
Handing a game piece over to a teammate.
Scoring the game piece in the drop zone or the stack zone.
Your team is an alliance of up to 3 players.
You will be using your meArm to handle the game pieces.
You have 3 game pieces:
cylinder with concave walls (A)
cylinder (B)
sphere (C)
Each round starts with the game pieces on the stacks.
If multiple pieces are stacked on a single stack the order will need to be A-B-C or A-B or B-C with the most difficult to grab piece at the bottom of the stack.
A player will attempt picking up a game piece. If successful the player will decide to either hand the game piece to another player or score it in the player's drop or stack zone. It can not be stacked on an other players stack.
If the piece is dropped, the game piece is out of play and can not be picked up again. If the game piece ends up outside the player's drop or stack zone the drop was unsuccessful and will not increase the score.
If the game piece was received from another player, the player can decide to drop the game piece or attempt to stack it on the current player's stack or hand it to the third player.
If the game piece was stacked the player can decide to pick it up again and either drop it or hand it over to another player. The player can not stack it again on the same stack.
All players can attempt picking up, stacking, dropping or handing over at the same time.
Tuesday April 30 Noon-2pm
Location: Engineering Design Center, 750 N Park Avenue, Tucson, AZ
Live Streams at: https://www.youtube.com/@ursutzinger/live
To be announced.
Design
Game Piece
Game Sheet/Board
Manufacture
Game Pieces
Game Sheet/Baord
Software
Keyboard input
Figure out fast movements
Figure out sequence for delicate moves so that game piece is not dropped
Game Play
Pickup pieces from stack
Hand over the game piece
Drop the game piece
Team Huddle (discussing status of the tasks and keeping each other on track)
Assigne a task lead to each task. The person responsible for a task is the task lead. The task lead will need to make sure the task is accomplished with the teams resources. Leading a task does not mean that you need to do all the work of a task but you are responsible that all contributor's are getting it done by the due date.
Your team will need to create a list of tasks and assign a person responsible for the task and its due date. The team shall use a GANTT chart to illustrate the tasks.
You will be graded based on your ability to complete the tasks on time. You will have ability to make adjustments to your due dates and GANTT chart once during the semester (date will be announced) without incurring a penalty of not meeting your deadline. This resembles standard project management processes.
Due date 3/22/2024 by end of laboratory.
An example short GANTT chart from a BME Senior Design Team for the break between ENGR498A and ENGR498B is illustrated below, along with another example chart. These are just examples, make them your own.
1st Place:
2nd Place:
3rd Place:
Runner up:
This is a team project. While your team performance playing the game does not relate to your grade, your team will need to demo manipulating the game piece with each robot. Your team will need to write engineering documentation for each of the parts built and you will be graded as a team. Grading policy about equal contributions to your team applies.
We will work in teams for the remainder of the semester. In order to be competitive, every team member will need to have a working robot consisting of
meArm
Raspberry Pi with Motor Hat
Three Game Pieces
Team members can augment their system with additional control elements.
Your robot is your meArm. It will be controlled by your Raspberry Pi and your software. You will need to be able to control the meArm using buttons, keypresses or preset values. You are free to automate the game sequence. Each player uses their own raspberry pi, meArm and software. You shall not stack multiple motor controllers onto a single pi. If you control your meArm with keyboard input into the terminal, you will need to use your notebook computer with VNC or SSH (ssh will be faster and simpler). There will be no MEDDEV wireless network at the competition.
The field consists of up to three fields, one for each team member.
The single field consists of your robot, stack zone and drop zone.
The stack is furthest from your robot in the stack zone. The stack is a maximum of 80mm tall from the bottom of the surface of the stack zone and a maximum of 4mm wide.
The three sheets of your team will be aligned adjacent to each other so that players can receive game pieces from other players. The team chooses the arrangement.
The drop zone is the area closest to the baseplate and 50mm deep and 100m wide. It can be located at the team's choosing. It can be at or above the robots base plate. It is parallel to the desk.
The stack zone is the area extending the drop zone by 50mm and is 100mm wide. In the stack zone is the stacking rod. The surface of the stack zone can be at or above the robots base plate. Its surface shall parallel to the desk.
A fence can be created around the drop and stack zone that has a 10mm maximum height. The height of the fence for the drop zone is measured from the surface of the drop zone and the fence for the stack zone is measured form the surface of the stack zone. The transition from the drop zone to the stack zone shall be either flat or a 90 degree step.
Each player shall create one field consisting of drop and stack zone and the stacker. The extent of the drop and stack zone shall be visible to the referee.
We have three game pieces;
Game Piece A: A cylinder with a maximum outer diameter of 20mm and a minimum diameter of 10mm and a maximum height of 40mm.
Game Piece B: A cylinder with an outer diameter of 20mm and maximum height of 40mm.
Game Piece C: A ball with a maximum diameter of 30mm.
Each game piece shall have a through hole of 5mm diameter. The through hole can be counter sunk but the counter sink shall not result in an opening larger than 12mm.
The game piece can have a rough surface but shall not interlock with the gripper.
The game piece can have a magnetic component but no magnetic force shall be exerted on the game piece when the receiver is grabbing onto the game piece. No magnetic force shall be exerted on the game piece attracting it to the stacking rod or the drop zone or the stack zone.
The center of mass of the game piece does not need to coincide with its geometric center.
You shall fabricate all game pieces. For example, the ball can be 3D printed in two halfs and glued together. Each team shall make one set of game pieces.
The claw of the robot shall be the game piece handler. You are free to modify and design an alternative handler.
Picking up game piece A or B from the stacker: 5 pts
Picking up game piece C from the stacker: 10 pts
Dropping in the drop zone: 2 pts
Dropping in the stack zone: 1 pts
Handing over Game Piece: 5 pts.
Stacking on the stacker 10 pts.
Successful Handover:
The receiver will need to be in possession of the game piece without another player touching the game piece.
Two players can hand a piece to each other once but then the piece will need to be stacked or dropped or handed to the third player.
Successful pick up:
The game piece is no longer on the stacking rod. The game piece needs to be dropped or handed over following a pick up. The game piece can not be picked up after a drop.
Successful drop:
The game piece is on the field and no loner touched by the gripper of the player. To score points the game piece will need to be either within the drop zone or the stack zone.
Successful stack:
The game piece is back on the player's stacking rod. The player is no longer touching the game piece.
Multiple Game Pieces can be in the play.
Game Play:
Each game is 60 seconds in duration or until all game pieces were dropped.
During Qualifications, multiple setups will be played at a time. A team has two attempts to establish their score but they need to be consecutive plays. A team can choose to run a qualifying match before competition day or during competition day.
Finals: The top ranking 4 teams will have one last play to score for 1st, 2nd, 3rd, and runner up place.
The team establishes their player positions.
The referee will place the game pieces onto the stackers according the teams instructions.
When a game piece is dropped at a place other than the stacking rod, it is out of play.
This is not recommended for 2024 Game. I recommend using SSH to connect to the Raspbery Pi command shell and then run the python program. I do not recommend using VNC for the competition.
Your program needs to be at a know location and all the other modules it calls need to be in the same folder. meArm.py, kinematics.py, grip.py etc.
Your program can not have graphical OUTPUT or keyboard input.
You need to create service.
Make sure your program runs.
You need to enable the service.
cd /home/pi/myfolder/
ls myprogam.py
You can change your code in two ways: a) where ever you have imshow you add code as shown below. where ever you have waitKey or keyboard input you have code as shown below. b) you comment out those sections.
DISPLAY = False
if DISPLAY:
cv2.imshow("Camera", img)
if DISPLAY:
try:
k = cv2.waitKey(1) & 0xFF
if (k == ord('q')) or (cv2.getWindowProperty("Camera", 0) < 0):
stop = True
except: stop = True
cd /lib/systemd/system/
sudo nano my.service
The content of my services needs to be: MAKE SURE YOU USE Restart=always
[Unit]
Description=Hello Ballers
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/python /home/pi/2023/myforeverpython.py
Restart=always
[Install]
WantedBy=multi-user.target
This comman needs to be able to run in your shell without error. First go to a directory where your code is NOT located. Then run it.
cd /home/pi
/usr/bin/python /home/pi/2023/myforeverpython.py
The very first line of your python program needs to be:
#!/usr/bin/python3
Then in shell you enable service
sudo chmod 644 /lib/systemd/system/my.service
chmod +x /home/pi/myprogram.py
sudo systemctl daemon-reload
sudo systemctl enable my.service
sudo systemctl start my.service
Simple Program for RasPi with PiCamera2 the newer camera interface. This only works with the camera using flat ribbon cable, not USB cameras.
You need to install the picamera2 drivers: sudo apt install -y python3-picamera2
Also you need to disable the legacy camera support in the raspberry pi interface configuration: sudo raspi-config
If your camera is not found, you can get some help by running libcamera-still -o test.jpg
ZMQ is a messaging protocol with very low latency
pip3 install zmq
Please use the posted outline of the final report below as a guideline for writing. The Google Form to submit the final report is now available and linked below the outline.