CPE 322-A
Michael Dasaro
Michael Dasaro
Needs Assessment:
My Senior Design project has several aspects that require a Computer Engineering problem-solving effort.
Objective: Build a functional prototype involving a disposable, water-tight, 8" cubed capsule, and a quadcopter drone to fit inside capable of completing a mission.
The mission involves remote deployment, delivery of a 2lb payload to a preset destination, and landing at a third location.
An interface must allow destination changes before and during the mission.
The capsule must survive underwater for a significant amount of time.
The quadcopter must fly autonomously to its destinations without human interference.
Background: This project is sponsored by General Dynamics Mission Systems and is primarily a proof of concept. If successful, this idea could be tested thoroughly and developed into a proper product.
Methodology: My team is in the process of developing ideas and testing calculations to determine the best course of action for this objective. We plan on having a firm, properly tested idea and parts ordered by the end of the semester. Next semester we will assemble and test the prototype, and integrate our project with the necessary software.
Expected Results: We expect our prototype to meet most, if not all of the project objectives. Further, we expect our prototype to be robust, repeatedly successful, and efficient.
Costs: We expect our project to cost approximately $1000, and we have a maximum budget of $5000 from our sponsor. We will have a better idea of our costs once we decide on a final design and begin drafting a bill of materials.
Problem Formulation:
KT Problem Analysis (more to come later):
-Link in case website integration isn't working
I have lots of experience in Python so the first part of the section was mostly information that I already knew. However, I still learned a few things and reviewed Python syntax while going through tthe exercise. I also pulled the GitHub repository as seen below and ran some of the sample code. I also took the opportunity to update libraries with 'apt update' and 'apt upgrade' and update pip3 and all installed packages. I daily drive Linux (Ubuntu 20) on my laptop so I used that to run all Python code.
Lesson 4:
I followed the steps to install Django and all other necessary requirements, then started a test Django server following the 'Stevens' example. This screenshot is before copying the Stevens example index.html, I'm getting an error after making those changes and looking into it, it may be something related to me running this on my laptop instead of on a Raspberry Pi.
Error: RuntimeError: Model class myapp.models.TemperatureData doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
After fixing the issue of missing the line 'myapp', in the settings.txt in the stevens project, I was able to get the server running successfully.
Solution Development:
My Senior Design project is split up into modules that must meet certain requirements to be successful. They are as follows:
Capsule
The capsule will measure a maximum of 8x8x8 inches and be positively buoyant.
It must rise to the surface when released and have a mechanism for opening a lid capable of releasing a quadcopter.
The quadcopter drone must fit inside the capsule
Be capable of taking off from the capsule with an opened lid
Fly autonomously to a destination and relay information back to a user
Land, drop a payload, and land somewhere else.
Each modules has several submodules. They are:
Capsule
Base / Lid
Hinge / clasp
Clasp release / spring / other opening mechanism
Power system / solenoid / other release electronics
Platform / interior separation between drone and electronics
Drone
Quadcopter frame
Motors / propellers
Flight controller / flight computer / GPS / communication system
Sensors / camera / downward distance sensor
Payload clasp / payload release mechanism / payload
Lesson 5:
Patents of similar devices
This patent relates to a system for deploying an autonomous underwater drone from a ship. The main difference between this and my project is that it involves deploying an underwater device and mine deals with deploying an aerial drone.
This patent is for a buoyant enclosure deployed by a marine vessel containing resources such as a drone that can be deployed from the enclosure after it floats to the surface. This is heavily related to my project, although its form factor is must smaller, preventing it from carrying a high-capacity quadcopter like my project involves.
This screenshot shows Paho sending and receiving data on my Linux laptop. All the code worked except the raspi specific publication and subscription code.
I already had Node JS installed on my computer so it was easy to quickly inspect and run the examples. They worked without any issues.
Pip seems to have failed to install Pystache properly, resulting in this error when run. I will look more into the issue and try it on my desktop.
This model shows three different concepts for the base of our capsule. It includes a box, cylindrical, and spherical design. We are currently weighing the benefits of each for sizing, buoyancy, pressure handling, and ease of opening.
This CAD model shows a hinge design (on a box, but applicable to any shape). This hinge is special because it is shaped in such a way that allows the lid to fall off the base into the water after opening.
I got my ThingSpeak account and API key working fairly easily. Here it is after sending data for a few minutes.
This morphological chart shows options and our current pick for solving each of these 4 main goals in our project.
Ethics: The ethical concerns with my project come mostly from the unknown applications and uses it could have in the real world. The project is a proof of concept for a product that General Dynamics could eventually produce and sell to the military with various adaptations for various uses. It's possible that our prototype could inspire a product that's weaponized, which could be used in questionable ethical situations.
Liability: Concerning liability, the most important part of our project is ensuring that our capsule is watertight and doesn't damage the drone. Additionally, we need to ensure that a connection to the user is always maintained and reliable. Finally, the product must be easy to use with a simple interface, and the drone must be stable enough to fly autonomously without any risk of damage.
I installed the dependencies on WSL2 and on my Linux Ubuntu laptop (numpy scipy scikit-learn matplotlib pandas tensorflow keras).
All of the PyPlot code ran easily and successfully.
Lab 8B: Data Analysis
The histograms and scatter plots all worked successfully as well, the screenshot shows all 6 Figures from plt_final.py
The main solution to the ethical concerns is confirming the use-cases for the product and ensuring that it is optimized for ethical uses. Beyond that, there isn't any control we have over what the product could evolve to or the militaristic uses the military might find for it, but it at least ensures that the product can be used ethically. Reducing misuse of the product can be done by ensuring that the user-interface is intuitive and safe to use. Ensuring that our drone is stable, reliable, and will follow instructions given to it, avoiding collisions, accidental drops or damages, will help avoid any misuse scenarios. This also helps reduce liability. If the product is safe to use and reliable, we have little liability to the issues that may develop as the product evolves or is used for different use cases than we originally designed it for.
After having trouble installing YANG on my Linux laptop, I tried it on Windows with WSL2, yet on the first command, it failed to create intrusiondetection.yin
I will look into this further, try the Linux instructions on WSL2, or try it on my RaspberryPi as soon as possible.
After creating my account I noticed the opportunity to code directly in the browser and began exploring that. It seems that I could avoid the complicated RaspberryPi setup and just run the Python code here. I experimented a bit using the "Getting started" code and then ran the test code from the Lesson9 repo. All seems to be working correctly.
Revisiting morphological chart from exercise 7. The following are weighted kT analysis that we used in our presentation to GDMS last week:
The following presentation is our last progress update to GDMS: GDMS Presentation 2