Monday, February 13, 2017
Monday, December 19, 2016
Progress Report 12/19
We were able to run the file from last year, the code without the input. (Drone Control No-Control.js) We tried to understand the code and took some notes on the code. We are currently in progress of taking more notes and understanding more of the code. We took notes on the first half and some of the image processing. We tried to understand what blobs are and what las year did. Last year they used something called morphological operations. We also found that last year tried to find blue and light orange, and they are trying to detect the colors and move the drone away. Please go into their code and read the readme.md. We are also in the process of making a new blog and porting everything over. Slow progress.
Sunday, December 11, 2016
Thursday, December 8, 2016
Progress Report
We were able to make more progress this week. Mr. Lin said that we have to recap what we did this week and take notes so that we won't forget what we did. This week, we were able to get image stream from the drone by using ar-drone modules. If you want, here is a link that will bring you a bunch of ar-drone modules: http://www.nodecopter.com/modules. Heres's the link to the ar-drone png module: https://github.com/Soarez/ar-drone-png-stream. Follow the instructions in the readme.md to install. We had some trouble installing the module at first, but through research we have found that the module needs to be in the folder where you installed felixge's ar-drone module. Open up terminal, then enter /Users. Go to STEM, or whatever local account you logged in. You need to place the ar-drone-png-stream module that you downloaded in there. Then, enter npm install ar-drone-png-stream-master -g. (There is a space between master and -g). It should theoretically install. When installing in terminal, do not follow the instructions. There is also some lag (about 1 second) in the image stream. Remember to connect to the drone's wifi.
Anyways, for the time now, we have also made a program which will run a whole bunch of commands at once, instead of running each command in terminal, which is what we have been doing. We followed the instructions on instructables (how to hack ar-drone). We pasted in the code into sublime text and were able to make a javascript file. To run it, go to terminal and type node, then drag the javascript file in. Make sure to press enter after this and not before node... This will make the drone follow the instructions in the script. In the meantime, we are making the powerpoint presentation and trying to improve the code and stuff.
Good luck!
Anyways, for the time now, we have also made a program which will run a whole bunch of commands at once, instead of running each command in terminal, which is what we have been doing. We followed the instructions on instructables (how to hack ar-drone). We pasted in the code into sublime text and were able to make a javascript file. To run it, go to terminal and type node, then drag the javascript file in. Make sure to press enter after this and not before node... This will make the drone follow the instructions in the script. In the meantime, we are making the powerpoint presentation and trying to improve the code and stuff.
Good luck!
Thursday, December 1, 2016
Progress Report
We have managed to make the drone fly on one of the computers, A1. We are able to send simple commands to the drone, and we are able to make it take off and land, and we are also able to make the drone hover about 3 feet off the ground. Sometimes the drone doesn't work because of connection errors, and the drone would work 1 day and not the next. However, we think that it doesn't work sometimes actually because of battery issues. We are working on making autonomous programs that will run in Text Wrangler instead of typing lines of code in Terminal, which is what we are currently doing. We will also test other commands and try to remove the altitude limit.
This is what we are able to do so far.
*Don't type the quotation marks!
Steps to make the drone take off and land:
*Connect the computer to the drone WiFi before following the steps!*
1. In terminal, type "node" in order to send javascript commands to the drone. An icon on the screen should change to ">"
2. After that, type "var arDrone = require('ar-drone');"
There should be a return value "undefined".
This is what we are able to do so far.
*Don't type the quotation marks!
Steps to make the drone take off and land:
*Connect the computer to the drone WiFi before following the steps!*
1. In terminal, type "node" in order to send javascript commands to the drone. An icon on the screen should change to ">"
2. After that, type "var arDrone = require('ar-drone');"
There should be a return value "undefined".
3. After that, type "var client = arDrone.createClient();"
There should be another return value "undefined".
4. You can now start sending commands to the drone. This command will make the drone take off and hover at about 3 feet. Type "client.takeoff();"
There should be another return value "true".
5. This command will make the drone land. Type "client.land();"
There should be another return value "true".
6. You can also make the drone spin clockwise and counterclockwise using "client.clockwise(1);" and "client.counterClockwise(1);". You can change the speed in which it rotates by changing the values in the parentheses from 0 to 1.
Thursday, November 17, 2016
Prior Art for Drone Delivery and Image Processing Code
I did some research from last year's blog posts and also their code and presentations. Below are a few links and screenshots of their code.
This is their pseudocode in the beginning.
Here's their powerpoint which includes their code for image processing and a brief description.
Presentation 3
Here's their powerpoint which includes their code for drone delivery and a brief description.
Presentation 4
Most importantly, here's their final product. They coded this in JavaScript and I was able to open it using Adobe Dreamweaver. However, I was not able to understand most of this because I don't know Javascript. I am also unsure how we will apply MatLab image processing to this either. Really confused.
Final Product
This is their pseudocode in the beginning.
Here's their powerpoint which includes their code for image processing and a brief description.
Presentation 3
Here's their powerpoint which includes their code for drone delivery and a brief description.
Presentation 4
Most importantly, here's their final product. They coded this in JavaScript and I was able to open it using Adobe Dreamweaver. However, I was not able to understand most of this because I don't know Javascript. I am also unsure how we will apply MatLab image processing to this either. Really confused.
Final Product
Wednesday, November 16, 2016
Progress Report - November 16th, 2016
Today, I was able to master most of the MatLab tutorial. I was able to finish sections 8-12 today, and should it should be finished by tomorrow. I also looked at some image processing commands given in Matlab that we could possibly use for our drone experiment. They are listed below.
- imread = reads image from graphics file
- imwrite = write image to graphics file
- tonemap = render high dynamic range image (HDR) for viewing
- makehdr = create high dymanic range (HDR) image
- hdrread = read high dynamic range (HDR) image
- restwrite = create reduced resolution data set from image file
- rgb2gray = convert RGB image or colormap to grayscale
- imbinarize = binarize image by thresholding
- gray2ind = convert grayscale or binary image to indexed image
- rgb2ntsc = convert RGB color values to NTSC color space
- iccread = read ICC profile
There are many more commands that I still have to look into.
Questions I have:
1) When looking through the commands, I noticed that some mentioned using the Otsu method. What is the Otsu's method? How is it used in image processing?
- imread = reads image from graphics file
- imwrite = write image to graphics file
- tonemap = render high dynamic range image (HDR) for viewing
- makehdr = create high dymanic range (HDR) image
- hdrread = read high dynamic range (HDR) image
- restwrite = create reduced resolution data set from image file
- rgb2gray = convert RGB image or colormap to grayscale
- imbinarize = binarize image by thresholding
- gray2ind = convert grayscale or binary image to indexed image
- rgb2ntsc = convert RGB color values to NTSC color space
- iccread = read ICC profile
There are many more commands that I still have to look into.
Questions I have:
1) When looking through the commands, I noticed that some mentioned using the Otsu method. What is the Otsu's method? How is it used in image processing?
Sunday, November 13, 2016
Progress Report - November 13th, 2016 (Part 2)
Today, I was able to do some research on Matlab's tools, and also master another part of the tutorial they had given. Here are the notes from the tutorial:
- x = A(5,7); - this code if typed will basically retrieve data from an array from a specific area, in this sample, it will retrieve it from data set A, in row 5, column 7. Could be very useful.
- a colon specifies all elements in that dimension, for example, x = A(2,:) creates a row vector that contains all the elements from row 2 of data set A.
- x = v(3:end) refers to the elements from 3 to the end
-You can multiply or divide all of the elements of an array, subtract, add, and much more.
- You can also apply the special commands given by Matlab, like sqrt() on all elements of an array with ease as well
- you can learn more about functions that you don't know by using the "Help" button, and using that, you can browse content - learn about syntaxes and examples
I will be conducting more research and hope to finish more of the tutorial tomorrow.
- x = A(5,7); - this code if typed will basically retrieve data from an array from a specific area, in this sample, it will retrieve it from data set A, in row 5, column 7. Could be very useful.
- a colon specifies all elements in that dimension, for example, x = A(2,:) creates a row vector that contains all the elements from row 2 of data set A.
- x = v(3:end) refers to the elements from 3 to the end
-You can multiply or divide all of the elements of an array, subtract, add, and much more.
- You can also apply the special commands given by Matlab, like sqrt() on all elements of an array with ease as well
- you can learn more about functions that you don't know by using the "Help" button, and using that, you can browse content - learn about syntaxes and examples
I will be conducting more research and hope to finish more of the tutorial tomorrow.
Progress Report - November 13th, 2016 (Part 1)
After our presentation on our literature survey, it was suggested that we should understand the main components of what makes the drone function, and conduct more research on the things we don't understand yet. For example, some things we didn't fully understand are Kalman filtering, visual perception, and more. In all reason, we must continue to work forward and build our understanding on the past projects researchers have made. Therefore, we will continue to read these works and build our understanding on these past projects. Also, it was suggested that we should continue to master Matlab, considering the great importance it might play in our project. As a result, we will be continuing on mastering our skills and understanding of Matlab to be prepared for our research project.
Monday, October 31, 2016
Sunday, October 30, 2016
Monday, October 24, 2016
Progress Report - October 24th, 2016
We were able to make some progress on the basics of Matlab. Using the trial of Matlab, a tutorial course is provided, and we are currently in the process of using this tutorial course. This will allow us to understand the basic infrastructure of Matlabs, the commands Matlab has for us to use, and just a basic familiarity with the Matlab program itself. Here are the things were accomplished in the course, and some possible/useful notes for later.
Mastered:
- Entering Commands
- Storing Data in Variables
- Using Built-In Functions and Constants
- Manually Entering Arrays
- Creating Evenly-Spaced Vectors
- Array Creation Functions
- and others
Useful Notes:
- the clear function will clear the data in the Workspace (where data variables are stored)
- the clc function will clear the Command Window
- you can name your Matlab variables anything as long as they start with a letter and are only made of letters, numbers, and underscores (_)
- you can set your variables equal to values, for example, m = 20, and it will be stored in the Workspace for later use
- to use such variables, use the "up" button on your computer to look at past functions and commands
- there are many built-in functions and values like pi, sin, and abs.
- All Matlab variables are arrays, each variable can contain multiple elements, a single number is called a scalar.
- using the rand function, you can create matrices with random values
Mastered:
- Entering Commands
- Storing Data in Variables
- Using Built-In Functions and Constants
- Manually Entering Arrays
- Creating Evenly-Spaced Vectors
- Array Creation Functions
- and others
Useful Notes:
- the clear function will clear the data in the Workspace (where data variables are stored)
- the clc function will clear the Command Window
- you can name your Matlab variables anything as long as they start with a letter and are only made of letters, numbers, and underscores (_)
- you can set your variables equal to values, for example, m = 20, and it will be stored in the Workspace for later use
- to use such variables, use the "up" button on your computer to look at past functions and commands
- there are many built-in functions and values like pi, sin, and abs.
- All Matlab variables are arrays, each variable can contain multiple elements, a single number is called a scalar.
- using the rand function, you can create matrices with random values
Wednesday, October 12, 2016
Dissertations
http://www.sciencedirect.com/science/article/pii/S1474667016438188
http://dare.uva.nl/document/2/108159
http://mav.sagepub.com/content/3/4/183.full.pdf+html
http://www.nickd.nl/dl/thesis_Nick_Dijkshoorn.pdf
We will add more resources over time. Also, notes on these research papers will be posted, mostly explaining the most useful aspects of these past experiments that can help us for our work.
We will most likely post notes on these articles during the weekend of October 15 - 16.
http://dare.uva.nl/document/2/108159
http://mav.sagepub.com/content/3/4/183.full.pdf+html
http://www.nickd.nl/dl/thesis_Nick_Dijkshoorn.pdf
We will add more resources over time. Also, notes on these research papers will be posted, mostly explaining the most useful aspects of these past experiments that can help us for our work.
We will most likely post notes on these articles during the weekend of October 15 - 16.
Thursday, October 6, 2016
Wednesday, October 5, 2016
Thursday, September 29, 2016
How to detect and track objects
I found an article describing how to detect and track objects. Here it is.
Sunday, September 25, 2016
Thursday, September 22, 2016
Initial Project Planning
- Project Description and Merits
The project is to build a program that will allow a drone to navigate by itself by detecting obstacles or following a set of instructions or signals, such as colored lines. This project will advance STEM because it allows for further advancements in drones and can lead to autonomous drone tracking and it will allow the drone to think and make decisions, as well as corrections, itself. This can decrease drone accidents and make the controller’s lives easier, and will be more precise and is faster than a human input. Not just that, since the drone will be operating in an indoor environment, it will be essential for the drone to be able to "sense" or "map" the environment around itself. This could help our worldwide community in many ways, provide possible methods of deliveries into warehouses/factories/offices, rescue, and just overall, evaluating the environment around itself, especially if it is dangerous.
- Group/Team Communication
The only members of our group are me and Ayoush. We may need to work with group 2 (Jacob, Alan, and Ryan) because they are also working with drones, and coding as well. We will communicate with each other via Facebook Messenger, Hangouts, and other methods.
- Prior Work/Resource Inventory
- Node.js - Node.js is a programming language that is essential for the coding of our drone. It will allow us to give the drone commands, control the drone, etc.
- AR.Flight 2.4.10 - This app will allow us to experiment with the drone, especially its movements. Understanding the movements of the drone will be essential to how we code commands for the drone.
- Robot Operating System (ROS) - This website will provide us powerful programming tools that could help us program our drone.
- Line following code - This database will allow us to analyze the code used by the group from last year, and make improvements in the code, to make the drone operate with a better performance and efficiency.
- How to use Git and GitHub - We must learn how to use GitHub if we are to make improvements and corrections to our code and store our files safely for further use at home or school.
- There are many other tools that we can use in our Project Resource page, and more will later be specified.
- Technology Analysis
We need coding and engineering. We need coding in order to code the drone to follow lines and other commands, and we also need to write a script for the drone to follow. We also need to program the drone to interpret the data. We need engineering in case something goes wrong or we need to fix something physically. We will also need to be able to navigate the drone, and as a result, we will need to use the camera of the drone to help with navigation. Since our main objective is to make the drone follow a colored line, it is essential that we use the camera, and develop code for image processing. This will allow the drone to process images and then follow the colored line. The drone should also be able to dodge obstacles or redirect its route based on the objects it sees ahead, or on its way. As a result, a code will be necessary for the drone to recognize a 3D entity, the object, and then redirect a route around it. As a result, there is still much we need to do, and many tasks ahead of us.
Examples of the technology we need are...
- Javascript
- Node.js module
- Felixge’s AR Drone module
- An IDE, one that can run programs too
- Competence
Again, the skill sets that we need are coding and engineering for the same reasons. We also need to be patient and accept failure and are persistent. We also need to be precise and run many trials.
Skill Sets:
- advanced knowledge of Microsoft Word, and Powerpoint
- knowledge of Microsoft Excel (possible to become better through practice)
- knowledge of commands and modules in node.js
- advanced knowledge of computer
- basic skill in controlling drone through applications
More skills will be added over time.
- Safety
Safety is not a concern, however there are possible safety issues such as:
- getting cut by the drone blades.
- getting hit by the drone
- the drone hitting a classmate, or student
To keep our fellow peers and ourselves safe, we will most likely conduct drone experiments far away from the drone but close enough for the drone to be in sight to observe any errors in the drone control. Also, we will most likely conduct these experiments in an open-enviornment like the corridors at times where students are not walking through the corridor often, such as afterschool, and in the morning. We could also possibly conduct experiments in the gym too, if empty, due to its extensive space.
- Equipment, Materials & Budget
We will need the FreeFlight AR Drone, a Windows Laptop, and a Mac. There should be no software costs because we will be using free, open-source software. We will need to download Node.js, Felixge’s AR Drone module, and Sublime Text 3.
- Schedule
Subscribe to:
Posts (Atom)






