āĻāĻ āĻāĻŋāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ā§ āĻāĻŽāĻ°āĻž Node.js āĻāĻŦāĻ āĻāĻ¯āĻŧā§āĻŦ āĻ¸ā§āĻĒāĻŋāĻ API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¯āĻŧā§āĻ¸ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĄā§āĻ°ā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻ¤ā§āĻ°āĻŋāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻĻā§āĻāĻŦāĨ¤ āĻāĻĒā§āĻāĻžāĻ° - āĻĒā§āĻ¯āĻžāĻ°āĻ āĻāĻāĻ°āĻĄā§āĻ°ā§āĻ¨ 2.0āĨ¤
āĻāĻŽāĻ°āĻž āĻŽāĻ¨ā§ āĻāĻ°āĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻā§āĻāĻŋ: "Habr"-āĻāĻ° āĻ¸āĻāĻ˛ āĻĒāĻžāĻ āĻāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ - "Habr" āĻĒā§āĻ°āĻāĻžāĻ°āĻŽā§āĻ˛āĻ āĻā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¯ā§āĻā§āĻ¨ā§ Skillbox āĻā§āĻ°ā§āĻ¸ā§ āĻ¨āĻĨāĻŋāĻā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ 10 āĻ°ā§āĻŦā§āĻ˛ āĻāĻžāĻĄāĻŧāĨ¤
Skillbox āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°ā§: āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ āĻā§āĻ°ā§āĻ¸
"āĻŽā§āĻŦāĻžāĻāĻ˛ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ° āĻĒā§āĻ°ā§" .
āĻā§āĻŽāĻŋāĻāĻž
āĻĄā§āĻ°ā§āĻ¨ āĻāĻļā§āĻāĻ°ā§āĻ¯āĻāĻ¨āĻāĨ¤ āĻāĻŽāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻāĻŽāĻžāĻ° āĻā§āĻ¯āĻŧāĻžāĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻ˛āĻ¤ā§, āĻĢāĻā§ āĻāĻŦāĻ āĻāĻŋāĻĄāĻŋāĻ āĻ¤ā§āĻ˛āĻ¤ā§ āĻŦāĻž āĻŽāĻāĻž āĻāĻ°āĻ¤ā§ āĻāĻĒāĻā§āĻ āĻāĻ°āĻŋāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻŽāĻ¨ā§āĻˇā§āĻ¯āĻŦāĻŋāĻšā§āĻ¨ āĻŦāĻžāĻ¯āĻŧāĻŦā§āĻ¯āĻŧ āĻ¯āĻžāĻ¨ (āĻāĻāĻāĻāĻŋ) āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻŋāĻ¨ā§āĻĻāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¤āĻžāĻ°āĻž āĻ¸āĻŋāĻ¨ā§āĻŽāĻžāĻ¯āĻŧ āĻāĻžāĻ āĻāĻ°ā§, āĻšāĻŋāĻŽāĻŦāĻžāĻš āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¸ā§āĻ¨āĻžāĻŦāĻžāĻšāĻŋāĻ¨ā§ āĻāĻŦāĻ āĻā§āĻˇāĻŋ āĻāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻĻā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧāĨ¤
āĻāĻ āĻāĻŋāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĻā§āĻāĻŦ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻĄā§āĻ°ā§āĻ¨ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĻā§āĻŦā§āĨ¤ āĻāĻ¯āĻŧā§āĻ¸ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻšā§āĻ¯āĻžāĻ, āĻāĻĒā§āĻāĻžāĻ° āĻāĻĒāĻ¨āĻŋ āĻ¯āĻž āĻāĻ°āĻ¤ā§ āĻŦāĻ˛āĻŦā§āĻ¨ āĻ¤āĻž āĻāĻ°āĻŦā§āĨ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻļā§āĻˇā§ āĻāĻāĻāĻŋ āĻ°ā§āĻĄāĻŋāĻŽā§āĻĄ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻŦāĻ āĻāĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖā§āĻ° āĻāĻŋāĻĄāĻŋāĻ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻ˛ā§āĻšāĻž
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨:
- āĻ¤ā§āĻ¤āĻž ARDrone 2.0;
- āĻāĻĨāĻžāĻ°āĻ¨ā§āĻ āĻ¤āĻžāĻ°ā§āĻ°;
- āĻāĻžāĻ˛ āĻŽāĻžāĻāĻā§āĻ°ā§āĻĢā§āĻ¨āĨ¤
āĻāĻāĻ¨ā§āĻĄā§āĻ/āĻŽā§āĻ¯āĻžāĻ/āĻāĻŦā§āĻ¨ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻ¸ā§āĻā§āĻļāĻ¨ā§ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤āĻāĻžāĻŦā§, āĻāĻŽāĻŋ āĻŽā§āĻ¯āĻžāĻ āĻāĻŦāĻ āĻāĻŦā§āĻ¨ā§āĻā§ 18.04 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§āĻāĻŋāĨ¤
āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°
āĻĨā§āĻā§ Node.js āĻāĻ° āĻ¸āĻ°ā§āĻŦāĻļā§āĻˇ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨
āĻāĻĒā§āĻāĻžāĻ° āĻŦā§āĻāĻž
āĻĒā§āĻ¯āĻžāĻ°āĻ āĻāĻāĻ°āĻĄā§āĻ°ā§āĻ¨ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¤āĻž āĻŦā§āĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻ āĻāĻĒā§āĻāĻžāĻ°ā§ āĻāĻžāĻ°āĻāĻŋ āĻŽā§āĻāĻ° āĻāĻā§āĨ¤
āĻŦāĻŋāĻ°ā§āĻ§ā§ āĻŽā§āĻāĻ° āĻāĻāĻ āĻĻāĻŋāĻā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻāĻāĻāĻŋ āĻā§āĻĄāĻŧāĻž āĻāĻĄāĻŧāĻŋāĻ° āĻāĻžāĻāĻāĻžāĻ° āĻĻāĻŋāĻā§ āĻā§āĻ°ā§, āĻ
āĻ¨ā§āĻ¯āĻāĻŋ āĻāĻĄāĻŧāĻŋāĻ° āĻāĻžāĻāĻāĻžāĻ° āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ āĻĻāĻŋāĻā§āĨ¤ āĻĄā§āĻ°ā§āĻ¨āĻāĻŋ āĻĒā§āĻĨāĻŋāĻŦā§āĻ° āĻĒā§āĻˇā§āĻ ā§āĻ° āĻ¸āĻžāĻĒā§āĻā§āĻˇā§ āĻĒā§āĻ°āĻŦāĻŖāĻ¤āĻžāĻ° āĻā§āĻŖ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§, āĻŽā§āĻāĻ°āĻā§āĻ˛āĻŋāĻ° āĻā§āĻ°ā§āĻŖāĻ¨ā§āĻ° āĻāĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦā§āĻļ āĻāĻŋāĻā§ āĻāĻžāĻ˛āĻāĻ˛āĻ¨āĻ¯ā§āĻā§āĻ¯ āĻāĻ¨ā§āĻĻā§āĻ˛āĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻŽāĻ°āĻž āĻāĻĒāĻ°ā§āĻ° āĻĄāĻžāĻ¯āĻŧāĻžāĻā§āĻ°āĻžāĻŽā§ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋ, āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ˛ā§ āĻāĻĒā§āĻāĻžāĻ°ā§āĻ° āĻāĻ˛āĻžāĻāĻ˛ā§āĻ° āĻĻāĻŋāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻŦāĻžāĻŽ āĻāĻŦāĻ āĻĄāĻžāĻ¨ āĻ°āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻā§āĻ°ā§āĻŖāĻ¨ āĻāĻ¤āĻŋ āĻšā§āĻ°āĻžāĻ¸ āĻŦāĻž āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻāĻāĻŋ āĻ°ā§āĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻĄā§āĻ°ā§āĻ¨āĻāĻŋāĻā§ āĻ¸āĻžāĻŽāĻ¨ā§ āĻŦāĻž āĻĒāĻŋāĻāĻ¨ā§ āĻāĻĄāĻŧāĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤
āĻŽā§āĻāĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻ¤āĻŋ āĻāĻŦāĻ āĻĻāĻŋāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻžāĻ¤ āĻā§āĻŖāĻā§āĻ˛āĻŋ āĻ¸ā§āĻ āĻāĻ°āĻŋ āĻ¯āĻž āĻāĻĒā§āĻāĻžāĻ°āĻāĻŋāĻā§ āĻ āĻ¨ā§āĻ¯ āĻĻāĻŋāĻā§ āĻ¯ā§āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§, āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ ā§āĻ¯āĻžāĻ°ā§āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻā§āĻ¸ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻ, āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻŦāĻ˛ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻ¨ā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻŦā§āĻāĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻĒā§āĻ¯āĻžāĻ°āĻ āĻāĻāĻ°āĻĄā§āĻ°ā§āĻ¨ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§
āĻĄā§āĻ°ā§āĻ¨ āĻāĻāĻāĻŋ Wi-Fi āĻšāĻāĻ¸ā§āĻĒāĻāĨ¤ āĻāĻĒā§āĻāĻžāĻ°ā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻā§āĻ°āĻšāĻŖ āĻāĻŦāĻ āĻĒāĻžāĻ āĻžāĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻ¯āĻŧāĻžāĻĄāĻāĻĒā§āĻāĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻ¸āĻŦ āĻāĻ āĻŽāĻ¤ āĻāĻŋāĻā§ āĻĻā§āĻāĻžāĻ¯āĻŧ:
āĻĄā§āĻ°ā§āĻ¨āĻāĻŋ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛ āĻā§āĻ˛ā§āĻ¨ āĻāĻŦāĻ āĻā§āĻ˛āĻ¨ā§āĻ 192.168.1.1 - āĻāĻāĻŋ āĻāĻĒā§āĻāĻžāĻ°ā§āĻ° āĻāĻāĻĒāĻŋāĨ¤ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻĄ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻŽāĻĄāĻŋāĻāĻ˛ āĻŦāĻŋāĻāĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻŦā§:
- āĻāĻ¯āĻŧā§āĻ¸ āĻ¸āĻ¨āĻžāĻā§āĻ¤āĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻĒāĻŋāĻ API āĻ¸āĻš āĻāĻāĻāĻžāĻ° āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸;
- āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻž;
- āĻĄā§āĻ°ā§āĻ¨āĻā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻžāĻ āĻžāĻ¨ā§;
- āĻ˛āĻžāĻāĻ āĻāĻŋāĻĄāĻŋāĻ āĻ¸āĻŽā§āĻĒā§āĻ°āĻāĻžāĻ°āĨ¤
āĻ¯āĻ¤āĻā§āĻˇāĻŖ āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻ āĻ¸āĻāĻ¯ā§āĻ āĻĨāĻžāĻā§ āĻ¤āĻ¤āĻā§āĻˇāĻŖ API āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻĨāĻžāĻ°āĻ¨ā§āĻ āĻ¸āĻāĻ¯ā§āĻ āĻ¯ā§āĻ āĻāĻ°āĻŋāĨ¤
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ!
āĻā§āĻĄ
āĻĒā§āĻ°āĻĨāĻŽā§, āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻŋāĻ¤ā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°āĻŋāĨ¤
āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻ¨ā§āĻā§āĻ° āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ¨ā§āĻĄ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋāĨ¤
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŋāĨ¤
npm āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨â
āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°āĻŦ:
- āĻāĻĄā§āĻĄāĻ¯āĻŧāĻ¨ āĻāĻ°āĻž;
- āĻ āĻŦāĻ¤āĻ°āĻŖ
- āĻāĻĒāĻ°ā§ - āĻĄā§āĻ°ā§āĻ¨āĻāĻŋ āĻ āĻ°ā§āĻ§ā§āĻ āĻŽāĻŋāĻāĻžāĻ° āĻāĻ ā§ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻā§āĻ°āĻžāĻĢā§āĻ°āĻž āĻāĻ°ā§;
- āĻ¨āĻŋāĻā§ - āĻāĻ§āĻž āĻŽāĻŋāĻāĻžāĻ° āĻĒāĻĄāĻŧā§ āĻāĻŦāĻ āĻāĻŽā§ āĻ¯āĻžāĻ¯āĻŧ;
- āĻŦāĻžāĻŽ āĻĻāĻŋāĻā§ - āĻŦāĻžāĻŽ āĻĻāĻŋāĻā§ āĻ āĻ°ā§āĻ§ā§āĻ āĻŽāĻŋāĻāĻžāĻ° āĻ¯āĻžāĻ¯āĻŧ;
- āĻĄāĻžāĻ¨āĻĻāĻŋāĻā§ - āĻĄāĻžāĻ¨āĻĻāĻŋāĻā§ āĻ āĻ°ā§āĻ§ā§āĻ āĻŽāĻŋāĻāĻžāĻ° āĻ¯āĻžāĻ¯āĻŧ;
- āĻā§āĻ°ā§āĻŖāĻ¨ - āĻāĻĄāĻŧāĻŋāĻ° āĻāĻžāĻāĻāĻžāĻ° āĻĻāĻŋāĻā§ 90 āĻĄāĻŋāĻā§āĻ°āĻŋ āĻā§āĻ°ā§;
- āĻāĻāĻŋāĻ¯āĻŧā§ - āĻ āĻ°ā§āĻ§ āĻŽāĻŋāĻāĻžāĻ° āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ;
- āĻĢāĻŋāĻ°ā§ - āĻ āĻ°ā§āĻ§ āĻŽāĻŋāĻāĻžāĻ° āĻĢāĻŋāĻ°ā§ āĻ¯āĻžāĻ¯āĻŧ;
- āĻĨāĻžāĻŽāĻž
āĻāĻāĻžāĻ¨ā§ āĻā§āĻĄ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻ¤ā§, āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻĄā§āĻ°ā§āĻ¨ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤
const express = require('express');
const bodyparser = require('body-parser');
var arDrone = require('ar-drone');
const router = express.Router();
const app = express();
const commands = ['takeoff', 'land','up','down','goleft','goright','turn','goforward','gobackward','stop'];
var drone = arDrone.createClient();
// disable emergency
drone.disableEmergency();
// express
app.use(bodyparser.json());
app.use(express.static(__dirname + '/public'));
router.get('/',(req,res) => {
res.sendFile('index.html');
});
router.post('/command',(req,res) => {
console.log('command recieved ', req.body);
console.log('existing commands', commands);
let command = req.body.command.replace(/ /g,'');
if(commands.indexOf(command) !== -1) {
switch(command.toUpperCase()) {
case "TAKEOFF":
console.log('taking off the drone');
drone.takeoff();
break;
case "LAND":
console.log('landing the drone');
drone.land();
break;
case "UP":
console.log('taking the drone up half meter');
drone.up(0.2);
setTimeout(() => {
drone.stop();
clearTimeout();
},2000);
break;
case "DOWN":
console.log('taking the drone down half meter');
drone.down(0.2);
setTimeout(() => {
drone.stop();
clearTimeout();
},2000);
break;
case "GOLEFT":
console.log('taking the drone left 1 meter');
drone.left(0.1);
setTimeout(() => {
drone.stop();
clearTimeout();
},1000);
break;
case "GORIGHT":
console.log('taking the drone right 1 meter');
drone.right(0.1);
setTimeout(() => {
drone.stop();
clearTimeout();
},1000);
break;
case "TURN":
console.log('turning the drone');
drone.clockwise(0.4);
setTimeout(() => {
drone.stop();
clearTimeout();
},2000);
break;
case "GOFORWARD":
console.log('moving the drone forward by 1 meter');
drone.front(0.1);
setTimeout(() => {
drone.stop();
clearTimeout();
},2000);
break;
case "GOBACKWARD":
console.log('moving the drone backward 1 meter');
drone.back(0.1);
setTimeout(() => {
drone.stop();
clearTimeout();
},2000);
break;
case "STOP":
drone.stop();
break;
default:
break;
}
}
res.send('OK');
});
app.use('/',router);
app.listen(process.env.port || 3000);
āĻāĻŦāĻ āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻāĻŋāĻāĻŽāĻāĻ˛ āĻāĻŦāĻ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻā§āĻĄ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻĨāĻž āĻļā§āĻ¨ā§ āĻāĻŦāĻ āĻ¨ā§āĻĄ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻžāĻ āĻžāĻ¯āĻŧāĨ¤
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Voice Controlled Notes App</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/shoelace-css/1.0.0-beta16/shoelace.css">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<h1>Voice Controlled Drone</h1>
<p class="page-description">A tiny app that allows you to control AR drone using voice</p>
<h3 class="no-browser-support">Sorry, Your Browser Doesn't Support the Web Speech API. Try Opening This Demo In Google Chrome.</h3>
<div class="app">
<h3>Give the command</h3>
<div class="input-single">
<textarea id="note-textarea" placeholder="Create a new note by typing or using voice recognition." rows="6"></textarea>
</div>
<button id="start-record-btn" title="Start Recording">Start Recognition</button>
<button id="pause-record-btn" title="Pause Recording">Pause Recognition</button>
<p id="recording-instructions">Press the <strong>Start Recognition</strong> button and allow access.</p>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="script.js"></script>
</body>
</html>
āĻāĻŦāĻ āĻāĻ¯āĻŧā§āĻ¸ āĻāĻŽāĻžāĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻā§āĻĄ, āĻ¨ā§āĻĄ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĒāĻžāĻ āĻžāĻ¨ā§āĨ¤
try {
var SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
var recognition = new SpeechRecognition();
}
catch(e) {
console.error(e);
$('.no-browser-support').show();
$('.app').hide();
}
// other code, please refer GitHub source
recognition.onresult = function(event) {
// event is a SpeechRecognitionEvent object.
// It holds all the lines we have captured so far.
// We only need the current one.
var current = event.resultIndex;
// Get a transcript of what was said.
var transcript = event.results[current][0].transcript;
// send it to the backend
$.ajax({
type: 'POST',
url: '/command/',
data: JSON.stringify({command: transcript}),
success: function(data) { console.log(data) },
contentType: "application/json",
dataType: 'json'
});
};
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻāĻāĻŋ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻ¯ā§ āĻāĻĒā§āĻāĻžāĻ°āĻāĻŋ Wi-Fi āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻŦāĻ āĻāĻĨāĻžāĻ°āĻ¨ā§āĻ āĻā§āĻŦāĻ˛āĻāĻŋ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻ°āĻ¯āĻŧā§āĻā§)āĨ¤
āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ localhost:3000 āĻā§āĻ˛ā§āĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ°ā§āĻ āĻ°āĻŋāĻāĻāĻ¨āĻŋāĻļāĻ¨ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨āĨ¤
āĻāĻŽāĻ°āĻž āĻĄā§āĻ°ā§āĻ¨ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ āĻāĻŦāĻ āĻā§āĻļāĻŋāĨ¤
āĻĄā§āĻ°ā§āĻ¨ āĻĨā§āĻā§ āĻāĻŋāĻĄāĻŋāĻ āĻ¸āĻŽā§āĻĒā§āĻ°āĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§, āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻ āĻā§āĻĄāĻāĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§āĻ¨:
const http = require("http");
const drone = require("dronestream");
const server = http.createServer(function(req, res) {
require("fs").createReadStream(__dirname + "/public/video.html").pipe(res);
});
drone.listen(server);
server.listen(4000);
āĻāĻŦāĻ āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻāĻŋāĻāĻŽāĻāĻ˛ āĻā§āĻĄ, āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻĒāĻžāĻŦāĻ˛āĻŋāĻ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ°āĻžāĻāĻŋāĨ¤
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Stream as module</title>
<script src="/dronestream/nodecopter-client.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<h1 id="heading">Drone video stream</h1>
<div id="droneStream" style="width: 640px; height: 360px"> </div>
<script type="text/javascript" charset="utf-8">
new NodecopterStream(document.getElementById("droneStream"));
</script>
</body>
</html>
āĻ¸āĻžāĻŽāĻ¨ā§āĻ° āĻā§āĻ¯āĻžāĻŽā§āĻ°āĻž āĻĨā§āĻā§ āĻāĻŋāĻĄāĻŋāĻ āĻĻā§āĻāĻ¤ā§ āĻ˛ā§āĻāĻžāĻ˛āĻšā§āĻ¸ā§āĻ: 8080 āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨āĨ¤
āĻ¸āĻšāĻžāĻ¯āĻŧāĻ āĻāĻŋāĻĒāĻ¸
- āĻāĻ āĻĄā§āĻ°ā§āĻ¨āĻāĻŋ āĻŦāĻžāĻĄāĻŧāĻŋāĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻĄāĻŧāĻžāĻ¨āĨ¤
- āĻāĻĄā§āĻĄāĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻā§ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻāĻĒāĻ¨āĻžāĻ° āĻĄā§āĻ°ā§āĻ¨āĻāĻŋāĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ°āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻāĻāĻžāĻ° āĻ°āĻžāĻā§āĻ¨āĨ¤
- āĻŦā§āĻ¯āĻžāĻāĻžāĻ°āĻŋ āĻāĻžāĻ°ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§āĻ¨āĨ¤
- āĻ¯āĻĻāĻŋ āĻĄā§āĻ°ā§āĻ¨āĻāĻŋ āĻ āĻĻā§āĻā§āĻ¤ āĻāĻāĻ°āĻŖ āĻāĻ°ā§ āĻ¤āĻŦā§ āĻāĻāĻŋāĻā§ āĻ§āĻ°ā§ āĻ°āĻžāĻā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻāĻ˛ā§āĻāĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻ¨āĨ¤ āĻāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻāĻĒā§āĻāĻžāĻ°āĻāĻŋāĻā§ āĻāĻ°ā§āĻ°ā§ āĻŽā§āĻĄā§ āĻ°āĻžāĻāĻŦā§ āĻāĻŦāĻ āĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻŦā§āĨ¤
āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻā§āĻĄ āĻāĻŦāĻ āĻĄā§āĻŽā§
āĻāĻā§āĻāĻŋāĻ˛ā§!
āĻā§āĻĄ āĻ˛ā§āĻāĻž āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻŽā§āĻļāĻŋāĻ¨ āĻŽāĻžāĻ¨āĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ¨āĻ¨ā§āĻĻ āĻĻā§āĻŦā§! āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻāĻ°ā§āĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ¯āĻŧā§āĻ¸ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻļā§āĻ¨āĻ¤ā§ āĻĄā§āĻ°ā§āĻ¨ āĻļā§āĻāĻžāĻ¨ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻ¸āĻ˛ā§, āĻāĻ°āĻ āĻ āĻ¨ā§āĻ āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻž āĻ°āĻ¯āĻŧā§āĻā§: āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻŽā§āĻā§āĻ° āĻ¸ā§āĻŦā§āĻā§āĻ¤āĻŋ, āĻ¸ā§āĻŦāĻžāĻ¯āĻŧāĻ¤ā§āĻ¤āĻļāĻžāĻ¸āĻŋāĻ¤ āĻĢā§āĻ˛āĻžāĻāĻ, āĻ āĻā§āĻāĻāĻā§āĻāĻŋ āĻ¸ā§āĻŦā§āĻā§āĻ¤āĻŋ āĻāĻŦāĻ āĻāĻ°āĻ āĻ āĻ¨ā§āĻ āĻāĻŋāĻā§āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨?
Skillbox āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°ā§:
- āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ āĻā§āĻ°ā§āĻ¸ā§āĻ° āĻāĻŦā§āĻĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
"āĻĒāĻžāĻāĻĨāĻ¨ āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ" .- āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ āĻā§āĻ°ā§āĻ¸
"āĻĒā§āĻļāĻž āĻĢā§āĻ°āĻ¨ā§āĻāĻāĻ¨ā§āĻĄ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°" .- āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ āĻŦāĻāĻ°ā§āĻ° āĻā§āĻ°ā§āĻ¸
"0 āĻĨā§āĻā§ PRO āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§" .
āĻāĻ¤ā§āĻ¸: www.habr.com