рд╢реБрдн рджреЛрдкрд╣рд░, рд╣реЗрдмрд░ рдХреЗ рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ!рдореИрдВ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ ( рдкрд╣рд▓рд╛ рд▓реЗрдЦ , рджреВрд╕рд░рд╛ рд▓реЗрдЦ ) рдкрд░ рдЖрд░рдУрдПрд╕ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВ редрдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдХреАрдмреЛрд░реНрдб рдкрд░ рдЪрд╛рдмрд┐рдпрд╛рдБ рджрдмрд╛рдХрд░ рд░реЛрдмреЛрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ros-teleop рд╕реНрдЯреИрдХ рд╕реЗ teleop_twist_keyboard рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ ред Ros-teleop рд╕реНрдЯреИрдХ рдореЗрдВ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рднрд┐рдиреНрди рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдФрд░ рдкреИрдХреЗрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдХреМрди рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ, рдХреГрдкрдпрд╛ teleop_twist_keyboard рдЕрдзреНрдпрдпрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИредTmux рдХреЗ рд╕рд╛рде рдмрд╣реБрдкрд░рдд
рдЗрд╕ рдмреАрдЪ, рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдЯреНрд░рд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЛ рдХрдИ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд░рдПрдордЖрдИ рдкрд░ tmux рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред$ sudo apt-get install tmux
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЪрд▓рд╛рдПрдБ:$ tmux
рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рдиреАрдЪреЗ рдПрдХ рд╣рд░реЗ рд░рдВрдЧ рдХреА рдкрдЯреНрдЯреА рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдЦрд┐рдбрд╝рдХреА рдХреА рд╕рдВрдЦреНрдпрд╛ 0.tmux рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдореИрдиреЗрдЬрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ (рдЕрд▓рдЧ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ (рд╡рд┐рдВрдбреЛ)), рд╡рд┐рдВрдбреЛ рдкреИрдирд▓ рдореЗрдВ рд░рдЦрдХрд░ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлрд▓рдХ)) рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИредрдХреАрдмреЛрд░реНрдб рдкрд░ Ctrl + B рдФрд░ C рджрдмрд╛рдПрдВред рдирдВрдмрд░ 1 рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдПред Ctrl + B рдФрд░% рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЛ рднреА рдЖрдЬрд╝рдорд╛рдПрдВред рд╡рд░реНрддрдорд╛рди рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╣рд░реА рдкрдЯреНрдЯреА рджреНрд╡рд╛рд░рд╛ рджреЛ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ (рдлрд▓рдХ) рдореЗрдВ рдмреАрдЪ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╕рдВрдпреЛрдЬрди Ctrl + B рджрдмрд╛рддреЗ рд╣реИрдВ, рдФрд░ "рд╡рд┐рднрд╛рдЬрди рд╡рд┐рдВрдбреЛ" рджрд░реНрдЬ рдХрд░реЗрдВ, рддреЛ рдЦрд┐рдбрд╝рдХреА рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рджреЛ рд╕рдорд╛рди рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреАред рдПрдХ рдкреИрдирд▓ (рдлрд▓рдХ) рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдпреЛрдЬрди Ctrl + B, X рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ Y рджрдмрд╛рдПрдВред рдЙрд╕реА рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреИрдирд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдпреЛрдЬрди Ctrl + B, O рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╡рд┐рдВрдбреЛ рдирдВрдмрд░ рджреНрд╡рд╛рд░рд╛ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдпреЛрдЬрди Ctrl + рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдмреА, <рд╡рд┐рдВрдбреЛ рдирдВрдмрд░>редрдЕрдм рдЬрдм рдЖрдк рдПрдХ рдирдпрд╛ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓реЙрдиреНрдЪ рдХреЛ ~ / .bashrc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝ рджреЗрдВред рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:[[ $TERM != "screen" ]] && exec tmux
Teleop_twist_keyboard рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛
рдЕрдм рдЖрдЗрдП teleop_twist_keyboard рдкреИрдХреЗрдЬ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВредTeleop_twist_keyboard.py рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ teleop_twist_keyboard рдкреИрдХреЗрдЬ рд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд ROS рдиреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдПрдБ:$ roscore
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдорд┐рд▓рддрд╛ рд╣реИ:Reading from the keyboard and Publishing to Twist!
---------------------------
Moving around:
u i o
j k l
m , .
q/z : increase/decrease max speeds by 10%
w/x : increase/decrease only linear speed by 10%
e/c : increase/decrease only angular speed by 10%
anything else : stop
CTRL-C to quit
рдЖрдЗрдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╕рднреА рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ:$ rostopic list
рд╡рд┐рд╖рдп / cmd_vel рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░, teleop_twist_keyboard рдиреЛрдб рдХреАрдмреЛрд░реНрдб рдкрд░ рд╣рд░ рдмрд╛рд░ рдПрдХ рдХреБрдВрдЬреА рджрдмрд╛рдиреЗ рдкрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИредрд╣рдо рд╡рд┐рд╖рдп / cmd_vel рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ:$ rostopic echo cmd_vel
рдЖрд▓реЗрдЦреАрдп рд░реВрдк рдореЗрдВ ROS рдХрдореНрдкреНрдпреВрдЯреЗрдб рдЧреНрд░рд╛рдл рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП rqt_graph рдЪрд▓рд╛рдПрдВред рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдл рдЖрд░реЗрдЦ рд╕рднреА рд╕рдХреНрд░рд┐рдп рдиреЛрдбреНрд╕ рдФрд░ рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред$ rosrun rqt_graph rqt_graph
рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ teleop_twist_keyboard рдиреЛрдб рд╡рд┐рд╖рдп / cmd_vel рдХреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░реЛрд╕реНрдЯреЛрдкрд┐рдХ рдиреЛрдб рдЗрд╕ рд╡рд┐рд╖рдп (rostopic echo рдХрдорд╛рдВрдб) рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИредрдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдХрд┐рд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ / cmd_vel:$ rostopic type /cmd_vel
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧреА:geometry_msgs/Twist
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдорд╛рдирдХ ROS рдкреИрдХреЗрдЬ рдЬреНрдпрд╛рдорд┐рддрд┐_msgs рд╕реЗ рдЯрд╛рдЗрдк рдЯреНрд╡рд┐рд╕реНрдЯ рдХреЗ рд╣реИрдВредрд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ rosmsg рдХрдорд╛рдВрдб рд╕реЗ рднреА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓ рд╕рдХрддреА рд╣реИ:$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
рдХреНрд╖реЗрддреНрд░ 'рд░реИрдЦрд┐рдХ' рд░реИрдЦрд┐рдХ рд╡реЗрдЧ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, 'рдХреЛрдгреАрдп' рдХреЛрдгреАрдп рд╡реЗрдЧ рдХреЗ рд▓рд┐рдП рд╣реИред'рдореИрдВ' рдХреБрдВрдЬреА рджрдмрд╛рдПрдВ, рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛ (рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдЬреБрдбрд╝рд╛):linear:
x: 0.5
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
'K' рдХреБрдВрдЬреА рджрдмрд╛рдПрдВ, рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛ (рд░реЛрдХреЗрдВ):linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
'рдпреВ' рдХреБрдВрдЬреА рджрдмрд╛рдПрдВ, рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛ (рдмрд╛рдПрдВ рдореБрдбрд╝реЗрдВ):linear:
x: 0.5
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0
---
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЬрдм рдЖрдк 'рдУ' рдХреБрдВрдЬреА рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓рддреЗ рд╣реИрдВ (рджрд╛рдПрдВ рдореБрдбрд╝реЗрдВ):linear:
x: 0.5
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: -1.0
---
рдХреБрдВрдЬрд┐рдпрд╛рдБ 'j' рдФрд░ 'l', рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рдореБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ (рдмрд┐рдирд╛ рдЖрдЧреЗ рдмрдврд╝реЗ)редTeleop_twist_keyboard рдХреЗ рд╕рд╛рде рдХреАрдмреЛрд░реНрдб рд░реЛрдмреЛрдЯ рдирд┐рдпрдВрддреНрд░рдг
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЪрд╛рдмрд┐рдпрд╛рдБ рджрдмрд╛рдХрд░ рд░реЛрдмреЛрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд╕реЗрд░рд┐рд╢рд┐рдпрд▓ рд╕реНрдХреЗрдЪ рд▓рд┐рдЦрд╛ рд╣реИред рд╣рдо рдмрд╕ рд╡рд┐рд╖рдп / cmd_vel рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░, рдкреНрд░рддреНрдпреЗрдХ рдЧрддрд┐ рдХреЗ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЧрддрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЖрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВ (рдЖрдЧреЗ рдмрдврд╝рдирд╛, рд░реЛрдХрдирд╛, рдмрд╛рдПрдВ рдпрд╛ рджрд╛рдПрдВ рдореБрдбрд╝рдирд╛)ред рд╕реНрдХреЗрдЪ рдпрд╣рд╛рдБ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ редрдЖрдЗрдП рд╕реНрдХреЗрдЪ рдХреЛрдб рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВредрдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдорд╛рдирдХ ros.h рд╣реИрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рджреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░ geometry_msgs / Twist.h рдФрд░ geometry_msgs / рд╡реЗрдХреНрдЯрд░3.h рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:#include <geometry_msgs/Twist.h>
#include <geometry_msgs/Vector3.h>
рд╣рдо рдПрдХ рдиреЛрдб рд╣реИрдВрдбрд▓рд░ рдЖрд░рдУ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ :: NodeHandle:ros::NodeHandle nh;
рдореБрдЦреНрдп рдореВрд▓реНрдп рд╕рдВрджреЗрд╢ рд╡рд┐рдзрд┐ рд╣реИ:void messageCb(const geometry_msgs::Twist& message)
{
geometry_msgs::Vector3 linear = message.linear;
float forward_vel = float(linear.x);
if(forward_vel == 0) { stop(); return; }
geometry_msgs::Vector3 angular = message.angular;
float ang_vel = float(angular.z);
if(ang_vel > 0) { turnLeft(); }
else if(ang_vel < 0) { turnRight(); }
else { goForward(); }
}
рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢ рдХреЛ cmd_vel рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдлреЙрд░рд╡рд░реНрдб_рд╡реЗрд▓ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╣рдо рд▓реАрдирд┐рдпрд░ рд╕реНрдкреАрдб, рдХреЛрдгреАрдп рд╡реЗрд░рд┐рдПрдмрд▓ - рдХреЛрдгреАрдп рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред рд░реИрдЦрд┐рдХ рдЧрддрд┐ рд╣рдореЗрдВ рд╕реНрдЯреЙрдк рдХрдорд╛рдВрдб (рдорд╛рди 0) рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдХреЛрдгреАрдп рд╡реЗрдЧ рд░реЛрдЯреЗрд╢рди рдХреА рджрд┐рд╢рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ 0 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдмрд╛рдПрдВ рдореБрдбрд╝реЗрдВ, 0 рд╕реЗ рдХрдо - рджрд╛рдИрдВ рдУрд░, рдпрджрд┐ 0 - рдЖрдЧреЗ рдмрдврд╝реЗрдВ)редрд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдмрдирд╛рдПрдВ / cmd_vel:ros::Subscriber<geometry_msgs::Twist> sub("/cmd_vel", &messageCb);
рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдзрд┐ (рд╕рдВрджреЗрд╢рд╕реАрдмреА) рдФрд░ рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде - рдЬреНрдпрд╛рдорд┐рддрд┐_msgs :: рдЯреНрд╡рд┐рд╕реНрдЯредрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ, rosserial_arduino рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╕реНрдХреЗрдЪ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:nh.initNode();
nh.subscribe(sub);
Serial.begin(57600);
рдЪрд▓рд╛рдПрдБ rosserial_arduino рд╕рд░реНрд╡рд░:$ rosrun rosserial_python serial_node _port:=/dev/ttyACM0
рдФрд░ Arduino рдмреЛрд░реНрдб рдХреЛ рд╕реНрдХреЗрдЪ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВредрдЙрд╕ рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ teleop_twist_keyboard рдиреЛрдб рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдХреБрдВрдЬреА 'u', 'i', 'o' рдФрд░ 'k' рджрдмрд╛рдХрд░ рджреЗрдЦреЗрдВ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ rosserial рд╕рд░реНрд╡рд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВредрдЗрд╕ рдкреНрд░рдХрд╛рд░, teleop_twist_keyboard рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЕрдм рдЖрдВрджреЛрд▓рди рдХрдорд╛рдВрдб рдХреЛ рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдХрд░рдХреЗ рд░реЛрдмреЛрдЯ рдХрд╛ рд╕рд░рд▓ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЖрдЧреЗ рдмрдврд╝рдирд╛, рд░реБрдХрдирд╛, рдмрд╛рдПрдВ рдпрд╛ рджрд╛рдПрдВ рдореБрдбрд╝рдирд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЛрдмреЛрдЯ рдХреЛ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреЛ рдЖрд░рдУрдПрд╕ рдореЗрдВ рдПрдХ рдФрд░ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВред