Sunday, July 31, 2016

Summer Research Week 5 (08/01 - 08/05)

Software/Tools

  • How to use Git and GitHub, Udacity.  Sign up the Udacity for accessing to some of the free materials. Start this free course at your own pace to pick up the Git and GitHub. You are going to use them to handle your software projects.
Based on your notes, it seems to me that you haven't move too far on your last assignments yet. I suggest that you can continue watching the Node.js tutorials (finish at least 6 videos) and go through and take notes of the Prior Art of last year. These will prepare you to read and understand the code from last year.

Tuesday, July 26, 2016

Notes on Video #4 Tutorial by thenewboston

Watching this video, there were many confusing aspects but the video mainly involved the handling of multiple requests. Watching the video, it was simple to understand that the increased use of "NodeJS" code is mainly because of its efficiency and speed. This type of code is used mainly in real-time web applications and social networking applications for handling multiple requests. In the video, some key points were...

  • the setTimeout command - this command basically tells and scheduling a bit of code to run in 5 seconds. This command is usually instantaneous. 
  • console.log is a function mainly used to print a certain text, and usually can be linked to a specific function, if specified.
  • you can also place functions in the process of another function, and run a bit of code

Simply think of this as a situation involving a waitress, a cook, and the customers. The customers are requesting for some data from the database, and the database basically represents the cook. The waitress will take the request, give it to the chef and individually do this to each customer. This would however, take a long period of time. Instead, using this type of code, including the setTimeout command, the waiter which practically represents the node.js code, will take all the requests simultaneously and then return the orders back from the database in a set period of time from the setTimeout command. Basically instead of taking one order at a time and waiting in between to return the order, it will instead take each request and give it to the chef to satisfy each request. This makes the code quicker and more efficient. 

Note: This example is based of the example the tutorial gave. 

Notes on Video #3 Tutorial by thenewboston

  • Basics of Javascript - concepts that are really important to understand

  • When you make objects in javascript, exact same as in node js
  • Console.log = prints out the properties
  • Javascript code is usually run only once, however, this node js code will run on your server and therefore run continuously
  • Any function without an explicit return statement, always return undefined
  • We usually give names to functions so we can reference them, however, we don’t need to that in node js
  • The function “setTimeout” will tell when will the code run, or when to send the results back from the database

Sunday, July 17, 2016

Summer Research Week 3 (07/18 - 07/22)

Prior Art
  • Final Presentation:  Start with the final presentation in details from last year. Pay attention to the problems they have encountered in each stage, and the solutions they have tried. Also pay attention to the "Resource" slide. You might want to include many useful links and update your "Project Resource" page.
  • Blog: Browse through the team blog from last year. Pick up anything useful to you.
Nodecopter
  • Node.js: Download and install Node.js from nodejs.org.
  • AR Drone Module: Get the ar-drone module from GitHub.
  • Nodecopter: Use the code in Nodecopter to program the drone. 
Node.js
  • Node.js Tutorials: You may start watching some  tutorials of node.js at your own pace from YouTube channels such as thenewboston, Learning NodeJs, etc.
Code 
  • Download the code from last year. Try to understand the high-level structure and function of the code.

Special Moves


  • Enable flips and double tap to enable an automatic flip. 

AR Drone Developer Guide Notes


  • Each pair of opposite rotors is turning the same way. One pair is turning clockwise and the other is turning anti-clockwise. 
  • Varying left and right rotor speeds the opposite way yields roll.
  • Varying front and rear rotor speeds the opposite way yields pitch. 
  • Varying each rotor pair speed the opposite way yields yaw. 
  • Drone can be set in light and low wind drag config. 
  • Tags can be added to the external hull to allow several drones to easily detect each others via their cameras. 
  • If a propeller encounters any obstacle, the drone will detect if any propeller is blocked and stop all engines immediately. 
  • The drone has many sensors are are used for stabilization and assisted tilting control, VS control, hovering, and trimming. 
  • All manoeuvres are completely assisted. 
  • Alt limit, yaw limit, vs limit, tilt limit can all be tuned. 
  • The front camera is a CMOS sensor with a 90 degrees angle lens. 
  • Connect to drone via Wifi network.
  • Drone contains a 3 axis magnetometer sensor and pressure sensor. It also measures ultrasound performance. 
  • Drone uses a standard USB-A connector. 
  • Drone library contains high level API's to access the drone. 

Sunday, July 3, 2016

Summer Research Week 1 (07/04 - 07/08)

AR Drone 2.0
  • Read AR Drone Developer Guide, Parrot [chap. 1-3, 17 pages]. This guide will give you an overview of the structure, operations, hardware, software, and communication of AR Drone 2.0. Take notes on what you have learned.
  • Download the FreeFlight app from the App Store (for iPhone/iPad) or from the Play Store (for Android). Watch AR Drone video Tutorials #1 and #2, and learn how to fly the drone. Identify the features and app options you want to try out later.
  • Fly the drone! First, pay attention to all the safety concerns about yourself, the bystanders, the drone, and the surrounding environment before you fly. You can grab the drone while flying and turn it up-side-down which will cause it to enter an emergency mode which shuts down the motors. This is great for self-defense, as well as stopping a drone that is out of control. It's better to fly it in an open field. Start at low speed and limited height before you are trying more advanced movements. Go through all the basic movements (e.g., forward, backward, left, right, clockwise, counter-clockwise, up, down, etc) that the drone can do, and try to combine some of them to create more complex movements (e.g., forward and up, U-turn, spiral-up, etc.) Create various complex movements yourselves, and take notes on what are them and how to create them. These exercises will give you first-hand experience and understanding of the drone navigation. Latter on, your are going to make the drone perform these tasks autonomously. So, it's crucial for you to understand them thoroughly before you can program it.