рдЖрдЬ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкреАрдЖрдИ рдХреИрдорд░реЗ рдХреЗ рд╕рд╛рде рд▓рд╛рд▓ рдЧреЗрдВрдж рдХрд╛ рдкрддрд╛ рдХреИрд╕реЗ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдП, рдФрд░ рдЗрд╕ рдкрд░ рд╣рдорд╛рд░реЗ рдбреНрд░реЛрди рдХреЛ рдХреИрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд рдЖрднрд╛рд╕реА рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреНрд░реЛрди рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХреАред рдпрд╣ рд╣рдорд╛рд░реЗ рдбреНрд░реЛрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рдХреНрд╖реНрдп рдЦреЛрдЬрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рд▓рдХреНрд╖реНрдп, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдмрддрд╛рдпрд╛, рдПрдХ рд▓рд╛рд▓ рдЧреЗрдВрджред
рд░рд╛рд╕реНрдкрдмреЗрд░реА рддреИрдпрд╛рд░реА
рд╣рдо рд░рд╛рд╕реНрдкрдмрд┐рдпрди рдХреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦреЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ рд╣рдо рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рд╕рдордп рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдореЛрдбрд╝ рд╕рдХреЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдзреЛрдЦрд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВред
рдПрдХ рдЕрд▓рдЧ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкрд░, рд╣рдо рд░рд╛рд╕реНрдкрд┐рдпрди рдбреЗрд╕реНрдХрдЯреЙрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ ред
рд░рд╛рд╕реНрдкрдмрд┐рдпрди рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕реЗ рдЬреБрдбрд╝реЗ рдПрдХ рдЕрд▓рдЧ рдореЙрдирд┐рдЯрд░ + рдХреАрдмреЛрд░реНрдб + рдорд╛рдЙрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рд╡реАрдПрдирд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЗрдбрд▓реЗрд╕-рд░рд╛рд╕реНрдкрдмреЗрд░реА рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:
- VNC рдХреЛ raspi-config рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
- рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд░ рд╡рд╛рдИрдлрд╝рд╛рдИ рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдВрд╕реНрдХрд░рдг рдкрд░ wpa_supplicant рдХреЗ рд╕рд╛рде рдлреЛрдХрд╕ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд░ рд╡рд╛рдИрдлрд╝рд╛рдИ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рдирд┐рд╣рд┐рдд рд╣реИ ред
- рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк realvnc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╛рдпрдерди рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - OpenCV рд▓рдЧрд╛рдПрдВ:
sudo apt-get install python-opencv
рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рдПрдЪрдПрд╕рд╡реА рдлрд╝рд┐рд▓реНрдЯрд░
рдПрдХ рддрд╕реНрд╡реАрд░ рдореЗрдВ рдПрдХ рд░рдВрдЧреАрди рд╡рд╕реНрддреБ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдФрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рддрд░реАрдХрд╛ рд╣реИ, рдЪрд┐рддреНрд░ рдХреЛ рдПрдЪрдПрд╕рд╡реА рд░рдВрдЧ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛, рдФрд░ рдлрд┐рд░ рд╣реНрдпреВ, рд╕рдВрддреГрдкреНрддрд┐ рдФрд░ cv2.inRange рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓реНрдп рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕реАрдорд╛ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ред
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдЧреЗрдВрдж рд▓рд╛рд▓ рд╣реИ, рдФрд░ рдпрджрд┐ рд╣рдо рдзреНрдпрд╛рди рд╕реЗ рдЯреЛрди рд╕реНрдХреЗрд▓ (HUE) рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд▓рд╛рд▓ рд░рдВрдЧ рдЗрд╕рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╣реИ:

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд░реЗрдВрдЬ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЧреЗрдВрдж рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ "рдЧрд╛рдпрдм" рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдбреНрд░реЛрди рдХреА рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдгрддрд╛ рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧреАред рдЗрд╕рд▓рд┐рдП, рдПрдЪ, рдПрд╕ рдФрд░ рд╡реА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЕрдкрдиреЗ рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ рдЗрдирд╡рд░реНрдЯ рдЗрдирд╡рд░реНрдЬрди рдлреНрд▓реИрдЧ рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ - рддрд╛рдХрд┐ рдЧреЗрдВрдж рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╣рд░ рдЪреАрдЬ рдХреЛ рдлрд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ, рдФрд░ рдлрд┐рд░ рдмрд╕ рдлрд┐рд▓реНрдЯрд░ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░ рд╕рдХреЗрдВред
рдлрд╝рд┐рд▓реНрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЧреЗрдВрдж рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЧреЗрдВрдж рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛
рдлрд╝рд┐рд▓реНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо cv2.findContours
рд╕рдореЛрдЪреНрдЪ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдЫрд╡рд┐ рдореЗрдВ рдЧреЗрдВрдж рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рд╣рдо рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХрдВрдЯреНрд░реЛрд╡рд░реНрдЯреНрд╕ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ 10x10 рд╕реЗ рдЕрдзрд┐рдХ рдЕрдВрдХ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЪреБрдиреЗрдВ - рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдЧреЗрдВрдж рд╣реЛрдЧреАред рдпрджрд┐ рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреИрдорд░рд╛ рд╕реЗ рдЯрдХрд░рд╛рддреЗ рд╣реИрдВ - рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рдХрдЯрддрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддред рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ред
рд╣рдо рдкрд░рд┐рдгрд╛рдореА рдЫрд╡рд┐ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдЦреАрдВрдЪрддреЗ рд╣реИрдВ: рдкрд╛рдП рдЧрдП рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреЛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╡реГрддреНрдд рдмрдирд╛рддреЗ рд╣реИрдВ, рд░реЗрдЦрд╛ рдХреЗ рдХреЗрдВрджреНрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (рдЬрд╣рд╛рдВ рдЙрдбрд╝рд╛рди рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде, рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЧреЗрдВрдж рдХреЗ рд╡реНрдпрд╛рд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЙрд╕рд╕реЗ рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ, рдпрд╡ рдХреЛрдгред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреНрд░реАрди рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ "рд╕реНрдХреЛрдк" рдЬреЛрдбрд╝рд╛ рдФрд░ рдлреНрд░реЗрдо рд░реЗрдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ - рд╣рдорд╛рд░реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдЧрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдлрд┐рд▓реНрдЯрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдХреИрдорд░рд╛ рдЫрд╡рд┐ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЧреЗрдВрдж рдХреА рджреВрд░реА рдФрд░ рдЬрдмрдбрд╝реЗ рдФрд░ рдкрд┐рдЪ рдХреЛрдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЧреЗрдВрдж рдХреИрдорд░рд╛ рдЫрд╡рд┐ рдХреЗ рдХреЗрдВрджреНрд░ рд╕реЗ рднрдЯрдХрддреА рд╣реИред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЧреЗрдВрдж рдкрд░ рдбреНрд░реЛрди рдХреЛ рдирд┐рд╢рд╛рдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЖрдЧреЗ рд╣рдо рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд▓рдЧреЗ рд░рд╣реЗрдВрдЧреЗред
рдмреЙрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░реЙ рдкреИрдХреЗрдЯ
рд╡рд┐рдХрд╕рд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЖрд░рдУрдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХреЗ рд╕рд╛рде рд╣реЗрдбрд▓реЗрд╕-рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдПрдХ рдмреИрд▓реВрди рдЖрд░рдУрдПрд╕ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛:
- рдПрдХ рдЙрдбрд╝рд╛рди рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реБрдП рдорд╛рд╡рд░реЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
- рд╣рдорд╛рд░реЗ рдмреЙрд▓ рдбрд┐рдЯреЗрдХреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЪрд▓рд╛рдПрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдЖрд░рдУрдПрд╕ рд╡рд┐рд╖рдпреЛрдВ рдореЗрдВ рдЧреЗрдВрдж рдФрд░ рдбрд┐рдмрдЧ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ
- рдЪрд▓рд╛рдПрдБ web_video_server - рдПрдХ ROS рдШрдЯрдХ рдЬреЛ рд╣рдореЗрдВ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рд╣рдорд╛рд░реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛
ROS рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, ROS рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ ROS рдлрд╝рд┐рд▓реНрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдирд┐рдореНрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ:
- рдХреИрдорд░рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрдврд╝рдирд╛ред рдЖрд░рдУрдПрд╕ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдпрдорд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдХреИрдорд░реЗ рдХреЗ рдЕрдВрд╢рд╛рдВрдХрди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдХреЗрд╡рд▓ рдЫрд╡рд┐ рдЖрдХрд╛рд░реЛрдВ (рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ) рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрд░рдУрдПрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдпрдорд▓ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
- рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рд╣рдо рдЕрдкрдиреЗ ROS рдкреИрдХреЗрдЬ рдХреА рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рдЪреБрдиреЗ рдЧрдП рдлрд╝рд┐рд▓реНрдЯрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓рд┐рдЦреЗрдВрдЧреЗред
- рдкреНрд░рд╛рдкреНрдд рдЧреЗрдВрдж рдХрд╛ рдкреНрд░рдХрд╛рд╢рди рдЖрд░рдУрдПрд╕ рд╡рд┐рд╖рдп
/baloon_detector/twist
рдореЗрдВ рд╕рдордиреНрд╡рдп рдХрд░рддрд╛ рд╣реИ - ROS рд╡рд┐рд╖рдпреЛрдВ
/baloon_detector/image_filter
рдФрд░ /baloon_detector/image_result
рдбреАрдмрдЧрд┐рдВрдЧ рдЪрд┐рддреНрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ
рдЖрдк рд╕рд╛рдорд╛рдиреНрдп python baloon_pose_cv.py
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рднреА рд╣реИ - рдЖрд░рдУрдПрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рд╣рдореЗрдВ рдЬрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрд╕реЗ рдкреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЗрд╕рдХреЗ рдСрдЯреЛрд░рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЖрд░рдУрдПрд╕ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдмрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЦреБрдж рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рддрдХ рд╕реАрдорд┐рдд рдХрд░реВрдВрдЧрд╛ред
рдЖрдЗрдП рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдФрд░ ROS рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП ROS рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдмрдирд╛рдПрдВ:
mkdir -p ~/baloon_ws/src cd ~/baloon_ws/ catkin_make source devel/setup.bash cd src catkin_create_pkg baloon std_msgs rospy
рд╣рдо ~ / baloon_ws / src / baloon / src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
- baloon_pose_cv.py - рдмреЙрд▓ рдбрд┐рдЯреЗрдХреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо
- baloon_cv.launch - рд╣рдорд╛рд░реЗ ROS рдкреИрдХреЗрдЬ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓
- fe130_320_01.yaml - рдХреИрдорд░рд╛ рдЕрдВрд╢рд╛рдВрдХрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓ред рд╣рдо рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЪрд┐рддреНрд░ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдПрдХ рдЪрд┐рддреНрд░ рд╕реЗ 3 рдбреА рджреГрд╢реНрдпреЛрдВ рдХреА рдмрд╣рд╛рд▓реА, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- baloon.service, roscore.env - рдпреЗ рдлрд╛рдЗрд▓реЗрдВ рдЖрд░рдУрдПрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдСрдЯреЛрд░рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВ
рдиреАрдЪреЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкрд╛рда рд╣реИрдВ:
baloon_pose_cv.py - рдореБрдЦреНрдп рдмреЙрд▓ рдбрд┐рдЯреЗрдХреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо baloon_cv.launch - рд╣рдорд╛рд░реЗ ROS рдкреИрдХреЗрдЬ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓ <launch> <include file="$(find mavros)/launch/px4.launch"> <arg name="fcu_url" value="/dev/ttyAMA0:921600"/> <arg name="gcs_url" value="tcp-l://0.0.0.0:5760"/> </include> <node name="baloon_detector" pkg="baloon" type="baloon_pose_cv.py" output="screen"> <param name="invert" value="1"/> <param name="h1" value="7"/> <param name="h2" value="158"/> <param name="s1" value="0"/> <param name="s2" value="255"/> <param name="v1" value="0"/> <param name="v2" value="255"/> <param name="real_ballon_r" value="0.145"/> <param name="camera_info_url" value="$(find baloon)/src/fe130_320_01.yaml"/> <param name="framerate" value="40"/> </node> <node name="web_video_server" pkg="web_video_server" type="web_video_server" required="false" respawn="true" respawn_delay="5"/> </launch>
fe130_320_01.yaml - рдХреИрдорд░рд╛ рдХреИрд▓рд┐рдмреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ image_width: 320 image_height: 240 camera_name: main_camera_optical camera_matrix: rows: 3 cols: 3 data: [251.8636348237197, 0, 161.853506252244, 0, 252.36606604425, 102.0038140308112, 0, 0, 1] distortion_model: plumb_bob distortion_coefficients: rows: 1 cols: 5 data: [-0.4424451138703088, 0.1594038086314775, 0.006694781700363117, 0.00174908936506397, 0] rectification_matrix: rows: 3 cols: 3 data: [1, 0, 0, 0, 1, 0, 0, 0, 1] projection_matrix: rows: 3 cols: 4 data: [174.0442047119141, 0, 163.822732720786, 0, 0, 175.2916412353516, 105.5565883832869, 0, 0, 0, 1, 0]
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдлрд╛рдЗрд▓ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рдж baloon_ws / src / baloon / src, рдЖрдкрдХреЛ рдлрд╛рдЗрд▓ baloon_pose_cv.py рдФрд░ baloon.service рдкрд░ "рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓" (cmod + x) рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░, рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЕрдкрдирд╛ ROS рдиреЛрдб рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
roslaunch baloon baloon_cv.launch
рдиреЛрдб рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдлрд┐рд▓реНрдЯрд░ рдФрд░ рдмреЙрд▓ рдХреА рддрд╕реНрд╡реАрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдФрд░ рд╡рд┐рд╖рдп /baloon_detector/twist
рдореЗрдВ рдЦреЛрдЬреА рдЧрдИ рдЧреЗрдВрдж рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
pi@raspberry:~ $ rostopic list |grep baloon /baloon_detector/image_filter /baloon_detector/image_result /baloon_detector/twist pi@raspberry:~ $ rostopic echo /baloon_detector/twist header: seq: 1 stamp: secs: 1554730508 nsecs: 603406906 frame_id: "fcu" twist: linear: x: 6.6452559203 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.137081068334 z: -0.165806278939 ---
рдпрд╣ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреЗ рдСрдЯреЛрд╕реНрдЯрд╛рд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде systemd рд╕реЗрд╡рд╛ рд╡рд┐рд╡рд░рдг рдлрд╝рд╛рдЗрд▓ baloon.service рдмрдирд╛рдПрдВ:
[Unit] Description=BALOON ROS package Requires=roscore.service After=roscore.service [Service] EnvironmentFile=/home/pi/baloon_ws/src/baloon/src/roscore.env ExecStart=/opt/ros/kinetic/bin/roslaunch baloon baloon_cv.launch --wait Restart=on-abort [Install] WantedBy=multi-user.target
рдлрд╝рд╛рдЗрд▓ roscore.env рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ:
ROS_ROOT=/opt/ros/kinetic/share/ros ROS_DISTRO=kinetic ROS_PACKAGE_PATH=/home/pi/baloon_ws/src:/opt/ros/kinetic/share ROS_PORT=11311 ROS_MASTER_URI=http://localhost:11311 CMAKE_PREFIX_PATH=/home/pi/baloon_ws/devel:/opt/ros/kinetic PATH=/opt/ros/kinetic/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin LD_LIBRARY_PATH=/opt/ros/kinetic/lib PYTHONPATH=/home/pi/catkin_ws/devel/lib/python2.7/dist-packages:/opt/ros/kinetic/lib/python2.7/dist-packages ROS_IP=192.168.11.1
рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдФрд░ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдХрдорд╛рдВрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
sudo systemctl enable ~/baloon_ws/src/baloon/src/baloon.service sudo systemctl start baloon
рдЕрдм рд░рд╛рд╕реНрдкрдмреЗрд░реА рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдиреЛрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдк sudo systemctl stop baloon
рд╕рд╛рде рдиреЛрдб рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ, autostart - sudo systemctl disable balloon
рд░рджреНрдж sudo systemctl disable balloon
ред
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдПрдХ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧреЗрдВрдж рдбрд┐рдЯреЗрдХреНрдЯрд░" рдорд┐рд▓рд╛, рдЬреЛ рдХрд┐ рдСрди-рдмреЛрд░реНрдб рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рд┐рд╕реНрдЯрдо рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рд╣реЛрдорд┐рдВрдЧ рдбреНрд░реЛрди рдХреЗ рдЕрдВрддрд┐рдо рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред
рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдЧрд┐рдердм рдХреЛ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред