рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкреЛрд╕реНрдЯ:
8. рд╣рдо рдлреЛрди-рдЖрд░рдУрдПрд╕ рдХрдВрдЯреНрд░реЛрд▓, рдЬреАрдкреАрдПрд╕-рдиреЛрдб рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ7. рд░реЛрдмреЛрдЯ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг: рдЬреАрдПрдордкреА, рдПрдПрдорд╕реАрдПрд▓, рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ6. рдкрд╣рд┐рдпрд╛ рдПрдирдХреЛрдбрд░, рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ, рд▓рд┐рдбрд╛рд░ рдХреЗ рд╕рд╛рде рдУрдбреЛрдореЗрдЯреНрд░реА5. рд╣рдо rviz рдФрд░ gazebo рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: xacro, рдирдП рд╕реЗрдВрд╕рд░ред4. rviz рдФрд░ gazebo рд╕рдВрдкрд╛рджрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд░реЛрдмреЛрдЯ рд╕рд┐рдореБрд▓реЗрд╢рди рдмрдирд╛рдПрдВред3. рддреЗрдЬреА рд▓рд╛рдиреЗ, рдХреИрдорд░реЗ рдХреЛ рдмрджрд▓рдиреЗ, рдЧреЗрдЯ рдХреЛ рдареАрдХ рдХрд░реЗрдВ2. рд╕реЙрдлреНрдЯрд╡реЗрдпрд░1. рд▓реЛрд╣рд╛рдкрд┐рдЫрд▓реА рдмрд╛рд░, рд╣рдордиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ xacro рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдерд╛, рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рд╡реАрдбрд┐рдпреЛ рдХреИрдорд░рд╛ рдФрд░ imu (рдЬрд╛рдЗрд░реЛрд╕реНрдХреЛрдк) рдЬреЛрдбрд╝рд╛ред
рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣рдо рдСрдкреНрдЯрд┐рдХрд▓ рдПрдирдХреЛрдбрд░ рд╕реЗ рдУрдбреЛрдореЗрдЯреНрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╡реНрд╣реАрд▓ рд╢рд╛рдлреНрдЯ рдкрд░ рд▓рдЧрд╛рдП рдЧрдП рд╣реИрдВ, рдПрдХ рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реЛрдмреЛрдЯ рдЯреНрд░реЙрд▓реА рдкрд░ рд╕рд╡рд╛рд░реА рдХрд░рддреЗ рд╣реИрдВред
рдУрдбреЛрдореЗрдЯреНрд░реА рдФрд░ рдЯреАрдПрдл
рдУрдбреЛрдореЗрдЯреНрд░реА рдФрд░ рдЯреАрдПрдл рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдЖрд░рдУрдПрд╕ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрд╕рд╛рдзрди рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд┐рджреНрдзрд╛рдВрдд рднрд╛рдЧ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓реЗрдЦреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдпрд╣рд╛рдВ ред
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЖрдзрд╛рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ, рд╣рдо рдЕрднреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рдЖрдЗрдП рдЗрд╕реЗ VNC рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рдХрд░ рдПрдХ рдЯреНрд░реЙрд▓реА рд░реЛрдмреЛрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред
Rosbots_driver рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдиреЛрдб рдмрдирд╛рдПрдВред рдпрд╣ рдлрд╛рдЗрд▓ рдУрдкреНрдЯреЛрдореЗрдЯреНрд░реА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧреА, рдЗрд╕реЗ рдСрдкреНрдЯрд┐рдХрд▓ рдПрдирдХреЛрдбрд░реНрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЗрд╕реЗ рдЕрд░рдбрд┐рдиреЛ рдФрд░ рдлрд┐рд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЛ рднреЗрдЬрддреА рд╣реИред
cd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver touch diff-tf.py
рд╣рдордиреЗ рдлрд╛рдЗрд▓ рдореЗрдВ рдХреЛрдб рдбрд╛рд▓рд╛:
рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдПрдВ:
CTRL+X
chmod +x diff-tf.py
рдЕрдм рд░реЛрдмреЛрдЯ рдкрд░, 2 рдиреЛрдбреНрд╕ рдЪрд▓рд╛рдПрдВ - рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рдбрд┐рдл-рдЯреАрдПрдл:
рдкрд╣рд▓рд╛ рдЯрд░реНрдорд┐рдирд▓:
python diff_tf.py
2:
rosrun rosbots_driver part2_cmr.py
рддреАрд╕рд░реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ, рд╣рдо рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдирдП рдУрдбреЛрдо рдФрд░ tf рд╡рд┐рд╖рдп рд╣реИрдВ:

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд┐рд╖рдп рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреНрдпрд╛ рд╣реИ (рдФрд░ рдХреНрдпрд╛ рдпрд╣ рд╕рднреА рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рд╣реИ) рдХреЗ рд╕рд╛рде рд░рд╕реНрдЯреЛрдкрд┐рдХ рдЗрдХреЛ рдУрдбреЛрдо рдХрдорд╛рдВрдб рджреЗрдЦреЗрдВред
рдЖрдЙрдЯрдкреБрдЯ рд▓рдЧрднрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:

рдЕрдм, рд░реЛрдмреЛрдЯ рдкрд░ рдЪрд▓ рд░рд╣реЗ рдиреЛрдбреНрд╕ рдХреЛ рдмрдВрдж рдХрд┐рдП рдмрд┐рдирд╛, рд╣рдо рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг rviz рдФрд░ gazebo рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдг рдХрдВрдкреНрдпреВрдЯрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗред
* Ubuntu (16.04 + ROS рдХрд╛рдЗрдиреЗрдЯрд┐рдХ) рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ (VMWare рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди), рдЬреЛ рдкрд╣рд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХреА рдЧрдИ рдереА, рдЗрд╕рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рдпрдВрддреНрд░рдг рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ (рдмрд╛рдж рдореЗрдВ "рдХрдВрдкреНрдпреВрдЯрд░" рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ), рдореЙрдбрд▓ рдХреЛ rviz рдореЗрдВ рдЪрд▓рд╛рдПрдВ:
roslaunch rosbots_description rviz.launch
рд░реЛрдмреЛрдЯ рдореЙрдбрд▓ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ рд▓реЛрдб рд╣реЛрдЧрд╛:

Add рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ rviz рдореЗрдВ рджреЛ рдбрд┐рд╕реНрдкреНрд▓реЗ рдЬреЛрдбрд╝реЗрдВред рдУрдбреЛрдореЗрдЯреНрд░реА рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЯреАрдПрдл рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди, рдЙрдиреНрд╣реЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдХреНрд╕реЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред
рдЙрд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЬрд╣рд╛рдВ рд░реЛрдмреЛрдЯ рдореЙрдбрд▓ рдХреЛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:

* рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд░реЛрдмреЛрдЯрдореЙрдбрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдХреАрдмреЛрд░реНрдб рд╕реЗ рд░реЛрдмреЛрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ tf рдФрд░ рдУрдбреЛрдореЗрдЯреНрд░реА рдХрд╛ рджреГрд╢реНрдп рдмрджрд▓рддрд╛ рд╣реИред
2 рд╡реЗрдВ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ rviz рдХреЛ рдмрдВрдж рдХрд┐рдП рдмрд┐рдирд╛, рд╣рдо рдХреАрдмреЛрд░реНрдб рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py /cmd_vel:=/part2_cmr/cmd_vel
рд░реЛрдмреЛрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА: рд▓рд╛рд▓ рддреАрд░ (рдУрдбреЛрдо рд╡рд┐рд╖рдп рдХрд╛ рджреГрд╢реНрдп), рд╡реЗрдХреНрдЯрд░ рд▓рд╛рдЗрдиреЗрдВ (tf рд╡рд┐рд╖рдп)ред
рдпрджрд┐ рдУрдбреЛрдо рд╡рд┐рд╖рдп рдХрд╛ рд▓рд╛рд▓ рддреАрд░ рд░реЛрдмреЛрдЯ рдХреА рдЧрддрд┐ рдХреА рджрд┐рд╢рд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЗрдХреНрдЯрд░ рд▓рд╛рдЗрдиреЗрдВ tf рджрд┐рдЦрд╛рддреА рд╣реИрдВ рдХрд┐ рд░реЛрдмреЛрдЯ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрддреНрд╡ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдерд┐рдд рд╣реИрдВ:
рдЕрдм, рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдУрдбреЛрдореЗрдЯреНрд░реА "рдЯреНрдпреВрди" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, rviz рд╕рдВрдкрд╛рджрдХ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд┐рдП рдмрд┐рдирд╛:
rosrun rviz rviz
рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдмреЗрд╕_рд▓рд┐рдВрдХ рдФрд░ рдУрдбреЛрдо tf рд╡рд┐рд╖рдп рдХреЗ рд╡реИрдХреНрдЯрд░ рд╕реЗ рдмрдиреЗ рд░рд╣реЗрдВ:

Rviz рдореЗрдВ, рдПрдХ рд╕реЗрд▓ 1 рдореАрдЯрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ рддреБрд▓рдиреАрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдмреЛрдЯ рдХреЛ 1 рдореАрдЯрд░ рднреА рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рдо рд░реЛрдмреЛрдЯ рдкрд░ 1 рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕реЗ рдХреАрдмреЛрд░реНрдб рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред Rviz рдореЗрдВ, рд░реЛрдмреЛрдЯ рдХреЛ 1 рдореАрдЯрд░ - рдПрдХ рд╕реЗрд▓ рдбреНрд░рд╛рдЗрд╡ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдЕрдЧрд░ рд░реЛрдмреЛрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдпрд╛рддреНрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ rviz рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝реА рджреВрд░реА рдкрд░, рддреЛ рдЖрдкрдХреЛ рдЙрд╕ diff_tf.py рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдмрдирд╛рдИ рдЧрдИ рдереА, рдЕрд░реНрдерд╛рддреН рдпрд╣ рдмреНрд▓реЙрдХ:
diff_tf.py #### parameters ####### #Wheel radius : 0.0325 # wheel circum = 2* 3.14 * 0.0325 = 0.2041 # One rotation encoder ticks : 8 ticks # For 1 meter: 8 * ( 1 / 0.2041) = 39 ticks self.rate = rospy.get_param('~rate',10.0) # the rate at which to publish the transform self.ticks_meter = float(rospy.get_param('ticks_meter', 190)) # The number of wheel encoder ticks per meter of travel self.base_width = float(rospy.get_param('~base_width', 0.11)) # The wheel base width in meters
рдорд╛рдирдЪрд┐рддреНрд░ (рдирдХреНрд╢рд╛)
рдХрд╣реАрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд░реЛрдмреЛрдЯ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП - рд╣рдореЗрдВ рдПрдХ рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЪрд▓реЛ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
Rviz рдХреЗ рд▓рд┐рдП рдПрдХ рдирдХреНрд╢рд╛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ (рд░реЛрдмреЛрдЯ рдкрд░ рдирд╣реАрдВ) рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (rosbots_description) рдореЗрдВ рдПрдХ рдореИрдк рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрд╕рдореЗрдВ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рд▓рдиреА рд╣реЛрдВрдЧреА рдЬреЛ рдореИрдк рдмрдирд╛рддреЗ рд╣реИрдВ: map.pgm рдФрд░ map.yamlред
* рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрдИ рдореИрдк рдлрд╛рдЗрд▓реЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдЬрд╛рджреВрдЧрд░ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрд░рдУрдПрд╕ рдореЗрдВ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдкреАрдЬреАрдПрдо рдЫрд╡рд┐ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдпрд╛ рддреЛ рд╣реЛрддрд╛ рд╣реИ:
- рд╕рдлреЗрдж - рдЕрдВрддрд░рд┐рдХреНрд╖ рдореБрдХреНрдд рд╣реИ;
- рдХрд╛рд▓рд╛ - рдЕрдВрддрд░рд┐рдХреНрд╖ рдПрдХ рдмрд╛рдзрд╛ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ;
- рдЧреНрд░реЗ - рдЕрдВрддрд░рд┐рдХреНрд╖ рдЕрднреА рддрдХ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред
рджреВрд╕рд░реА .yaml рдлрд╝рд╛рдЗрд▓ рдирдХреНрд╢реЗ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕рдХреЗ рдЖрдпрд╛рдо, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкрд┐рдХреНрд╕реЗрд▓ рдЕрдзрд┐рднреЛрдЧ (рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз), рдФрд░ рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЙрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдиреЛрдб рдЪрд▓рд╛рдПрдВ рдЬреЛ рдХрд╛рд░реНрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдЧрд╛:
rosrun map_server map_server /home/pi/catkin_ws/src/rosbots_description/maps/rail_lab.pgm 0.05
рдкрдбрд╝реЛрд╕реА рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ, рдореЙрдбрд▓ рдХреЛ rviz рдореЗрдВ рдЪрд▓рд╛рдПрдВ:
roslaunch rosbots_description rviz.launch
Rviz рдореЗрдВ, рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рди рдЬреЛрдбрд╝реЗрдВред
Rviz рдореЗрдВ, рд░реЛрдмреЛрдЯ рдЕрд╕рдорд╛рди рд░реВрдк рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛, рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рджреВрд░ рд╕реНрдерд┐рдд рд╣реИ:

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдирдХреНрд╢рд╛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ 1 рдореАрдЯрд░ рд╣реЛрдЧрд╛ред рдЕрдВрдд рдореЗрдВ 1 рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ:
rosrun map_server map_server /home/pi/catkin_ws/src/rosbots_description/maps/rail_lab.pgm 1
рдЕрдм рдЖрдк рдХреАрдмреЛрд░реНрдб рд╕реЗ рд░реЛрдмреЛрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдореИрдк рдХреЛ rviz рдореЗрдВ рд╕рд╡рд╛рд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рддреЛ, рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ :
- рд░реЛрдмреЛрдЯ рдХреЗ рдСрдкреНрдЯрд┐рдХрд▓ рд╡реНрд╣реАрд▓ рдПрдирдХреЛрдбрд░ рд╕реЗ рдУрдбреЛрдореЗрдЯреНрд░реА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ rviz рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВ;
- рд▓рд╛рдЗрд╡ рдФрд░ рд╡рд╕реНрддреБрддрдГ рдпрд╛рддреНрд░рд╛ рдХреА рджреВрд░реА рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдмреЛрдЯ рдУрдбреЛрдореЗрдЯреНрд░реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ;
- рдПрдХ рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ рдХреЛ рд▓реЛрдб рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдирдХреНрд╢рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд░реЛрдмреЛрдЯ "рдЯреНрдпреВрдиреНрдб" рдУрдбреЛрдореЗрдЯреНрд░реА рдХреЗ рд╕рд╛рде рдЙрд╕ рдкрд░ рд╕рд╡рд╛рд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реЛрдмреЛрдЯ рдЕрдВрдзрд╛ рд╣реИред рд╡рд╣ рдХреЛрдИ рдмрд╛рдзрд╛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдЙрди рдкрд░ рдареЛрдХрд░ рдЦрд╛рдПрдЧрд╛ред рджреВрд╕рд░рд╛ рдорд╛рдЗрдирд╕ рд╡рд░реНрдЪреБрдЕрд▓ рд░реВрдо рдореИрдк рд╣реИ рдЬрд┐рд╕реЗ rviz рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕рднреА рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рд╕рд╡рд╛рд░реА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рднреА рдЬрд╣рд╛рдВ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдФрд░ рд╡рд╕реНрддреБрддрдГ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рд░реЛрдмреЛрдЯ рдХреИрд╕реЗ "рджреЗрдЦ" рд╕рдХрддрд╛ рд╣реИ?
рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рд╣реИред рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдЧрдЬрд╝реЗрдмреЛ рдПрдореБрд▓реЗрдЯрд░-рдПрдбрд┐рдЯрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдФрд░ рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рд╣рдореЗрдВ рдПрдХ рддрддреНрд╡ (рд╕реЗрдВрд╕рд░) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ред
рдПрдХ рд╡рд┐рдХрд▓реНрдк рд░реЛрдмреЛрдЯ рдкрд░ рд▓рд┐рдбрд╛рд░ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╣реИред
рд▓рд┐рдбрд╛рд░ RPlidar A рез
рд╣рдо рд╕рд╕реНрддреА рдмрдЬрдЯ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд░реЛрдмреЛрдЯ рдкрд░ рд▓рд┐рдбрд╛рд░ рдбрд╛рд▓реЗрдВрдЧреЗред рд╢рд╛рдпрдж рдпрд╣ рд╕рдорд╛рдзрд╛рди рдПрдХ рд╣реА Kinect рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ, рдпрд╣ рдЧрддрд┐, рд╕рдЯреАрдХрддрд╛ рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рдЖрд╕рд╛рдиреА (рдХрдо рдмреЛрдЭрд┐рд▓) рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд┐рдбрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдкрд╛рд╡рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (https://habr.com/en/company/tod/blog/210252/) рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рд╣рдореЗрдВ
рдврдХреНрдХрди рдкреИрдХреЗрдЬ рдХреЛ
рд▓рд┐рдбрд╛рд░ -
wiki.ros.org/rplidar рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд▓рд┐рдбрд╛рд░ рдХреА рдорджрдж рд╕реЗ, рд╣рдо рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЗрдВ рднреА рдХрд░реЗрдВрдЧреЗред
рдЖрд░рдУрдПрд╕ рдореЗрдВ rplidar рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рдпрд╣рд╛рдВ ред
рд╣рдо рдЧреНрд░реЗ рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓реЗ рдмреВрдврд╝реЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓рд┐рдбрд╛рд░ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ:
cd /home/pi/rosbots_catkin_ws/src git clone https://github.com/robopeak/rplidar_ros.git cd .. catkin_make
рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
cd /home/pi/rosbots_catkin_ws/src git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam </code> cd .. catkin_make
рд░реЛрдмреЛрдЯ рдкрд░ рдкреИрдХреЗрдЬ рдЪрд▓рд╛рдПрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд▓рд┐рдбрд╛рд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:
sudo chmod a+rw /dev/ttyUSB0 roslaunch rplidar_ros rplidar.launch
* рдкрд╣рд▓рд╛ рдХрдорд╛рдВрдб рдпреВрдПрд╕рдмреА рдкреЛрд░реНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд▓рд┐рдбрд╛рд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛, рддреЛ рдпрд╣ рдХрдВрд╕реЛрд▓ рдХреЛ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛:
[ INFO] [1570900184.874891236]: RPLIDAR running on ROS package rplidar_ros. SDK Version:1.9.0 RPLIDAR S/N: ---------------- [ INFO] [1570900187.397858270]: Firmware Ver: 1.24 [ INFO] [1570900187.398081809]: Hardware Rev: 5 [ INFO] [1570900187.401749476]: RPLidar health status : 0 [ INFO] [1570900188.014285166]: current scan mode: Express, max_distance: 12.0 m, Point number: 4.0K , angle_compensate: 1
рдпрд╣рд╛рдВ рд╣рдо рддреБрд░рдВрдд рдереЛрдбрд╝рд╛ рд▓рд┐рдбрд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ (рд▓рд┐рдбрд╛рд░) рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╣рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рд╕реНрдХреИрдирд┐рдВрдЧ 4.0K рдЕрдВрдХ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 8.0Kред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕реНрдХреИрди рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ред
рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдо rplidar рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ - рд╕реНрдХреИрди рдореЛрдб:
cd /rosbots_catkin_ws/src/rplidar_ros/launch nano nano rplidar.launch
рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж
<param name="angle_compensate" type="bool" value="true"/>
рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
<param name="scan_mode" type="string" value="Boost"/>
рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдЬрд┐рд╕реЗ рдпрд╣рд╛рдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<param name="frame_id" type="string" value="laser"/>
Base_link рд╕реЗ рд▓реЗрдЬрд░ рдорд╛рди рдмрджрд▓реЗрдВред
* рдЕрдм, рдпрджрд┐ рдЖрдк roslaunch rplidar_ros rplidar.launch рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдиреЛрдб рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдЕрд▓рдЧ рд╣реЛрдЧрд╛:
[ INFO] [1570900188.014285166]: current scan mode: Boost, max_distance: 12.0 m, Point number: 8.0K , angle_compensate: 1
рджреЗрдЦ рд▓реЗрдирд╛ред рдЬреЛ rviz рдореЗрдВ рд▓рд┐рдбрд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реЛрдмреЛрдЯ рдкрд░ рдЪрд▓рд╛рдПрдБ:
roslaunch rplidar_ros rplidar.launch
рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░:
roslaunch rosbots_description rviz.launch
Rviz рдореЗрдВ, LaserScan рдбрд┐рд╕реНрдкреНрд▓реЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕реНрдХреИрди рд╡рд┐рд╖рдп рдЪреБрдиреЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╡рд┐рд╖рдп рдореЗрдВ рд╕рдВрджреЗрд╢ рдЧрд┐рд░ рд░рд╣реЗ рд╣реИрдВ:

рд░реЛрдмреЛрдЯ рдХреЗ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдЦрд┐рдбрд╝рдХреА рдореЗрдВ, рд░реЛрдмреЛрдЯ рдПрдХ рд╡рд┐рд╢рд╛рд▓рдХрд╛рдп рдирд┐рдХрд▓рд╛ред рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде, рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗред рдЕрдм рдПрдХ рдХрдорд░реЗ рдХрд╛ рдирдХреНрд╢рд╛ рдмрдирд╛рддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдиреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдВ:
catkin_create_pkg my_hector_mapping rospy cd my_hector_mapping mkdir launch cd launch nano hector.launch
hector.launch <?xml version="1.0"?> <launch> <node pkg="tf" type="static_transform_publisher" name="laser_link" args="0.0 0.0 0.0 0.0 0.0 0.0 /base_link /laser 50" /> <node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen"> <!-- Frame names --> <param name="map_frame" value="map" /> <param name="odom_frame" value="base_link" /> <!-- Map size / start point --> <param name="map_resolution" value="0.050"/> <param name="map_size" value="1024"/> <param name="map_start_x" value="0.5"/> // <param name="map_start_y" value="0.5" /> <param name="map_multi_res_levels" value="2" /> <!-- Map update parameters --> <param name="update_factor_free" value="0.4"/> <param name="update_factor_occupied" value="0.9" /> <param name="map_update_distance_thresh" value="0.4"/> <param name="map_update_angle_thresh" value="0.06" /> <param name="laser_z_min_value" value="-1.0" /> <param name="laser_z_max_value" value="1.0" /> <!-- Advertising config --> <param name="advertise_map_service" value="true"/> <param name="scan_subscriber_queue_size" value="5"/> <param name="scan_topic" value="scan"/> </node> </launch>
cd ~/rosbots_catkin_ws catkin_make
рдЪрд▓реЛ рдЗрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рд░реЛрдмреЛрдЯ рдкрд░:
рдкрд╣рд▓рд╛ рдЯрд░реНрдорд┐рдирд▓:
roslaunch rplidar_ros rplidar.launch
рджреВрд╕рд░рд╛:
rosrun rosbots_driver part2_cmr.py
рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░:
рдкрд╣рд▓рд╛ рдЯрд░реНрдорд┐рдирд▓:
roslaunch my_hector_mapping hector.launch
рджреВрд╕рд░рд╛:
roslaunch rosbots_description rviz.launch
рддреАрд╕рд░рд╛:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py /cmd_vel:=/part2_cmr/cmd_vel
рдбрд┐рд╕реНрдкреНрд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдореИрдк рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рдХреНрд╕реНрдб рдлреНрд░реЗрдо рдмреЗрд╕_рд▓рд┐рдВрдХ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд▓рд┐рдбрд╛рд░ рдХреИрд╕реЗ рдЕрдкрдиреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рд╕реНрдерд╛рди рдХреЛ "рдкреНрд░рдХрд╛рд╢рд┐рдд" рдХрд░рддрд╛ рд╣реИ:

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

рдирдХреНрд╢рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдХрдорд╛рдВрдб рд╕реЗ рд╕рд╣реЗрдЬреЗрдВ:
rosrun map_server map_saver -f map-1
рдмрдЬрдЯ рд▓рд┐рдбрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдирдХреНрд╢реЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдПрдХ рдорд┐рдердХ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдлрд╝реЛрдЯреЛрд╢реЙрдк рдореЗрдВ рд▓рд┐рдбрд╛рд░ рдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗред рд╣рдо рдирдХреНрд╢реЗ рд╕реЗ рдХрд╛рд▓реА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рджреАрд╡рд╛рд░реЛрдВ рдХреЛ рдХрд╛рд▓реА рд░реЗрдЦрд╛рдУрдВ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВ:

рдирдХреНрд╢реЗ рдХреЛ .pgm рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рди рднреВрд▓реЗрдВред
рдЕрдм рд╣рдо рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЙрд╕ рдХрдорд╛рдВрдб рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ рдЬреЛ рдкреЛрд╕реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдереА, рд▓реЗрдХрд┐рди рдПрдХ рдирдП рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде:
рдкрд╣рд▓рд╛ рдЯрд░реНрдорд┐рдирд▓:
rosrun map_server maserver /home/pi/catkin_ws/src/rosbots_description/maps/map-1.pgm 0.05
/
rosrun map_server maserver /home/pi/catkin_ws/src/rosbots_description/maps/map-1.pgm 0.05
/
rosrun map_server maserver /home/pi/catkin_ws/src/rosbots_description/maps/map-1.pgm 0.05
рджреВрд╕рд░рд╛:
roslaunch rosbots_description rviz.launch
рдкрд░рд┐рдгрд╛рдо рдореЗрдВ rviz:

рдирдпрд╛ рдирдХреНрд╢рд╛, рдЙрд╕ рдкрд░ рд░реЛрдмреЛрдЯ рдореЙрдбрд▓ рдХреА рддрд░рд╣ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░реЛрдмреЛрдЯ рдирдХреНрд╢реЗ рдХреЗ рдмрд╛рд╣рд░ рд╣реИред
рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рддреЗ рд╣реИрдВ:
- рд▓рд┐рдбрд╛рд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ RP-lidar A рез
- рдПрдХ рд▓рд┐рдбрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рдЗрд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ rviz рджреГрд╢реНрдп рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд▓реЛрдб рдХрд░рдирд╛ред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЗрдВ:
рдХрдорд░реЗ рдХрд╛ рдирдХреНрд╢рд╛ ред