Cal Poly Pomona's Battery Vending Machine

Hi everyone, we are the BANSHEE UAV Robotics Team from Cal Poly Pomona’s College of Engineering. We are back again for this summer, as the team will be working on making a battery vending machine from utilizing the robotic arm provided by ROBOTIS. Sadly, it is not actually like those soda vending machines but more of a changing station. The BANSHEE UAV team uses 4C 4000mAh LiPo batteries, which are dangerous when placed in close proximity to each other. Our goal is to find a way for the batteries to be arranged in an organized fashion while allowing us to charge, monitor, and store them securely.

And hello again, my name is Bethany and I am one of the people in charge of logistics. I will be releasing the team’s progress when the deadline comes up. It is exciting because we have many new members who are working with us on the project and I hope to document everyone’s progress along the way. Since everyone is starting out with their assignments, this week’s updates will be brief.

6/5/2022 Update
For the past few weeks, we attended the ROBOTIS and sub-team meetings. The project leaders went over the work distribution chart and by using that information, tasks were assigned to everyone.

  1. Power team
  • Brainstorm ways to keep batteries apart
  • Create a circuit that charges the 4S LiPo battery
  1. Hardware team
  • Find a way to extract information from the battery
  1. Software team
  • Write a python script dealing with data sent across the network
  1. Manufacturing team
  • Develop a method to insert and eject the battery
2 Likes

Hi everyone, this is Bethany and I hope everyone has been well. Today, I am here with updates of the team’s progress on the project.

6/19/2022 Update
The team has been actively working on the project and despite some setbacks, the sub-teams have begun to design physical components required to complete the task.

1. Power team

  • Design a circuit used to individually charge each cell of the LiPo battery
  • Create a circuit that discharges a 4S LiPo battery
  • Develop a circuit to balance the 4S LiPo battery

    Figure 1: Remade version of the single cell balance-charging circuit

2. Hardware team

  • Develop a script that communicates JSON data through the sockets
  • Write a python script so that the equations used by the robotic arm can be translated into code
  • Discussed and learned about inverse kinematics

    Figure 2: Connection between server and client

3. Software team

  • Write a market detection script that detects ArUco codes
  • Write a python code to detect ArUco codes using the OpenCV Library
  • Created the UI design of the interface

    Figure 3: Market detection script locating multiple ArUco codes

4. Manufacturing team

  • Improve the stability of the robotic arm
  • Find a robotic arm that can withstand the current payload
    unnamed (3)
    Figure 4: A cylindrical robot, which is capable of handling large payloads
2 Likes

Just letting you know the typo

Write a market (-> marker) detection script that detects ArUco codes

Seems that you are using the MX series or AX series, It would be great if you can share the summary of your components used, and some video clips !

Nice project though anyway :slight_smile:

ps. It’s interesting that the vending machine with 6-axis manipulator arm.

Is your vending machine application is the same as a vending machine picking product by user choice like a picture below?

2 Likes

Hello, and thank you for taking interest in our project! I’m Chris, the project lead for the team at CPP, and can answer some of the more technical questions that you may have.

Regarding the equipment from ROBOTIS, we are using the Open Manipulator X. In our previous project (autonomous power replacement for UAVs), we have designed a system to take batteries from our drone and placed them in a side compartment for storage. The links below take you to the videos demonstrating their functionality.

OpenManipulatorX Battery Swap Test
4S Lipo Battery Placement Animation

For this project, the term “Battery Vending Machine” is a blanket term for a much deeper dive into battery storage, charging, discharging, and data extraction mechanisms. With a single command, the robotic arm autonomously replaces a discharged battery given to it with a newly charged battery from the storage area. Therefore, the design is not necessarily to dispense batteries, rather it is to control and replenish our supply of 4S lipo batteries in order to power and extend our UAV’s flight times during a mission.

The robotic arm (OpenManipulatorX) is a multipurpose arm, and we have plans to utilize it for means other than battery handling (such as replacing drone parts).

I hope this answers your questions, and I thank you again for your interest in our project!

1 Like

Given two video links very helped me understand the concept of your battery charging station !!

What interesting thing is the marker dection algorithm ArUco ! Feel like I use it later for my simple project for CNN later.

Thank you for your reply! Please feel free to visit our Github repository for this project, where we are publishing open-source code that powers our electronics. We will update this thread once every week with new updates, so you are more than welcome to check back for progress in all aspects of the battery vending machine. If you have any more questions to our project, feel free to ask. Thanks again!

CPP Battery Vending Machine Github Repo

Hi again, I hope everyone has been doing well lately. This is Bethany and I will be providing an update of the team’s progress on the project so far.

7/4/2022 Update
We are now on Week 6 of the project. At this point, we are starting to assemble the robotic arm so that we can start integrating the designs that the other teams have been working on.

1. Power Team

  • Conduct research on MOSFETs and their ability to deal with high currents
    • The MOFSET is used to operate the system since it has a low threshold voltage for it to activate
    • The MOSFET will dissipate 17.5W with the given load
    • Without using a heat sink, it could dissipate 2.4W of power
  • Create a circuit that extracts data from the battery
  • Research battery nomenclature
    • Ways to give each battery an identification number since we are using multiple batteries
    • For example: 0, 1, 2, 3 or 001, 002, 003. Or even A, B, C, D


Figure 1: Manual discharging circuit that utilizes an Arduino and MOSFET

2. Hardware Team

  • Enhance security of the socket program with AES (Advanced Encryption Standard) encryption
    • AES encryption is a symmetric block cipher algorithm that codes the data block individually
    • The AES will be encrypting the data blocks by using a key and then it will join those data blocks together, forming a ciphertext
  • Write a script for the robotic arm to move from one point to another using inverse kinematics and coordinate translation script


Figure 2: Drawing of the OpenMANIPULATOR-X

3. Software Team

  • Develop the Tkinter UI
    • Readjusted the margins between the elements of the interface
  • Assigned unique QR codes for each battery


Figure 3: QR codes for each LiPo battery

4. Manufacturing Team

  • Research how to make the battery storage chassis efficient
    • The batteries cannot be stored in close vicinity
    • The structure has to be made in a way so that the robotic arm will not have to move vertically, since vertical movement makes it unstable


Figure 4: Drawing of the battery storage structure

Hi everyone, this is Bethany and I hope everyone has been well. Today, I will be giving a report on what the team has been up to recently. Stay tuned, as there has been some exciting progress made.

7/17/2022 Update
This week, the team has made progress. Each member has been working on their individual tasks but we are finally able to test our code on the robotic arm.

1. Power team

  • Develop a circuit using the ACS714 chip
    • Calculates the current of the battery


Figure 1: Circuit with motor as the load

2. Hardware Team

  • Test code on the robotic arm
    • Code was successful in moving the arm
  • Integrate AES encryption into the socket program


Figure 2: Angle calculation code for robotic arm

3. Software Team

  • Learn how to transfer and display data onto the UI window

4. Manufacturing team

  • Research different motor systems that allow the turntable to rotate
    • Idler Drive
      • The motor is attached to the turntable through a freely-turning idler wheel (which is usually fitted with a rubber tyre)
      • Provides significant turning power to the plate, useful since the LiPo batteries are heavy
    • Belt Drive
      • Motor is placed a short distance away from the platter, with a rubber belt connecting the two parts together
      • The rubber belt will be transferring power from the motor to the turntable
      • Prevents the turntable plate from generating any noise or vibrations
      • Easy to implement and also cost efficient
    • Direct Drive
      • The motor will be attached to the spindle, which is located in the direct center of the platter
      • Makes the noise out of all the motor systems mentioned
      • Does not take time to start speeding up