ROS2 рдмрдирд╛рдо ROS1ред Ubuntu 18.04 рдкрд░ ROS2 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

рдЖрд░рдУрдПрд╕ (рд░реЛрдмреЛрдЯрд┐рдХ рдСрдкрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо) рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рд░реЛрдмреЛрдЯрд┐рдХреНрд╕ рдХреЗ рдорд╛рдирдХреЛрдВ рдореЗрдВ рдПрдХ рдЕрдЧреНрд░рдгреА рд╕реНрдерд╛рди рд░рдЦрддрд╛ рд╣реИред рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рд░рд╛рдЬрдиреАрддрд┐рдЬреНрдЮ рдХреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, "рди рдХреЗрд╡рд▓ рд╕рдм рдХреБрдЫ" рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо ROS рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ - ROS2 рдкреНрд░рдгрд╛рд▓реА, рдЕрдзрд┐рдХ "рдЪрд┐рдХрдирд╛" рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рдЖрдЗрдП рджреЛрдиреЛрдВ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рддреБрд▓рдирд╛ рдХрд░реЗрдВ рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде Ubuntu 18.04 рдкрд░ ROS2 рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред



* www.theconstructsim.com рд╕реЗ рдЫрд╡рд┐
рдПрдХ рдереЛрдбрд╝рд╛ рдкреБрд░рд╛рдирд╛ рдореЙрдбрд▓ рдмреБрдирд┐рдпрд╛рджреА рдкреАрд╕реА рд╡рд┐рдиреНрдпрд╛рд╕ - рдЗрдВрдЯреЗрд▓ NUC (5i5RYK), 4GB рд░реИрдо, SSD M.2 120Gb рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдирдпреВрд╕реА рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЖрд░рдУрдПрд╕ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП "рдЖрдВрдЦреЛрдВ рдХреЗ рд▓рд┐рдП" рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХрд▓-рдмреЛрд░реНрдб рдХрд╛рд░реНрдб (рд░рд╛рд╕реНрдкрдмреЗрд░реА, рдУрдбреНрд░реЛрдЗрдб, рдЬреЗрдЯрд╕рди) рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рдЕрдкрдиреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдПрдВ рд╣реИрдВред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ Ubuntu 18.04 (ROS рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд) рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред

рдкрд░рд┐рдЪрдпред


рдкрд┐рдЫрд▓реЗ рдПрдХ рджрд╢рдХ рдореЗрдВ, ROS (ROS1) рдХрдИ рдмрд╛рд░ рдмрдврд╝рд╛ рдФрд░ рдмрдврд╝рд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ,
рдЙрдирдХреЗ рдкрд╛рд╕ рдкреИрдХреЗрдЬреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕реВрдЪреА рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЖрдВрд╢рд┐рдХ рдпрд╛
рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ , рдЬреЛ рдкрд╣рд┐рдпрд╛ рдХреЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдкреИрдХреЗрдЬреЛрдВ рдиреЗ рд░реЛрдмреЛрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдореМрдЬреВрджрд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдмреБрджреНрдзрд┐рдорд╛рди рднрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рд╣реИред

ROS1 рдХреА рд╕реАрдорд╛рдПрдВред


рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ ROS1 рдиреЗ рдЬрдЯрд┐рд▓ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреА, рдЕрдВрддрд┐рдо рдЙрддреНрдкрд╛рдж рдореЗрдВ ROS1 рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реА рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рд╣реИрдВред рд╡рд┐рд╖рдо рд░реЛрдмреЛрдЯреЛрдВ (рдореЛрдмрд╛рдЗрд▓ рд░реЛрдмреЛрдЯ, рд░реЛрдмреЛрдЯ рдореИрдирд┐рдкреБрд▓реЗрдЯрд░реНрд╕, рдФрд░ рдЗрд╕реА рддрд░рд╣) рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдмреЗрдбрд╝рд╛ рд╣реЛрдиреЗ рдкрд░ рдпреЗ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд▓рдЧрддреА рд╣реИрдВред
ROS1 рдХреА рд╕реНрдерд╛рдкрддреНрдп рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдЙрдирдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд╣реИред
рдкрд╣рд▓реА рд╕реАрдорд╛ рдпрд╣ рд╣реИ рдХрд┐ ROS1 рдорд▓реНрдЯреАрдорд╛рд╕реНрдЯрд░ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
ROS1 рдХреА рджреВрд╕рд░реА рд╕реАрдорд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдиреЛрдбреНрд╕ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рд╕рдВрдЪрд╛рд░ рдореЗрдВ рдХреЛрдИ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЬреЛ рднреА рдорд╛рд╕реНрдЯрд░ (рдорд╛рд╕реНрдЯрд░-рдиреЛрдб) рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИ рд╡рд╣ рд╡рд┐рд╖рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрдирдХрд╛ рд╢реЛрд╖рдг рдпрд╛ рд╕рдВрд╢реЛрдзрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, ROS1 рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╡рдзрд╛рд░рдгрд╛ рдпрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИред
рдФрд░ рддреАрд╕рд░рд╛, рд╢рд╛рдпрдж ROS1 рдХреА рдореБрдЦреНрдп рд╕реАрдорд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВ рд╣реИред рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рд╣реЛрддреА рд╣реИ рдФрд░ рдЙрдирдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдиреБрдХрд╕рд╛рди ROS2 рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдзрдХреНрдХрд╛ рджрд┐рдпрд╛ред

ROS2 рдХреЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реИрдВ?


- рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ (рдиреЛрдбреНрд╕) рдХреЗ рдмреАрдЪ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
- рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╣реИ
- рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдХрдИ рд░реЛрдмреЛрдЯреЛрдВ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╕рд░рд▓ рд╣реИ
- рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИ
- рдЖрд░рдУрдПрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реНрддрд░ рд╕реАрдзреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд▓рд╛рдЧреВ
рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдирд╡реАрдирддрдо рд╕рдВрдХреБрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдкрдбреЗрдЯ (ROS1 рдХреЛ рдЕрдХреНрд╕рд░ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

ROS2 рдЙрджреНрдпреЛрдЧ рдорд╛рдирдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рддрдерд╛рдХрдерд┐рдд DDS (рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдЯреНрд░рд┐рдмреНрдпреВрдЯреЗрдб рд╕рд░реНрд╡рд┐рд╕реЗрдЬ) рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

ROS2 рд╕рдВрд╕реНрдХрд░рдг

ред
ROS2 рдХрд╛ рдкрд╣рд▓рд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рджрд┐рд╕рдВрдмрд░ 2017 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд┐рддрд░рдг рдХрд╛ рдирд╛рдо "рдЕрд░реНрджреЗрдВрдЯ рдПрдкреЗрд▓реЛрди" рдерд╛ред рдлрд┐рд░ рдЬреВрди 2018 рдореЗрдВ "рдмрд╛рдЙрдВрд╕реА рдмреЛрд▓рд╕рди" рдирд╛рдо рд╕реЗ рдПрдХ рд░рд┐рд▓реАрдЬрд╝ рд╣реБрдИред рдХреНрд░рд┐рд╕реНрдЯрд▓ рдХреНрд▓реАрдореАрдЬрд╝ рджрд┐рд╕рдВрдмрд░ 2018 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдордИ 2019 рдореЗрдВ рдбреИрд╢рд┐рдВрдЧ рдбрд┐рдпрд╛рдбреЗрдорд╛рдЯрд╛ (рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг)ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рддрд░рдг рдХрд╛рдлреА рд╣рдВрд╕рдореБрдЦ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░, рдЙрдореНрдореАрдж рд╣реИ, рд╡рд░реНрдгрдорд╛рд▓рд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдУрдПрд╕ рдХрд╛ рд╕рдорд░реНрдерди

ред
ROS2 рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рд╣рдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ) рд▓рд┐рдирдХреНрд╕, рд╡рд┐рдВрдбреЛрдЬ, рдореИрдХрдУрдПрд╕, рдФрд░ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдЖрд░рдЯреАрдУрдПрд╕) рдУрдПрд╕ рдкрд░рддреЗрдВ, ROS1 рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ред
рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд OS рд╕рдорд░реНрдерди:


рддреЛ рдЖрдкрдХреЛ ROS2 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?


ROS2 ROS1 рдХреЗ рд╕рдорд╛рди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╡рд╣реАрдВ, ROS2 ROS1 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИред ROS2 рдХреЛ рдирдП рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕рд╛рдереА рдХреА рд╕реАрдорд╛рдУрдВ рдкрд░ рдХрджрдо рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
ROS1 рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд┐рд╕рдХрд╛ рд╕реНрдЯреИрдХ C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдФрд░ C ++ рдФрд░ рдкрд╛рдЗрдерди рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝, ROS-2 рднреА C рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред C рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕реНрддрд░ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ ROS2 рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпреЛрдВ рдЬреИрд╕реЗ rclcpp, rclpy, рдФрд░ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред rcljavaред

ROS2 рдмреЗрд╣рддрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХрдиреЗрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
ROS2 рдЕрдм рдиреЛрдбрд▓реЗрдЯреНрд╕ (http://wiki.ros.org/nodelet) рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдиреЛрдбреНрд╕ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдорд▓реНрдЯреАрдиреЛрдб рдЖрд░рдВрднреАрдХрд░рдг)ред ROS1 рдХреЗ рд╡рд┐рдкрд░реАрдд, ROS2 рдХреА рдПрдХ рдЕрдиреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдиреЛрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдФрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдпрджрд┐ рдиреЛрдб рдпрд╛ рд╡рд┐рд╖рдп рдХреЛ рдЬреЛрдбрд╝рд╛ рдпрд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдлреЙрд▓реНрдЯ рдЯреЙрд▓рд░реЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

ROS1 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ ROS2 рдореЗрдВ рд╣реБрдП рдкрд░рд┐рд╡рд░реНрддрди:


ROS2 рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

ред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЙрдмрдВрдЯреВ 18.04 рдкрд░ рдбреИрд╢рд┐рдВрдЧ рдбрд╛рдЗрдбреЗрдорд╛рдЯрд╛рдЯрд╛ (рдбреИрд╢рд┐рдВрдЧ) рдХреЗ рд╡рд░реНрддрдорд╛рди рд╡рд┐рддрд░рдг рдХреЗ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдВрдЧреЗ

рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред


$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8


ROS2 рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЬреЛрдбрд╝реЗрдВред


$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc |
sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'


ROS рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред


$ sudo apt update && sudo apt install -y build-essential cmake git
python3-colcon-common-extensions python3-lark-parser python3-pip
python-rosdep python3-vcstool wget
$ python3 -m pip install -U argcomplete flake8 flake8-blind-except
flake8-builtins flake8-class-newline flake8-comprehensions flake8-
deprecated flake8-docstrings flake8-import-order flake8-quotes
pytest-repeat pytest-rerunfailures pytest pytest-cov pytest-runner
setuptools
$ sudo apt install --no-install-recommends -y libasio-dev libtinyxml2-dev


рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ ROS2 рдмрдирд╛рдПрдБред


$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
$ vcs import src < ros2.repos

рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рд╡рдХреНрдд рд▓рдЧреЗрдЧрд╛ред

Rosdep рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред


$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69
rti-connext-dds-5.3.1 urdfdom_headers"

рдпрджрд┐ рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ "рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд░рд╕реНрд╕рд┐рдпреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛" рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рддреЛ рдЖрдк рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рдХреЛрдб рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рдХреЙрд▓рдХреЙрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред


ROS1 рдореЗрдВ, рдХреИрдЯрдХрд┐рди рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдХреЗрдЬ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдереЗред ROS2 рдХреЙрд▓рдХреЙрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬрд┐рд╕рдореЗрдВ рдХреИрдЯрдХрд┐рди_рдореЗрдХ, рдХреИрдЯрдХрд┐рди_рдореЗрдХ_рдЗрд╕реЛрд▓реЗрдЯреЗрдб, рдХреИрдЯрдХрд┐рди_рдЯреВрд▓ рдФрд░ рдПрдирдореЗрдВрдЯ_рдЯреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)ред colcon рджреЛрдиреЛрдВ ROS1 рдкреИрдХреЗрдЯ рдФрд░ ROS2 рдкреИрдХреЗрдЯ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрддрд┐рдо рдЖрджреЗрд╢ рдХреЗ рдмрд╛рдж, рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЪрд╛рдп рдкреАрдиреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рдШрдВрдЯрд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╕рдлрд▓ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
$ sudo apt install python3-colcon-common-extensions
$ cd ~/ros2_ws/
$ colcon build --symlink-install






ROS2 (рдкрд░реНрдпрд╛рд╡рд░рдг) рдХреЗ рд▓рд┐рдП рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ред


рд▓реЙрдиреНрдЧ рдХрдорд╛рдВрдб 'рд╕реЛрд░реНрд╕ ~ / ros2_ws / install / local_setup.bash' рдореЗрдВ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЖрд░рдУрдПрд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, bashrc рдореЗрдВ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝реЗрдВ:
$ sudo gedit ~/.bashrc

рдЕрдЧрд▓рд╛, рдлрд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ: рдлрд╛рдЗрд▓ рдХреЛ
alias initros2='source ~/ros2_ws/install/local_setup.bash

рд╕реЗрд╡ рдХрд░реЗрдВ, рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдХрдорд╛рдВрдб рд╕реЗ рджреЛрдмрд╛рд░рд╛ рдкрдврд╝реЗрдВ (рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рди рдХрд░реЗрдВ рд░рд┐рдмреВрдЯ рдкреНрд░рдгрд╛рд▓реА):
$ source ~/.bashrc

ROS2 рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред


рдкрд╣рд▓рд╛ рдЯрд░реНрдорд┐рдирд▓: рдпреЗ рдХрдорд╛рдВрдб рдЯреЙрдХрд┐рдВрдЧ рдиреЛрдб рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рдЯрд░реНрдорд┐рдирд▓: рдпрд╣рд╛рдВ, рдХреНрд░рдорд╢рдГ, "рд╕реБрдирдиреЗ" рдиреЛрдб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдиреЗрддреНрд░рд╣реАрди, рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ: рдЖрдк рддреАрд╕рд░реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдиреЛрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ред ROS2 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ ROS2 рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЧрдИ рдереА, Ubuntu 18.04 рдкрд░ ROS2 (рдбреИрд╢рд┐рдВрдЧ рдбрд╛рдпрдбреЗрдорд╛рдЯрд╛ (рдбреИрд╢рд┐рдВрдЧ)) рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
$ initros2
$ ros2 run demo_nodes_cpp talker




$ initros2
$ ros2 run demo_nodes_py listener










All Articles