рдЖрд░рдУрдПрд╕ рдЯреНрд░рдХ рдЯреНрд░реЙрд▓реАред рднрд╛рдЧ 7. рд░реЛрдмреЛрдЯ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг: рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рдЧрдордкрд┐рдВрдЧ, рдПрдПрдорд╕реАрдПрд▓, рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкреЛрд╕реНрдЯ:
8. рд╣рдо рдлреЛрди-рдЖрд░рдУрдПрд╕ рдХрдВрдЯреНрд░реЛрд▓, рдЬреАрдкреАрдПрд╕-рдиреЛрдб рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
7. рд░реЛрдмреЛрдЯ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг: рдЬреАрдПрдордкреА, рдПрдПрдорд╕реАрдПрд▓, рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ
6. рдкрд╣рд┐рдпрд╛ рдПрдирдХреЛрдбрд░, рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ, рд▓рд┐рдбрд╛рд░ рдХреЗ рд╕рд╛рде рдУрдбреЛрдореЗрдЯреНрд░реА
5. рд╣рдо rviz рдФрд░ gazebo рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: xacro, рдирдП рд╕реЗрдВрд╕рд░ред
4. rviz рдФрд░ gazebo рд╕рдВрдкрд╛рджрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд░реЛрдмреЛрдЯ рд╕рд┐рдореБрд▓реЗрд╢рди рдмрдирд╛рдПрдВред
3. рддреЗрдЬреА рд▓рд╛рдиреЗ, рдХреИрдорд░реЗ рдХреЛ рдмрджрд▓рдиреЗ, рдЧреЗрдЯ рдХреЛ рдареАрдХ рдХрд░реЗрдВ
2. рд╕реЙрдлреНрдЯрд╡реЗрдпрд░
1. рд▓реЛрд╣рд╛

рдкрд┐рдЫрд▓реА рдмрд╛рд░, рдмрдЬрдЯ рд▓рд┐рдбрд╛рд░ RPlidar-A1 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдХрдорд░реЗ рдХрд╛ рдирдХреНрд╢рд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рдУрдбреЛрдореЗрдЯреНрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд░реЛрдмреЛрдЯ, рдПрдХ рдирдХреНрд╢рд╛ рд╣реЛрдиреЗ рдФрд░ рдСрдкреНрдЯрд┐рдХрд▓ рд╕реЗрдВрд╕рд░ рд╕реЗ рдУрдбреЛрдореЗрдЯреНрд░реА рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЕрднреА рднреА рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИред
рдмрд▓реНрдХрд┐, рд╡рд╣ рдЙрд╕реЗ рдмрд┐рд▓рдХреБрд▓ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдФрд░ рд╡рд╣ рджреВрд░-рджреВрд░ рдХреЗ рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рд╕рд╡рд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдзрд╛рдПрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕реБрдЦрджрд╛рдпрдХ рдФрд░ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рджреЛрдиреЛрдВ рд╣реИред рдПрдХ рдУрд░, рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ рдФрд░ рдЬрд╣рд╛рдВ рднреА рдЖрдкрдХреА рджрд┐рд▓ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реЛ, рдпрд╛рддреНрд░рд╛ рдХрд░реЗрдВ, рджреВрд╕рд░реА рддрд░рдл, рджреВрд╕рд░реЗ рдХрдорд░реЗ рдореЗрдВ рдпрд╛ рд░рд╕реЛрдИ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд░реЛрдмреЛрдЯ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдХрд┐ рд░реЙрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рд╣рдорд╛рд░реЗ рд╕рдЬреНрдЬрди рдХреЗ рд▓рд┐рдбрд╛рд░ рдФрд░ рдПрдиреНрдХреЛрдбрд░ рдХреЗ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╕реАрдзреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдкрд░ рдЬрд╛рдПрдВ, рдПрдХ рдФрд░ рдЖрд░рдУрдПрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдХрдорд░реЗ рдХреЗ 2 рдбреА рдирдХреНрд╢реЗ рдмрдирд╛рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рд╕реЗ рдЖрд░рдУрдПрд╕ рдкреИрдХреЗрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред Gmapping рдкрддрд╛ рдХрд░реЗрдВред

рдЖрд░рдПрдо рдХрдмреАрд▓реЗ рдЬреАрдПрдордкреА


рд╣рдо рдореВрд▓ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдФрд░ рд╣рдо рд╡рд┐рд╖рдп рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдмрд░ рд▓реЗрдЦ рдХреЗ рдШрдЯрдирд╛рдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░, рдЕрджреНрдпрддрди рдФрд░ рдЧрд╣рд░рд╛ рдХрд░реЗрдВрдЧреЗред рдЖрд▓реЗрдЦ рдХреЛ Laser_scan_matcher рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдУрдбреЛрдореЗрдЯреНрд░реА рдХреЗ рдмрд┐рдирд╛ ROS рдореЗрдВ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рд░реЛрдмреЛрдЯ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдирд╛ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдирд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ (рдЕрддреНрдпрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди - rviz) рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ (рд░реЛрдмреЛрдЯ рдХреЗ рдмрд╛рд╣рд░), рдмрд╛рдХреА (рдореЛрд╢рди рдбреНрд░рд╛рдЗрд╡рд░, рд▓рд┐рдбрд╛рд░ рд▓реЙрдиреНрдЪ рдиреЛрдб) - рд░реЛрдмреЛрдЯ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ ROS-kinetic рдХреЗ рд▓рд┐рдП Laser_scan_matcher рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ (рд▓реЗрдЦ рдЗрдВрдбрд┐рдЧреЛ рдерд╛):

sudo apt-get install ros-kinetic-laser-scan-matcher 

рдЕрдм рджреМрдбрд╝реЛред

рд░реЛрдмреЛрдЯ рдкрд░ рд▓рд┐рдбрд╛рд░ рдХреЗ рд╕рд╛рде рдиреЛрдб:

 roslaunch rplidar_ros rplidar.launch 

рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░:

 roslaunch laser_scan_matcher demo.launch 

* рд░реЛрдмреЛрдЯ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рд╣рд░ рдмрд╛рд░ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, roscore рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд┐рдЬ рдореЗрдВ, рдХрдорд░реЗ рдХрд╛ рдХрдЪрд░рд╛ рдФрд░ рдЙрд╕рдореЗрдВ рдХрдЪрд░рд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдЫрд╡рд┐

рд░реЛрдЬрд╝рдо рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ laser_scan_matcher рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЦреБрдж gmping рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ ROS рдХрд╛рдЗрдиреЗрдЯрд┐рдХ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреИрдХреЗрдЬ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:



рдЕрдм рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ (рд░реЛрдмреЛрдЯ рдкрд░ рдирд╣реАрдВ) рдЧрдордкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓реЗрдЦ рдореЗрдВ рд╣реИ:

 roscd roscd rosbots_description/launch nano my_gmapping_launch.launch     

рдХреЛрдб
 <?xml version="1.0"?> <launch> <node pkg="tf" type="static_transform_publisher" name="base_link_to_laser" args="0.0 0.0 0.0 0.0 0.0 0.0 /base_link /laser 40" /> <node pkg="laser_scan_matcher" type="laser_scan_matcher_node" name="laser_scan_matcher_node" output="screen"> <param name="fixed_frame" value = "odom"/> <param name="use_odom" value="true"/> <param name="publish_odom" value = "true"/> <param name="use_alpha_beta" value="true"/> <param name="max_iterations" value="10"/> </node> <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen"> <param name="map_udpate_interval" value="1.0"/> <param name="delta" value="0.02"/> </node> </launch> 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдЦрдХ 3 рдиреЛрдбреНрд╕ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ: tf, laser_scan_matcher рдФрд░ gmappingред

рдЪрд▓реЛ рдлрд┐рд░ рд╕реЗ рд░реЛрдмреЛрдЯ рдкрд░ рд▓рд┐рдбрд╛рд░ рдЪрд▓рд╛рдПрдВ:

 roslaunch rplidar_ros rplidar.launch 

рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, рдирдИ рдмреЗрдХреНрдб рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓ рдФрд░ rviz рд╕рдВрдкрд╛рджрдХ:

 roslaunch rosbots_description my_gmapping_launch.launch 

 rosrun rviz rviz 

Rviz рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рдРрд╕реА рд╣реА рддрд╕реНрд╡реАрд░ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рд░реЛрдмреЛрдЯ рдХрд╛рд░реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдк рдмрдирд╛рддреЗ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рдереАред рдХреЗрд╡рд▓ рдЗрд╕ рд╕рдордп gmping рдкреИрдХреЗрдЬ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдФрд░ рдореБрдЭреЗ рдорд╛рдирдирд╛ тАЛтАЛрдЪрд╛рд╣рд┐рдП, рдпрд╣ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣реЗрдХреНрдЯрд░_рд╕реНрд▓реИрдо рдиреЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдХрдИ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ рдЫреЛрдбрд╝реА рд╣реИрдВ, рдЬрдм рд▓рд┐рдбрд╛рд░ рдЕрдкрдиреА рдзреБрд░реА рдкрд░ рдШреВрдорддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдмрд╛рд░ рд▓рдЧрднрдЧ рдХреЛрдИ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ:



рдХрдорд░реЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЗ рдмрд╛рдж, рдирд┐рд░реНрдорд┐рдд рдирдХреНрд╢рд╛ рднреА рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ:
rosrun map_server map_saver -f map-1 , рдЬрд╣рд╛рдБ рдирдХрд╝реНрд╢рд╛ -1 рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдмрдЪрд╛рдиреЗ рдХрд╛ рдирд╛рдо рд╣реИред

рдЕрдореНрдорд▓ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдпрдХрд░рдг


рдореИрдк рдкрд░ рд░реЛрдмреЛрдЯ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдПрдПрдорд╕реАрдПрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред AMCL рдирдХреНрд╢реЗ рдкрд░ рд░реЛрдмреЛрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБ-рдХрдг рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд░реЛрдмреЛрдЯ рдореЗрдВ, рд╣рдо AMCL рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ROS рдкреИрдХреЗрдЬ (http://wiki.ros.org/amcl) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рд░реЛрдмреЛрдЯ рдХреЗ рд▓рд┐рдП AMCL рдЪрд▓рд╛рдПрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, рдПрдХ рдФрд░ рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред

рдЪрд▓реЛ рдЙрд╕реЗ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ

amcl-2.launch
 <launch> <param name="/use_sim_time" value="false"/> <node pkg="tf" type="static_transform_publisher" name="base_link_to_laser" args="0.0 0.0 0.0 0.0 0.0 0.0 /base_link /laser 40" /> <node pkg="laser_scan_matcher" type="laser_scan_matcher_node" name="laser_scan_matcher_node" output="screen"> <param name="fixed_frame" value = "odom"/> <param name="use_alpha_beta" value="true"/> <param name="max_iterations" value="10"/> </node> <node name="map_server" pkg="map_server" type="map_server" args="/home/pi/catkin_ws/src/rosbots_description/maps/map-3.yaml"/> <node pkg="amcl" type="amcl" name="amcl" output="screen" > <!-- Publish scans from best pose at a max of 10 Hz --> <param name="odom_model_type" value="diff"/> <param name="odom_alpha5" value="0.1"/> <param name="transform_tolerance" value="0.2" /> <param name="gui_publish_rate" value="10.0"/> <param name="laser_max_beams" value="30"/> <param name="min_particles" value="500"/> <param name="max_particles" value="5000"/> <param name="kld_err" value="0.05"/> <param name="kld_z" value="0.99"/> <param name="odom_alpha1" value="0.2"/> <param name="odom_alpha2" value="0.2"/> <!-- laser, translation std dev, m --> <param name="laser_min_range" value="-1"/> <param name="laser_max_range" value="-1"/> <param name="odom_alpha3" value="0.8"/> <param name="odom_alpha4" value="0.2"/> <param name="laser_z_hit" value="0.5"/> <param name="laser_z_short" value="0.05"/> <param name="laser_z_max" value="0.05"/> <param name="laser_z_rand" value="0.5"/> <param name="laser_sigma_hit" value="0.2"/> <param name="laser_lambda_short" value="0.1"/> <param name="laser_lambda_short" value="0.1"/> <param name="laser_model_type" value="likelihood_field"/> <!-- <param name="laser_model_type" value="beam"/> --> <param name="laser_likelihood_max_dist" value="2.0"/> <param name="update_min_d" value="0.2"/> <param name="update_min_a" value="0.5"/> <param name="odom_frame_id" value="odom"/> <param name="base_frame_id" type="str" value="base_link" /> <param name="global_frame_id" type="str" value="map" /> <param name="resample_interval" value="1"/> <param name="transform_tolerance" value="0.1"/> <param name="recovery_alpha_slow" value="0.0"/> <param name="recovery_alpha_fast" value="0.0"/> <param name="use_map_topic" value="true" /> <param name="first_map_only" value="true" /> </node> </launch> 


рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде:
- рдиреЛрдб рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ рд╣реЛрдХреБрдпреЛ рд▓рд┐рдбрд╛рд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рд░реЛрдмреЛрдЯ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ)
- рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ рдХрд╛ рдкрде рдФрд░ рдирд╛рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИ (рдорд╛рдирдЪрд┐рддреНрд░- 3.yaml)
рдХреЛрдб 4 рдиреЛрдб рдЪрд▓рд╛рддрд╛ рд╣реИ:
- tf
- map_server
- рд▓реЗрдЬрд░_рд╕реНрдХреИрди_рдореИрдЪрд░
- рдЕрдореНрдорд▓
Amcl рдиреЛрдб рдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ map_server рдмрд╛рдж рдХреЗ рд░реЛрдмреЛрдЯ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВред

рд▓реЗрдХрд┐рди рд░реЛрдмреЛрдЯ рдХреЛ:

 roslaunch rplidar_ros rplidar.launch 

рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░:
рдкрд╣рд▓рд╛ рдЯрд░реНрдорд┐рдирд▓: roslaunch rosbots_description amcl-2.launch
рджреВрд╕рд░рд╛ рдЯрд░реНрдорд┐рдирд▓: roslaunch rosbots_description rviz.launch

Rviz рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рд╕рдВрдкрд╛рджрдХ рдХреЗ рдЕрдЧрд▓реЗ рдЪрд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдВрдЧреЗ:
- рдЖрд░рд╡реАрдЬрд╝ рдореЗрдВ рдбрд┐рд╕реНрдкреНрд▓реЗ рдЬреЛрдбрд╝реЗрдВ:
тАв рд▓реЗрдЬрд░рд╕реНрдХреИрди
тАв рдирдХреНрд╢рд╛
тАв рдкреЛрд╕рдЕрд░реЗ


- рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд░реЛрдмреЛрдЯ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд░реЛрдмреЛрдЯ рдХрд╣рд╛рдБ рд╢реБрд░реВ рд╣реБрдЖ рдФрд░ рдпрд╣ рдХрд╣рд╛рдБ рд╣реИред "рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрд░рдВрднреАрдХрд░рдг" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рд▓рд┐рдП, rviz рдореЗрдВ рдЖрдкрдХреЛ "2D рдкреЛрдЬрд╝ рдПрд╕реНрдЯреАрдореЗрдЯ" рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рддреАрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдБ рд░реЛрдмреЛрдЯ рдХреЛ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рдпрд╣ рдСрдкрд░реЗрд╢рди rviz рдореЗрдВ рдлрд╝реНрд░реЗрдо "рдореИрдк" рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:



рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╣рдореЗрдВ рд░реЛрдмреЛрдЯ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рдореБрджреНрд░рд╛) рдорд┐рд▓рддреЗ рд╣реИрдВ:

 [ INFO] [1572374324.454855505]: Setting pose (1572374324.454806): -0.014 -0.012 0.655 

рдЖрдк рдмрд╛рд░-рдмрд╛рд░ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╣рд░реЗ рддреАрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рд░реЛрдмреЛрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ рдирдХреНрд╢реЗ рдкрд░ рд▓рд┐рдбрд╛рд░ (рд▓рд╛рд▓ рд╕реАрдорд╛) рд╕реЗ рдбреЗрдЯрд╛ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдпрд╛ рдХрдорд░реЗ рдХреА рджреАрд╡рд╛рд░реЛрдВ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рдХреЗ рдХрд░реАрдм рд╣реИ:



Rviz рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╣рдореЗрдВ рд░реЛрдмреЛрдЯ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рд╛рд▓ рд░рдВрдЧ рдХреЗ рддреАрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:



* рдПрдХ рд░реЛрдмреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдХреНрд╖ рд╣реИ (рдкреВрд░реЗ рдЪрд┐рддреНрд░рд┐рдд rviz рдореЙрдбрд▓ рдЕрднреА рднреА рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ)ред
** рдпрджрд┐ рддреАрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджрд┐рдпрд╛, рддреЛ рдЖрдк rviz рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП PoseArray рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдкреБрди: рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдордиреЗ рд╕реАрдзреЗ рдЙрд╕ рдирдХреНрд╢реЗ рдкрд░ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╣рд╛рдВ рд░реЛрдмреЛрдЯ рд╕реНрдерд┐рдд рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдЕрднреА рднреА рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд▓рд╛рд▓ рддреАрд░ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд░реЛрдмреЛрдЯ рдХрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд╛рди рд╣реИред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреАрд░ рдФрд░ рдЙрдирдХреЗ рдирдХреНрд╢реЗ рдкрд░ рдмрд┐рдЦрд░рд╛рд╡ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЕрднреА рднреА рд░реЛрдмреЛрдЯ рдХреЗ рд╕рдЯреАрдХ рд╕реНрдерд╛рди рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╣ рд╕реНрдерд╛рди рдЬрд╣рд╛рдВ рд╢реВрдЯрд░ рдШрдиреА рд╣реИ, рд░реЛрдмреЛрдЯ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд░реЛрдмреЛрдЯ рдХрд╣рд╛рдВ рд╣реИ, рдЖрдкрдХреЛ рд░реЛрдмреЛрдЯ рдХреЗ рд╕реНрдерд╛рди рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╕рд╡рд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕реЗрдЯ рд╕реЗ рд╣реИ: рд▓рд┐рдбрд╛рд░ рдФрд░ рдПрдирдХреЛрдбрд░ред
рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рд▓рд┐рдбрд╛рд░ рдХреЗ рд╕рд╛рде рдореИрдк рдкрд░ рдпрд╛рддреНрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЗрд╡рд▓ рдЗрд╕рдХреА (рд▓рд┐рдбрд╛рд░) рдорджрдж рд╕реЗ рд░реЛрдмреЛрдЯ рдХреЛ рдордЬрд╝рдмреВрддреА рд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
-
рдирдХреНрд╢реЗ рдкрд░ рд░реЛрдмреЛрдЯ рдХреА рд╕рд╡рд╛рд░реА рдХрд░реЗрдВ
рд░реЛрдмреЛрдЯ рдкрд░:

 rosrun rosbots_driver part2_cmr.py 

рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░:

 rosrun teleop_twist_keyboard teleop_twist_keyboard.py /cmd_vel:=/part2_cmr/cmd_vel 


рдпрд╛рддреНрд░рд╛ рдХреЗ рджреМрд░рд╛рди, amcl рд╡рд┐рд╖рдп / рд╕реНрдХреИрди, / рдореИрдк, / tf рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рд╡рд┐рд╖рдпреЛрдВ / amcl_pose рдФрд░ / particlecloud рдореЗрдВ рд░реЛрдмреЛрдЯ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рдЬрдм рдЖрдк рдпрд╛рддреНрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рддреАрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рд╡реЗ рд░реЛрдмреЛрдЯ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдШрдиреАрднреВрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ:


рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдХреИрд╕реЗ рдпрд╛рддреНрд░рд╛ рдХрд░рддрд╛ рд╣реИ (рдХрдиреЗрдХреНрд╢рди рдХреЗ рдкреЗрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ)ред рдФрд░ рдпрд╣ рднреА рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдбрд╛рд░ рдХрдорд░реЗ рдХреЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╕реАрдорд╛рдУрдВ рдкрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЕрдореНрдорд▓ рдиреЛрдб рдХреЛрдб рдореЗрдВ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?


рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдЙрдиреНрд╣реЗрдВ рдмреБрдирд┐рдпрд╛рджреА (рд╕рд╛рдорд╛рдиреНрдп), рдлрд╝рд┐рд▓реНрдЯрд░ рдорд╛рдкрджрдВрдбреЛрдВ (рдлрд╝рд┐рд▓реНрдЯрд░), рд▓реЗрдЬрд░ рдорд╛рдкрджрдВрдбреЛрдВ (рд▓рд┐рдбрд╛рд░) (рд▓реЗрдЬрд░ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░:
  • odom_model_type (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: "рднрд┐рдиреНрди"): рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдУрдбреЛрдореЗрдЯреНрд░реА рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдЕрдВрддрд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЕрдВрддрд░ред "рдУрдордиреА", "рдЕрд▓рдЧ-рд╕рд╣реА," рдпрд╛ "рдУрдордиреА-рд╕рд╣реА" рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • odom_frame_id (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: "рдУрдбреЛрдо"): рдлреНрд░реЗрдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╡рд┐рд╖рдп рдХреЛ рдкрдврд╝реЗрдВ) рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдУрдбреЛрдореЗрдЯреНрд░реА рдЬреБрдбрд╝реА рд╣реЛрдЧреАред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдУрдбреЛрдо рд╡рд┐рд╖рдп рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
  • base_frame_id (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: "base_link"): рд░реЛрдмреЛрдЯ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдоред
  • global_frame_id (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: "рдореИрдк"): рдореИрдк рдХрд╛ рдлреНрд░реЗрдо, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдк-рд╕рд░реНрд╡рд░ рдЗрд╕реЗ рдореИрдк рдореЗрдВ рд╡рд┐рд╖рдп рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
  • use_map_topic (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: рдЧрд▓рдд): рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рд╖рдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ (рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рдЖрд░рдУрдПрд╕ рдореЗрдВ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЗрд╡рд╛рдПрдВ рдФрд░ рдХреНрд░рд┐рдпрд╛рдПрдВ рднреА рд╣реИрдВред


рдлрд╝рд┐рд▓реНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░
рдпреЗ рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрдг рдлрд╝рд┐рд▓реНрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

  • min_particles (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 100): рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдХрдгреЛрдВ рдХреА рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 500 рд╣реИрдВред
  • max_particles (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 5000): рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдХрдгреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
  • kld_err (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 0.01): рд╕рд╣реА рд╡рд┐рддрд░рдг рдФрд░ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рд╡рд┐рддрд░рдг рдХреЗ рдмреАрдЪ рдЕрдзрд┐рдХрддрдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рддреНрд░реБрдЯрд┐ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 0.05 рд╣реИ
  • update_min_d (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 0.2): рд░реИрдЦрд┐рдХ рджреВрд░реА (рдореАрдЯрд░ рдореЗрдВ) рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдмреЛрдЯ рдХреЛ рдпрд╛рддреНрд░рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
  • update_min_a (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: pi / 6.0): рдХреЛрдгреАрдп рджреВрд░реА (рд░реЗрдбрд┐рдпрди рдореЗрдВ) рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдмреЛрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 0.5 рд╣реИ
  • resample_interval (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 2): рдлрд┐рд░ рд╕реЗ рд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдЕрдкрдбреЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 1 рд╣реИред
  • transform_tolerance (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 0.1): рд╡рд╣ рд╕рдордп (рд╕реЗрдХрдВрдб рдореЗрдВ) рдЬрд┐рд╕ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рджрд┐рдирд╛рдВрдХрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдорд╛рдиреНрдп рд╣реИред
  • gui_publish_rate (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: -1.0): рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ (рд╣рд░реНрдЯреНрдЬ рдореЗрдВ) рдЬрд┐рд╕ рдкрд░ рд╕реНрдХреИрди рдФрд░ рдкрде рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдорд╛рди -1.0 рд╣реИ, рддреЛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдХреНрд╖рдо рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 10 рд╣реИрдВред


рд▓реЗрдЬрд░ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ (рд▓рд┐рдбрд╛рд░) (рд▓реЗрдЬрд░ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕)
рдпреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдкрдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд▓рд┐рдХреНрд╡рд┐рдб рд▓реЗрдЬрд░ рдХреЗ рд╕рд╛рде рдПрдордХреНрд▓реЗ рдХреИрд╕реЗ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред

  • Laser_min_range (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: -1.0): рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕реНрдХреИрди рд░реЗрдВрдЬ; -1.0 рд▓реЗрдЬрд░ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдиреНрдпреВрдирддрдо рд░реЗрдВрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
  • Laser_max_range (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: -1.0): рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╕реНрдХреИрдирд┐рдВрдЧ рд░реЗрдВрдЬ; -1.0 рдЕрдзрд┐рдХрддрдо рд▓реЗрдЬрд░ рд░реЗрдВрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
  • Laser_max_beams (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 30): рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреИрди рдореЗрдВ рдХрд┐рддрдиреЗ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдмреАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • Laser_z_hit (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 0.95): рд░реЛрдмреЛрдЯ рдореЙрдбрд▓ рдХреЗ z_hit рдШрдЯрдХ рдХрд╛ рд╡рдЬрдиред
  • Laser_z_short (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 0.1): рд░реЛрдмреЛрдЯ рдореЙрдбрд▓ рдХреЗ z_short рдШрдЯрдХ рдХрд╛ рд╡рдЬрдиред
  • Laser_z_max (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 0.05): рд░реЛрдмреЛрдЯ рдореЙрдбрд▓ рдХреЗ z_max рдШрдЯрдХ рдХрд╛ рд╡рдЬрдиред
  • Laser_z_rand (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 0.05): рд░реЛрдмреЛрдЯ рдореЙрдбрд▓ рдХреЗ z_rand рдШрдЯрдХ рдХрд╛ рд╡рдЬрдиред


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ min_particles рдФрд░ max_particles рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬрдм рдЖрдк рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреГрд╢реНрдп рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдо рд╣реЛрдЧреАред

рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд▓реЛрдб рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдХрдорд░реЗ рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ


рдпрд╣ рдирд╛рдо рдЖрдХрд░реНрд╖рдХ рд╣реИ рдФрд░ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдХреНрд╖рдг рдореЗрдВ рдирдХреНрд╢реЗ рдкрд░ рд░реЛрдмреЛрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рд╡реЗ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИрдВ? рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд░реЛрдмреЛрдЯ рдХрдорд░реЗ рдореЗрдВ рдмрд┐рдВрджреБ A рд╕реЗ рд░рд╕реЛрдИ рдореЗрдВ B рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛ред

рд░реЛрдмреЛрдЯ рдХреА рд╕реНрдерд┐рддрд┐ (рдкреЛрдЬ) рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдПрдПрдорд╕реА рд╡рд░реНрдХрд┐рдВрдЧ рдиреЛрдб (рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓реЗрдЦ рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдФрд░ рд╡рд┐рд╖рдп рдореЗрдВ рджреЗрдЦреЗрдВ / amcl_pose:

 rostopic echo -n1 /amcl_pose 

* рдХреБрдВрдЬреА n1 - рд╡рд┐рд╖рдп рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ "рдареАрдХ рдХрд░рдиреЗ" рдХреЗ рд▓рд┐рдПред



рдЖрдЗрдП рдПрдХ рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕реЗ рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░реЛрдмреЛрдЯ рдХреА рд╕реНрдерд┐рддрд┐ (рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ) рдХреЛ рджреВрд░ рдХрд░ рджреЗрдЧрд╛ рддрд╛рдХрд┐ рд╣рд░ рдмрд╛рд░ рдпрд╣ рд╡рд┐рд╖рдп рдореЗрдВ рди рджрд┐рдЦреЗред

1. рдПрдХ рдирдпрд╛ рдЖрд░рдУрдПрд╕ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдБред

 cd catkin_ws/src catkin_create_pkg get_pose rospy cd get_pose/src 

2. рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:

get_pose_service.py
 #! /usr/bin/env python import rospy from std_srvs.srv import Empty, EmptyResponse # Import the service message python classes generated from Empty.srv. from geometry_msgs.msg import PoseWithCovarianceStamped, Pose robot_pose = Pose() def service_callback(request): print "Robot Pose:" print robot_pose return EmptyResponse() # the service Response class, in this case EmptyResponse def sub_callback(msg): global robot_pose robot_pose = msg.pose.pose rospy.init_node('service_server') my_service = rospy.Service('/get_pose_service', Empty , service_callback) # create the Service called get_pose_service with the defined callback sub_pose = rospy.Subscriber('/amcl_pose', PoseWithCovarianceStamped, sub_callback) rospy.spin() # mantain the service open. 


* рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп chmod + x get_pose_service.py рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛
3. рдЪрд▓реЛ рдиреЛрдб рдХреЛрдб рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд▓реЙрдиреНрдЪ рдмрдирд╛рдПрдБ:

 cd .. mkdir launch && cd launch 

рдиреИрдиреЛ

get_pose_service.launch
 <launch> <node pkg="get_pose" type="get_pose_service.py" name="service_server" output="screen"> </node> </launch> 


4. рдмрд┐рд▓реНрд▓реА рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛:

 cd catkin_ws catkin_make 

рдЕрдм рд╣рдо рдирдИ рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓ рд╕рд╣рд┐рдд рд╕рдм рдХреБрдЫ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВрдЧреЗред

рд▓реЗрдХрд┐рди рд░реЛрдмреЛрдЯ рдХреЛ:

 roslaunch rplidar_ros rplidar.launch 

рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░:

 1- : roslaunch rosbots_description amcl-2.launch 2- : roslaunch rosbots_description rviz.launch 3- : roslaunch get_pose get_pose_service.launch 

рд╣рдо рдирдИ рд╕реЗрд╡рд╛ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд░реЛрдмреЛрдЯ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдмрддрд╛рдПрдЧреА (рд╣рдо рдЖрд░рдУрдПрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ):

 rosservice call /get_pose_service 

рдЯрд░реНрдорд┐рдирд▓ рд░рдирд┐рдВрдЧ рд▓реЙрдиреНрдЪ get_pose рдореЗрдВ, рд╣рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд░реЛрдмреЛрдЯ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд┐рд▓реЗрдВрдЧреЗ:



рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВред

[rviz.launch] рдкреИрдХреЗрдЬ рдореЗрдВ рди рддреЛ рдПрдХ рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓ рд╣реИ [rosbots_description] рдФрд░ рди рд╣реА [rosbots_description] рдПрдХ рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо
рд╕рдорд╛рдзрд╛рди:

 cd catkin_ws source devel/setup.bash 

Source: https://habr.com/ru/post/hi472984/


All Articles