Posts

AgentSim: June Update (and Launch!)

AgentSim Launch My goal has been to develop a platform that allows anyone to develop and test their algorithms for multi-agent systems. My original goals are here , and my April update here . Since April, I have been working to get this project to a stage where people can start using it. Now, after completing the API, DSL, visualization, and sample algorithms, it is time for the launch of AgentSim!     If you are interested in trying it out, email me at aditshah00@gmail.com, and I would really appreciate any feedback! I am willing to expand the functionality and algorithms available on this platform. For an overview of the rationale, code, and visualization of my project,  c heck out this presentation and demo ! Components There are four main components to this project: Node API A Java and Kotlin API for creating and manipulating each node/agent Uses gRPC in the background to emulate broadcast messages of information updates (including location and weights)  DSL...

AgentSim: March Term Update

In the last five weeks since I began this project in earnest (the vast majority of which I spent cooped up at home due to quarantine), I have accomplished quite a lot! In this post, I will discuss what I have accomplished so far, a change in project scope, takeaways from the various technologies I have worked with, and the next milestones for the project. Accomplishments during March Term / Spring Break Created a Java/Kotlin API  Wrote a DSL (domain-specific language) in Kotlin Allows for a user-friendly experience for declaring parameters for the nodes, and specifying the algorithm. Currently only has support for discrete and iterative algorithms (can only visit integer coordinate locations, and occurs on a timed cycle). Create the ability to spin up any number of agents Create objects that the user can use for storing locations, weights, etc. Completed the communication capability with gRPC, none of which is exposed to the user.  This takes care of the ...

AgentSim: Rationale and Goals

I am spending the five weeks of March Term and Spring Break working on this, with plans to continue this project in the summer. For the overall project, I have two core goals: 1) Develop a self-contained framework necessary to simulate and test the efficacy of algorithms for a multi-agent system (e.g. drones, ground robots) , with an easy-to-use and documented API with cross-language support. 2) Develop, implement, and test algorithms with a specific application in mind. Identify other possible applications of such a system.  The idea for this project began with the research I conducted at the University of California, Santa Barbara in the summer of 2019. I focused on simulating a system where a set of distributed drones have to maximize their combine coverage in a weighted environment, but in such a way where each drone makes its own decisions. There is no centralized server or node providing instructions to all other drones. The drones also have limited prior know...

Australia Blog – Part 2

Image
I have less than a week left in Australia, and it has been a blast! Because I have been taking year 10 classes but Patrick is in year 11, I have been able to make friends with people from both grades. Overall, everyone has been really friendly to talk to. I've finally gotten a lot of names down, and have enjoyed talking to friends about all of the differences between Australian and American slang, culture, and politics.  Through these conversations, I have also continued to notice a number of differences between here and America. The Australians' treatment of Aboriginals is very different from how we treat the Native Americans. Last week, we had an assembly at school for Reconciliation Week, which is an annual week dedicated to recognizing the wrongs that the Europeans committed when violently colonizing Australia, and reconciling with them. There were three Aboriginal visitors from the local tribe at the assembly, who began it with a traditional "smoke ceremony." ...

Australia Blog – Part 1

Image
I just arrived in Adelaide on Sunday, and it's felt like a whole new world out here. Right out of the airport gate, I was surprised to discover Angela (Patrick's mom) and Julia Chukwani (the exchange coordinator) waiting for me. They didn't have to wait outside of the airport: in Australia, anyone can come straight up to the gate! When I left the airport, I made my next blunder: getting into the right side of the car, until I realized that there was a steering wheel in front of me. Then, of course, was the adjustment period for driving on the left side of the road rather than the right. Although this was not my first time in a country that drives on the left, (e.g. England, India), it was still something I was not readily used to. I also needed to acclimate myself to the sudden change in season, and consequently the weather. Instead of the sun setting at almost 9pm, it set at just after 5, and the weather was cold and rainy (very different from the burning Australia weathe...

Interviewing CIS Director Candidates

In the past few days, I have had the opportunity to interview three candidates for our school's new position as the Director of the Carter Innovation Studio. The position itself is a very fluid one: at a minimum their job will involve managing the administrative duties of running a facility such as the CIS, but the goal is that the director will be an active member of the community in bringing science and engineering to the forefront of our school's priorities, and have outside connections to help facilitate such change. A candidate may teach Applied Science or a technical task, they may help out with our robotics team, continue the school's stagnated airplane project, or begin a new Uniquely Athenian program involving the CIS. Now for the candidates themselves: the candidates' backgrounds and experiences seemed to be very variable, but all of them were impressive candidates for the position. All three have experience with teaching in the maker/STEM fields, but that ...

Positronics – Day 1

Today was my first day at Positronics, a robotics software company, and I will be working here for the next three and a half weeks for our school's inaugural March Term. The System My goal is to optimize a robotics manufacturing process that Positronics has developed. The system assembles a heating plate for a vacuum chamber that is used for semiconductor manufacturing in a clean room environment. The system consists of a 6-axis  Universal Robot Arm , which has two attachments:  Robotiq  gripper, used for handling bolts, and a screwdriver (allen key). In order to assemble the vacuum plate, these are the steps the system must take: Attach the gripper attachment to the robot arm Pick up the bolts from a bolt holder and place them in each of the 40 holes on the plate Screw all bolts to the following torque settings: 5 lb-in 20 lb-in 40 lb-in 60 lb-in Verify the 60 lb-in of torque twice Optimization The system is already in deployment, but is in need of...

Running Maker Faire Booth for Robolink in San Diego

Last weekend, Donovan and I flew down to San Diego to help run Robolink's Maker Faire booth there. For the last month, we worked to get our Machine Learning demo working. Our goal was to get the Zumi to be able to distinguish between a coke can and an apple and react accordingly by driving either forwards or backwards. An added constraint was that the model would have to be small enough to run quickly on a Raspberry Pi Zero, a computer that has less than 0.5 GB of RAM and a very small CPU. Creating the Demo Data We began by collecting the data with a Jupyter Notebook that took a picture every 0.5 seconds and displayed the picture on the laptop screen. We took approximately 1000 photos each of the apple and the coke can. We decided to use Google Colaboratory to train the model, so we uploaded all of the photos to Google Drive. We used Keras for the data augmentation and training. The Keras ImageDataGenerator took care of the data augmentation (we chose to use rescaling, zoom...

Teaching Python at STEAM Series

On Saturday, I taught my first programming class ever, at a STEAM workshop at Santa Clara University that was put on by WRRF. I really enjoyed teaching others how to program in Python, and all of the students at the class were quite engaged. When I committed to teaching this class with less than a week's notice, I had no idea where to start with the curriculum. What would students with no prior experience in programming learn from just a 90 minute preview? After I consulted with Paul and realized that he had an array of ideas on what I could teach, I brought him on board to help me teach the curriculum. I also invited Donovan to co-teach the class with me. After the three of us had our first discussion, I realized that there was no way the students would emerge from the class being Python experts. A successful class would mean that they would have a basic knowledge of Python fundamentals. The students would have enough knowledge of Python, and enough motivation, to continue le...