{"id":4303,"date":"2020-06-29T17:57:13","date_gmt":"2020-06-29T09:57:13","guid":{"rendered":"https:\/\/yanjingang.com\/blog\/?p=4303"},"modified":"2021-11-30T00:33:15","modified_gmt":"2021-11-29T16:33:15","slug":"%e6%9c%ba%e5%99%a8%e4%ba%ba%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9fros-%e6%bf%80%e5%85%89%e9%9b%b7%e8%be%berplidar-a1","status":"publish","type":"post","link":"https:\/\/yanjingang.com\/blog\/?p=4303","title":{"rendered":"\u673a\u5668\u4eba\u64cd\u4f5c\u7cfb\u7edfROS\u2014\u4f7f\u7528\u6fc0\u5149\u96f7\u8fbeRpLidar A1\u8fdb\u884cSLAM\u5b9a\u4f4d\u5efa\u56fe"},"content":{"rendered":"<p>\u79fb\u52a8\u673a\u5668\u4eba\u5728\u73af\u5883\u4e2d\u83b7\u53d6\u969c\u788d\u7269\u7684\u5177\u4f53\u4f4d\u7f6e\u3001\u623f\u95f4\u7684\u5185\u90e8\u8f6e\u5ed3\u7b49\u4fe1\u606f\u90fd\u662f\u975e\u5e38\u5fc5\u8981\u7684\uff0c\u8fd9\u4e9b\u4fe1\u606f\u662f\u673a\u5668\u4eba\u521b\u5efa\u5730\u56fe\u3001\u8fdb\u884c\u5bfc\u822a\u7684\u57fa\u7840\u6570\u636e\u3002\u8003\u8651\u6210\u672c\uff0c\u4e70\u4e86\u4e00\u4e2aSLAMTEC\u516c\u53f8\u7684\u4f4e\u6210\u672c\u4e8c\u7ef4\u6fc0\u5149\u96f7\u8fbeRpLidar A1\u8fdb\u884c\u521d\u6b65\u7684\u5b66\u4e60\uff0c\u5b83\u53ef\u4ee5\u6700\u5feb10hz\u7684\u9891\u7387\u68c0\u6d4b360\u5ea6\u8303\u56f4\u5185\u7684\u969c\u788d\u7269\u4fe1\u606f\uff0c\u6700\u8fdc\u68c0\u6d4b\u8ddd\u79bb12\u7c73\uff0c\u9002\u5408\u5ba4\u5185\u79fb\u52a8\u673a\u5668\u4eba\u4f7f\u7528\u3002\u672c\u6587\u8bb2\u89e3\u5982\u4f55\u4f7f\u7528\u5b83\u611f\u77e5\u5468\u56f4\u73af\u5883\u3002<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/DDF3C577-547C-4072-8952-0E7A21BEA654.jpeg\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-4374\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/DDF3C577-547C-4072-8952-0E7A21BEA654-1024x672.jpeg\" alt=\"\" width=\"625\" height=\"410\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/DDF3C577-547C-4072-8952-0E7A21BEA654-1024x672.jpeg 1024w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/DDF3C577-547C-4072-8952-0E7A21BEA654-300x197.jpeg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/DDF3C577-547C-4072-8952-0E7A21BEA654-768x504.jpeg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/DDF3C577-547C-4072-8952-0E7A21BEA654-624x409.jpeg 624w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/DDF3C577-547C-4072-8952-0E7A21BEA654.jpeg 1143w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<h1>\u4e00\u3001\u51c6\u5907\u5de5\u4f5c<\/h1>\n<p>1\u3001\u5b89\u88c5ros\u5bf9\u5e94\u9a71\u52a8\u529f\u80fd\u5305rplidar<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">sudo apt install ros-melodic-rplidar-ros<\/code><\/pre>\n<p>2\u3001\u786c\u4ef6\u8fde\u63a5<\/p>\n<p>\u63a5\u597d\u8fde\u63a5\u7ebf\u5e76\u63d2\u5230usb\u53e3\u4e0a\uff0c\u6fc0\u5149\u96f7\u8fbe\u4f1a\u5f00\u59cb\u65cb\u8f6c\u3002<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/76F44469-8856-46DA-A51E-FDECCDBD8AFC.jpeg\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-4310\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/76F44469-8856-46DA-A51E-FDECCDBD8AFC-1024x768.jpeg\" alt=\"\" width=\"625\" height=\"469\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/76F44469-8856-46DA-A51E-FDECCDBD8AFC-1024x768.jpeg 1024w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/76F44469-8856-46DA-A51E-FDECCDBD8AFC-300x225.jpeg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/76F44469-8856-46DA-A51E-FDECCDBD8AFC-768x576.jpeg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/76F44469-8856-46DA-A51E-FDECCDBD8AFC-624x468.jpeg 624w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p>\u68c0\u67e5\u6fc0\u5149\u96f7\u8fbe\u662f\u5426\u88ab\u6b63\u5e38\u8bc6\u522b\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">lsusb|grep Cygnal\r\n<\/code><\/pre>\n<h1>\u4e8c\u3001\u6d4b\u8bd5\u6fc0\u5149\u96f7\u8fbe<\/h1>\n<p>1\u3001\u542f\u52a8\u6fc0\u5149node\u8282\u70b9<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">roscore\r\nrosrun rplidar_ros rplidarNode\r\n  [ INFO] [1593424905.411970119]: RPLIDAR running on ROS package rplidar_ros. SDK Version:1.7.0\r\n  RPLIDAR S\/N: CCE39A87C5E392D5A5E492F85C36316B\r\n  [ INFO] [1593424907.918969787]: Firmware Ver: 1.25\r\n  [ INFO] [1593424907.919051349]: Hardware Rev: 5\r\n  [ INFO] [1593424907.920679886]: RPLidar health status : 0\r\n<\/code><\/pre>\n<p>2\u3001\u67e5\u770b\u6fc0\u5149\u96f7\u8fbetopic\u8f93\u51fa\u7684\u6570\u636e<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u67e5\u770btopic\r\nrostopic list -v|grep scan\r\n  * \/scan [sensor_msgs\/LaserScan] 1 publisher\r\n\r\n# \u67e5\u770b\u8f93\u51fa\u6570\u636e\u683c\u5f0f\u5b9a\u4e49\r\nrosmsg show sensor_msgs\/LaserScan\r\n    std_msgs\/Header header\r\n      uint32 seq\r\n      time stamp\r\n      string frame_id\r\n    float32 angle_min\r\n    float32 angle_max\r\n    float32 angle_increment\r\n    float32 time_increment\r\n    float32 scan_time\r\n    float32 range_min\r\n    float32 range_max\r\n    float32[] ranges\r\n    float32[] intensities\r\n\r\n# \u8f93\u51fatopic\u5185\u5bb9\r\nrostopic echo \/scan<\/code><\/pre>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/lidar.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-4313\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/lidar.png\" alt=\"\" width=\"986\" height=\"606\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/lidar.png 986w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/lidar-300x184.png 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/lidar-768x472.png 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/lidar-624x384.png 624w\" sizes=\"(max-width: 986px) 100vw, 986px\" \/><\/a><\/p>\n<h1>\u4e09\u3001\u6fc0\u5149\u6570\u636e\u53ef\u89c6\u5316<\/h1>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u4f7f\u7528rplidar\u529f\u80fd\u5305\u5728rviz\u4e2d\u67e5\u770b\u6fc0\u5149\u96f7\u8fbe\u6570\u636e\uff08frame=laser\u3001RPLidarLaserScan Topic=\/scan\uff09\r\nroslaunch rplidar_ros view_rplidar.launch<\/code><\/pre>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/rplidar.png\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-4330\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/rplidar-1024x553.png\" alt=\"\" width=\"625\" height=\"338\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/rplidar-1024x553.png 1024w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/rplidar-300x162.png 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/rplidar-768x415.png 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/rplidar-624x337.png 624w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/rplidar.png 1215w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<h1>\u56db\u3001\u4f7f\u7528\u6fc0\u5149\u96f7\u8fbe\u8fdb\u884cSLAM\u5b9a\u4f4d\u5efa\u56fe<\/h1>\n<p>SLAM\uff08Simultaneous Localization and Mapping \u5b9e\u65f6\u5b9a\u4f4d\u4e0e\u5efa\u56fe\uff09\u53ef\u4ee5\u7b80\u5355\u7684\u7406\u89e3\u4e3a\u673a\u5668\u4eba\u5728\u672a\u77e5\u73af\u5883\u4e2d\u4ece\u4e00\u4e2a\u672a\u77e5\u4f4d\u7f6e\u5f00\u59cb\u79fb\u52a8\uff0c\u79fb\u52a8\u8fc7\u7a0b\u4e2d\u6839\u636e\u4f4d\u7f6e\u4f30\u8ba1\u548c\u5730\u56fe\u8fdb\u884c\u81ea\u8eab\u5b9a\u4f4d\uff0c\u540c\u65f6\u751f\u6210\u589e\u91cf\u5f0f\u5730\u56fe\uff0c\u4ee5\u5b9e\u73b0\u673a\u5668\u4eba\u5728\u672a\u77e5\u73af\u5883\u4e2d\u7684\u81ea\u4e3b\u5b9a\u4f4d\u548c\u5bfc\u822a\u3002<\/p>\n<p>\u8981\u5b8c\u6210\u673a\u5668\u4eba\u7684slam\u548c\u81ea\u4e3b\u5bfc\u822a\uff0c\u673a\u5668\u4eba\u9996\u5148\u8981\u6709\u611f\u77e5\u5468\u56f4\u73af\u5883\u7684\u80fd\u529b\uff0c\u5c24\u5176\u8981\u6709\u611f\u77e5\u6df1\u5ea6\uff08\u5373\u8ddd\u79bb\uff09\u4fe1\u606f\u7684\u80fd\u529b\uff0c\u6fc0\u5149\u96f7\u8fbe\uff08\u4ef7\u683c\u8d35\uff09\u3001\u53cc\u76ee\u6444\u50cf\u5934\uff08\u6807\u5b9a\u8f83\u4e3a\u590d\u6742\u3001\u8fd0\u7b97\u91cf\u5927\uff09\u3001RGB-D\u6444\u50cf\u5934\uff08\u89c6\u91ce\u7a84\u3001\u76f2\u533a\u5927\u3001\u566a\u58f0\u5927\uff09\u90fd\u5177\u5907\u63a2\u6d4b\u6df1\u5ea6\u7684\u80fd\u529b\u3002<\/p>\n<p>\u76ee\u524dslam\u6709\u8f83\u591a\u7684\u5f00\u6e90\u5b9e\u73b0\uff0c\u4f8b\u5982gmapping\u3001hector_slam\u3001cartographer\u3001rgbdslam\u3001orb_slam\u3001move_base\u3001amcl\u7b49\u3002\u672c\u6587\u4e0d\u8be6\u7ec6\u8ba8\u8bbaslam\u7684\u7b97\u6cd5\u5b9e\u73b0\uff0c\u5148\u6559\u4f1a\u5927\u5bb6\u600e\u4e48\u4f7f\u7528\u8fd9\u4e9b\u5f00\u6e90\u5e93\uff0c\u5728\u540e\u7eed\u6587\u7ae0\u4e2d\u518d\u6df1\u5165\u5b66\u4e60\u3002<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u5b89\u88c5\u4f9d\u8d56\u5305\r\nsudo apt install ros-melodic-fake-localization ros-melodic-map-server ros-melodic-hector-slam ros-melodic-gmapping ros-melodic-slam-gmapping ros-melodic-open-karto ros-melodic-slam-karto\r\n\r\n# \u65b0\u5efaros\u7a0b\u5e8f\u5305\r\n<span class=\"hljs-built_in\">cd<\/span> ~\/catkin_ws\/src\r\n<span class=\"hljs-comment\"># catkin_create_pkg &lt;package_name&gt; [depend1] [depend2] [depend3]<\/span>\r\ncatkin_create_pkg ros_slam_rplidar std_msgs rospy roscpp\r\n# \u7f16\u8f91slam launch\r\ncd ~\/catkin_ws\/src\/ros_slam_rplidar\/launch\/slam\/\r\nvim <span style=\"color: #ff0000;\">hector.launch    #\u4e0d\u9700\u8981\u91cc\u7a0b\u8ba1\u6570\u636e\uff0c\u53ea\u6839\u636e\u6fc0\u5149\u4fe1\u606f\u5373\u53ef\u6784\u5efa\u5730\u56fe<\/span>\r\n    &lt;!--\r\n    notice : you should install hector-slam at first,  sudo apt-get install ros-melodic-hector-slam\r\n               this launch just for test, you should improve the param for the best result.\r\n     --&gt;\r\n    &lt;launch&gt;\r\n      &lt;node pkg=\"tf\" type=\"static_transform_publisher\" name=\"link1_broadcaster\" args=\"1 0 0 0 0 0 base_link laser 100\" \/&gt; &lt;!--change --&gt;\r\n        &lt;node pkg=\"hector_mapping\" type=\"hector_mapping\" name=\"hector_height_mapping\" output=\"screen\"&gt;\r\n        &lt;param name=\"scan_topic\" value=\"scan\" \/&gt;\r\n        &lt;param name=\"base_frame\" value=\"base_link\" \/&gt;\r\n        &lt;param name=\"odom_frame\" value=\"base_link\" \/&gt;\r\n        &lt;param name=\"output_timing\" value=\"false\"\/&gt;\r\n        &lt;param name=\"advertise_map_service\" value=\"true\"\/&gt;\r\n        &lt;param name=\"use_tf_scan_transformation\" value=\"true\"\/&gt;\r\n        &lt;param name=\"use_tf_pose_start_estimate\" value=\"false\"\/&gt;\r\n        &lt;param name=\"pub_map_odom_transform\" value=\"true\"\/&gt;\r\n        &lt;param name=\"map_with_known_poses\" value=\"false\"\/&gt;\r\n        &lt;param name=\"map_pub_period\" value=\"0.5\"\/&gt;\r\n        &lt;param name=\"update_factor_free\" value=\"0.45\"\/&gt;\r\n        &lt;param name=\"map_update_distance_thresh\" value=\"0.02\"\/&gt;\r\n        &lt;param name=\"map_update_angle_thresh\" value=\"0.1\"\/&gt;\r\n        &lt;param name=\"map_resolution\" value=\"0.05\"\/&gt;\r\n        &lt;param name=\"map_size\" value=\"1024\"\/&gt;\r\n        &lt;param name=\"map_start_x\" value=\"0.5\"\/&gt;\r\n        &lt;param name=\"map_start_y\" value=\"0.5\"\/&gt;\r\n      &lt;\/node&gt;\r\n    &lt;\/launch&gt;\r\nvim <span style=\"color: #ff0000;\">gmapping.launch   #\u9700\u8981IMU+\u91cc\u7a0b\u8ba1+\u6fc0\u5149\u4fe1\u606f\u6784\u5efa\u5730\u56fe<\/span>\r\n    &lt;!--\r\n      notice : you should install gmapping-slam at first, command 'sudo apt-get install ros-indigo-gmapping'and 'sudo apt-get install ros-indigo-slam-gmapping'.\r\n               this launch just for test, you should improve the param for the best result.\r\n      you nedd change the frame of the \"static_transform_publisher\" when using the real robot platform.\r\n      it is better  subscribe the topic \/odom with true to slam in gmapping\r\n     --&gt;\r\n    &lt;launch&gt;\r\n      &lt;node pkg=\"tf\" type=\"static_transform_publisher\" name=\"link1_broadcaster\" args=\"0 0 0 0 0 0 base_link laser 100\" \/&gt; &lt;!--change --&gt;\r\n      &lt;node pkg=\"tf\" type=\"static_transform_publisher\" name=\"link2_broadcaster\" args=\"0 0 0 0 0 0 odom base_link 100\" \/&gt; &lt;!--change --&gt;\r\n      &lt;node pkg=\"gmapping\" type=\"slam_gmapping\" name=\"simple_gmapping\" output=\"screen\"&gt;\r\n          &lt;!--remap from=\"scan\" to=\"base_scan\"\/--&gt;\r\n          &lt;param name=\"map_update_interval\" value=\"5.0\"\/&gt;\r\n          &lt;param name=\"maxUrange\" value=\"8.0\"\/&gt;\r\n          &lt;param name=\"sigma\" value=\"0.05\"\/&gt;\r\n          &lt;param name=\"kernelSize\" value=\"1\"\/&gt;\r\n          &lt;param name=\"lstep\" value=\"0.05\"\/&gt;\r\n          &lt;param name=\"astep\" value=\"0.05\"\/&gt;\r\n          &lt;param name=\"iterations\" value=\"5\"\/&gt;\r\n          &lt;param name=\"lsigma\" value=\"0.075\"\/&gt;\r\n          &lt;param name=\"ogain\" value=\"3.0\"\/&gt;\r\n          &lt;param name=\"lskip\" value=\"0\"\/&gt;\r\n          &lt;param name=\"minimumScore\" value=\"50\"\/&gt;\r\n          &lt;param name=\"srr\" value=\"0.1\"\/&gt;\r\n          &lt;param name=\"srt\" value=\"0.2\"\/&gt;\r\n          &lt;param name=\"str\" value=\"0.1\"\/&gt;\r\n          &lt;param name=\"stt\" value=\"0.2\"\/&gt;\r\n          &lt;param name=\"linearUpdate\" value=\"0.3\"\/&gt;\r\n          &lt;param name=\"angularUpdate\" value=\"0.4\"\/&gt;\r\n          &lt;param name=\"temporalUpdate\" value=\"3.0\"\/&gt;\r\n          &lt;param name=\"resampleThreshold\" value=\"0.5\"\/&gt;\r\n          &lt;param name=\"particles\" value=\"30\"\/&gt;\r\n          &lt;param name=\"xmin\" value=\"-5.0\"\/&gt;\r\n          &lt;param name=\"ymin\" value=\"-5.0\"\/&gt;\r\n          &lt;param name=\"xmax\" value=\"5.0\"\/&gt;\r\n          &lt;param name=\"ymax\" value=\"5.0\"\/&gt;\r\n          &lt;param name=\"delta\" value=\"0.05\"\/&gt;\r\n          &lt;param name=\"llsamplerange\" value=\"0.01\"\/&gt;\r\n          &lt;param name=\"llsamplestep\" value=\"0.01\"\/&gt;\r\n          &lt;param name=\"lasamplerange\" value=\"0.005\"\/&gt;\r\n          &lt;param name=\"lasamplestep\" value=\"0.005\"\/&gt;\r\n      &lt;\/node&gt;\r\n    &lt;\/launch&gt;\r\n\r\nvim <span style=\"color: #ff0000;\">karto.launch<\/span>\r\n    &lt;!--\r\n      notice : you should install karto-slam at first, command 'sudo apt-get install ros-indigo-open-karto'and 'sudo apt-get install ros-indigo-slam-karto'.\r\n              this launch just for test, you should improve the param for the best result.\r\n      you nedd change the frame of the \"static_transform_publisher\" when using the real robot platform.\r\n      it is better  subscribe the topic \/odom with true to slam in gmapping\r\n    --&gt;\r\n    &lt;launch&gt;\r\n      &lt;node pkg=\"tf\" type=\"static_transform_publisher\" name=\"link1_broadcaster\" args=\"0 0 0 0 0 0 base_link laser 100\" \/&gt; &lt;!--change --&gt;\r\n      &lt;node pkg=\"tf\" type=\"static_transform_publisher\" name=\"link2_broadcaster\" args=\"0 0 0 0 0 0 odom base_link 100\" \/&gt; &lt;!--change --&gt;\r\n      &lt;node pkg=\"slam_karto\" type=\"slam_karto\" name=\"slam_karto\" output=\"screen\"&gt;\r\n        &lt;remap from=\"scan\" to=\"scan\"\/&gt;\r\n        &lt;param name=\"odom_frame\" value=\"odom\"\/&gt;\r\n        &lt;param name=\"map_update_interval\" value=\"25\"\/&gt;\r\n        &lt;param name=\"resolution\" value=\"0.025\"\/&gt;\r\n        &lt;rosparam command=\"load\" file=\"$(find ros_slam_rplidar)\/launch\/slam\/karto_mapper_params.yaml\" \/&gt;\r\n      &lt;\/node&gt;\r\n    &lt;\/launch&gt;\r\nvim <span style=\"color: #ff0000;\">karto_mapper_params.yaml<\/span>\r\n    # General Parameters\r\n    use_scan_matching: true\r\n    use_scan_barycenter: true\r\n    minimum_travel_distance: 0.3 \r\n    minimum_travel_heading: 0.4  # 0.2         #in radians\r\n    scan_buffer_size: 67                       \r\n    scan_buffer_maximum_scan_distance: 20.0\r\n    link_match_minimum_response_fine: 0.6\r\n    link_scan_maximum_distance: 4         #  6\r\n    do_loop_closing: true\r\n    loop_match_minimum_chain_size: 5\r\n    loop_match_maximum_variance_coarse: 0.4    # gets squared later\r\n    loop_match_minimum_response_coarse: 0.4        # 0.6\r\n    loop_match_minimum_response_fine: 0.6\r\n    # Correlation Parameters -              Correlation Parameters\r\n    correlation_search_space_dimension: 2\r\n    correlation_search_space_resolution: 0.05\r\n    correlation_search_space_smear_deviation: 0.05\r\n    # Correlation Parameters - Loop Closure Parameters\r\n    loop_search_space_dimension: 10  # 2.8\r\n    loop_search_space_resolution: 0.1\r\n    loop_search_space_smear_deviation: 0.05\r\n    loop_search_maximum_distance: 4.0\r\n    # Scan Matcher Parameters\r\n    distance_variance_penalty: 0.3             # gets squared later\r\n    angle_variance_penalty: 0.35                # in degrees (gets converted to radians then squared)\r\n    fine_search_angle_offset: 0.00349               # in degrees (gets converted to radians)\r\n    coarse_search_angle_offset: 0.349            # in degrees (gets converted to radians)\r\n    coarse_angle_resolution: 0.0349                # in degrees (gets converted to radians)\r\n    minimum_angle_penalty: 0.9\r\n    minimum_distance_penalty: 0.5\r\n    use_response_expansion: false\r\n\r\n# \u7f16\u8f91slam rviz\r\ncd ~\/catkin_ws\/src\/ros_slam_rplidar\/rviz\/\r\nvim <span style=\"color: #ff0000;\">slam.rviz<\/span>\r\n    Panels:\r\n      - Class: rviz\/Displays\r\n        Help Height: 78\r\n        Name: Displays\r\n        Property Tree Widget:\r\n          Expanded:\r\n            - \/Global Options1\r\n            - \/Status1\r\n            - \/RPLidarLaserScan1\r\n          Splitter Ratio: 0.5\r\n        Tree Height: 413\r\n      - Class: rviz\/Selection\r\n        Name: Selection\r\n      - Class: rviz\/Tool Properties\r\n        Expanded:\r\n          - \/2D Pose Estimate1\r\n          - \/2D Nav Goal1\r\n        Name: Tool Properties\r\n        Splitter Ratio: 0.588679\r\n      - Class: rviz\/Views\r\n        Expanded:\r\n          - \/Current View1\r\n        Name: Views\r\n        Splitter Ratio: 0.5\r\n      - Class: rviz\/Time\r\n        Experimental: false\r\n        Name: Time\r\n        SyncMode: 0\r\n        SyncSource: RPLidarLaserScan\r\n    Visualization Manager:\r\n      Class: \"\"\r\n      Displays:\r\n        - Alpha: 0.5\r\n          Cell Size: 1\r\n          Class: rviz\/Grid\r\n          Color: 160; 160; 164\r\n          Enabled: true\r\n          Line Style:\r\n            Line Width: 0.03\r\n            Value: Lines\r\n          Name: Grid\r\n          Normal Cell Count: 0\r\n          Offset:\r\n            X: 0\r\n            Y: 0\r\n            Z: 0\r\n          Plane: XY\r\n          Plane Cell Count: 10\r\n          Reference Frame: &lt;Fixed Frame&gt;\r\n          Value: true\r\n        - Alpha: 1\r\n          Autocompute Intensity Bounds: true\r\n          Autocompute Value Bounds:\r\n            Max Value: 0\r\n            Min Value: 0\r\n            Value: true\r\n          Axis: Z\r\n          Channel Name: intensity\r\n          Class: rviz\/LaserScan\r\n          Color: 255; 255; 255\r\n          Color Transformer: AxisColor\r\n          Decay Time: 0\r\n          Enabled: true\r\n          Invert Rainbow: false\r\n          Max Color: 255; 255; 255\r\n          Max Intensity: 4096\r\n          Min Color: 0; 0; 0\r\n          Min Intensity: 0\r\n          Name: RPLidarLaserScan\r\n          Position Transformer: XYZ\r\n          Queue Size: 1000\r\n          Selectable: true\r\n          Size (Pixels): 5\r\n          Size (m): 0.03\r\n          Style: Squares\r\n          Topic: \/scan\r\n          Use Fixed Frame: true\r\n          Use rainbow: true\r\n          Value: true\r\n        - Alpha: 0.7\r\n          Class: rviz\/Map\r\n          Color Scheme: map\r\n          Draw Behind: false\r\n          Enabled: true\r\n          Name: Map\r\n          Topic: \/map\r\n          Value: true\r\n      Enabled: true\r\n      Global Options:\r\n        Background Color: 48; 48; 48\r\n        Fixed Frame: map\r\n        Frame Rate: 30\r\n      Name: root\r\n      Tools:\r\n        - Class: rviz\/MoveCamera\r\n        - Class: rviz\/Interact\r\n          Hide Inactive Objects: true\r\n        - Class: rviz\/Select\r\n        - Class: rviz\/SetInitialPose\r\n          Topic: \/initialpose\r\n        - Class: rviz\/SetGoal\r\n          Topic: \/move_base_simple\/goal\r\n      Value: true\r\n      Views:\r\n        Current:\r\n          Class: rviz\/Orbit\r\n          Distance: 11.1184\r\n          Enable Stereo Rendering:\r\n            Stereo Eye Separation: 0.06\r\n            Stereo Focal Distance: 1\r\n            Swap Stereo Eyes: false\r\n            Value: false\r\n          Focal Point:\r\n            X: -0.0344972\r\n            Y: 0.065886\r\n            Z: 0.148092\r\n          Name: Current View\r\n          Near Clip Distance: 0.01\r\n          Pitch: 1.5698\r\n          Target Frame: &lt;Fixed Frame&gt;\r\n          Value: Orbit (rviz)\r\n          Yaw: 5.66358\r\n        Saved: ~\r\n    Window Geometry:\r\n      Displays:\r\n        collapsed: false\r\n      Height: 626\r\n      Hide Left Dock: false\r\n      Hide Right Dock: false\r\n      QMainWindow State: 000000ff00000000fd0000000400000000000001950000022cfc0200000006fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006400fffffffb0000001e0054006f006f006c002000500072006f0070006500720074006900650073020000019b000001b500000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c00610079007301000000280000022c000000dd00fffffffb0000000a0049006d006100670065000000028d000000c60000000000000000000000010000010b00000294fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003300000294000000b000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004a00000003efc0100000002fb0000000800540069006d00650000000000000004a0000002f600fffffffb0000000800540069006d00650100000000000004500000000000000000000003240000022c00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000\r\n      Selection:\r\n        collapsed: false\r\n      Time:\r\n        collapsed: false\r\n      Tool Properties:\r\n        collapsed: false\r\n      Views:\r\n        collapsed: false\r\n      Width: 1215\r\n      X: 503\r\n      Y: 227\r\n\r\n# \u7f16\u8f91view slam launch\r\ncd ~\/catkin_ws\/src\/ros_slam_rplidar\/launch\/\r\nvim slam_laser.launch\r\n    &lt;!-- SLAM with lidar --&gt;\r\n    &lt;launch&gt;\r\n      &lt;!-- Arguments --&gt;\r\n      &lt;arg name=\"slam_methods\" default=\"hector\" doc=\"slam type [gmapping, hector, karto, cartographer]\"\/&gt;\r\n      &lt;arg name=\"open_rviz\" default=\"false\"\/&gt;\r\n      &lt;arg name=\"planner\"  default=\"\" doc=\"opt: dwa, teb\"\/&gt;\r\n\r\n      &lt;!-- robot with lidar --&gt;\r\n      &lt;include file=\"$(find rplidar_ros)\/launch\/rplidar.launch\" \/&gt;\r\n\r\n      &lt;!-- SLAM: Gmapping, Cartographer, Hector, Karto --&gt;\r\n      &lt;include file=\"$(find ros_slam_rplidar)\/launch\/slam\/$(arg slam_methods).launch\" \/&gt;\r\n\r\n      &lt;!-- move_base --&gt;\r\n      &lt;group unless=\"$(eval planner == '')\"&gt;\r\n        &lt;include file=\"$(find ros_slam_rplidar)\/launch\/move_base.launch\" unless=\"$(eval planner == '')\"&gt;\r\n            &lt;arg name=\"planner\"            value=\"$(arg planner)\"\/&gt;\r\n        &lt;\/include&gt;\r\n      &lt;\/group&gt;\r\n\r\n      &lt;!-- rviz --&gt;\r\n      &lt;group if=\"$(arg open_rviz)\"&gt;\r\n        &lt;node name=\"rviz\" pkg=\"rviz\" type=\"rviz\" args=\"-d $(find ros_slam_rplidar)\/rviz\/slam.rviz\" \/&gt;\r\n      &lt;\/group&gt;\r\n    &lt;\/launch&gt;\r\n\r\n# \u6d4b\u8bd5hector slam\u5e76\u901a\u8fc7rviz\u5c55\u793a\r\nroslaunch ros_slam_rplidar slam_laser.launch open_rviz:=true<\/code><\/pre>\n<p>\u793a\u4f8b\u4ee3\u7801\u5730\u5740\uff1ahttps:\/\/github.com\/yanjingang\/ros_slam_rplidar<\/p>\n<p>\u624b\u6301rplidar\u96f7\u8fbe\u5927\u6982\u8f6c\u4e86\u8f6c\uff0c\u6784\u5efa\u51fa\u7684\u5730\u56fe\uff1a<code class=\"\">\uff08map topic\u662fhector_mapping\u53d1\u5e03\u7684\u5730\u56fe\u73ca\u683c\u6570\u636e\uff09<\/code>\u00a0<a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam3.png\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-4352\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam3-1024x580.png\" alt=\"\" width=\"625\" height=\"354\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam3-1024x580.png 1024w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam3-300x170.png 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam3-768x435.png 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam3-624x353.png 624w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam3.png 1859w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p>\u53ef\u4ee5\u770b\u5230\u5efa\u51fa\u6765\u7684\u5730\u56fe\u6548\u679c\u4e0d\u592a\u597d\uff0c\u8fd9\u91cc\u6709\u4e2a\u539f\u56e0\u662f\u6211\u624b\u62ff\u7740\u96f7\u8fbe\u79fb\u52a8\u65f6\u9ad8\u5ea6\u548c\u89d2\u5ea6\u90fd\u4e0d\u7a33\u5b9a\uff0c\u4e0b\u4e00\u6b65\u6211\u4eec\u628a\u5b83\u56fa\u5b9a\u5230\u5c0f\u8f66\u4e0a\u4e0a\u518d\u8bd5\u4e0b\u3002<\/p>\n<h1>\u4e94\u3001\u5766\u514b\u5c0f\u8f66SLAM\u5efa\u56fe<\/h1>\n<p><strong>1\u3001\u5b89\u88c5\u5230\u6811\u8393\u6d3e<\/strong><\/p>\n<p>\u4e3a\u4e86\u65b9\u4fbf\u5728\u5c0f\u8f66\u4e0a\u4f7f\u7528\uff0c\u6211\u4eec\u9700\u8981\u628a\u76f8\u5173\u73af\u5883\u5b89\u88c5\u5230\u6811\u8393\u6d3e\u4e0a\u3002<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u5b89\u88c5rplidar\u3001hector\u3001gmapping\u6e90\u7801\u5305\r\ncd ~\/ros_catkin_ws\r\nrosinstall_generator desktop rosserial <span style=\"color: #ff0000;\">rplidar_ros hector_slam gmapping slam_gmapping<\/span> --rosdistro melodic --deps --wet-only --tar &gt; melodic-desktop-wet.rosinstall\r\nwstool merge -t src melodic-desktop-wet.rosinstall\r\nwstool update -t src\r\nrosdep install -y --from-paths src --ignore-src --rosdistro melodic -r --os=debian:$(lsb_release -cs)\r\nsudo .\/src\/catkin\/bin\/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space \/opt\/ros\/melodic\r\n\r\n\r\n# \u6d4b\u8bd5rplidar\r\nroslaunch rplidar_ros view_rplidar.launch\r\n<\/code><\/pre>\n<p>*\u6ce8\uff1a\u6811\u8393\u6d3eUSB\u7535\u6d41\u95ee\u9898\uff1a<\/p>\n<p>\u6811\u8393\u6d3eUSB\u8f93\u51fa\u7535\u6d41\u662f1200mA\uff0crplidar\u7684\u542f\u52a8\u7535\u6e90\u7535\u6d41\u9700\u89811500mA\uff0c\u6240\u4ee5\u70ed\u63d2\u62d4\u4f1a\u5bfc\u81f4\u7cfb\u7edf\u91cd\u542f\uff0c\u6240\u4ee5\u4e00\u5b9a\u5148\u5173\u673a\u518d\u63d2\u62d4rplidar\u3002<\/p>\n<p><strong>2\u3001\u6784\u5efa\u5730\u56fe\u5e76\u4fdd\u5b58<\/strong><\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u6d4b\u8bd5slam \r\nroslaunch ros_slam_rplidar slam_laser.launch  open_rviz:=true\r\n# \u624b\u52a8\u4fdd\u5b58map\r\nroscd ros_slam_rplidar\/maps\/\r\nrosrun map_server map_saver -f map<\/code><\/pre>\n<div style=\"width: 625px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-4303-1\" width=\"625\" height=\"354\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/B8D2E3C1-C6C9-4247-B79B-F65FDCCDDA3E.mp4?_=1\" \/><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/B8D2E3C1-C6C9-4247-B79B-F65FDCCDDA3E.mp4\">https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/B8D2E3C1-C6C9-4247-B79B-F65FDCCDDA3E.mp4<\/a><\/video><\/div>\n<p>\u5efa\u597d\u7684\u5c40\u90e8\u5730\u56fe\uff1a<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam-pi4-lidar.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-5293\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam-pi4-lidar.png\" alt=\"\" width=\"762\" height=\"790\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam-pi4-lidar.png 762w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam-pi4-lidar-289x300.png 289w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2020\/06\/hector-slam-pi4-lidar-624x647.png 624w\" sizes=\"(max-width: 762px) 100vw, 762px\" \/><\/a><\/p>\n<p>\u597d\u4e86\uff0c\u672c\u6587\u5c31\u8bb2\u5230\u8fd9\u91cc\uff0c\u4e0b\u4e00\u7bc7\u6211\u4eec\u8ba9\u5c0f\u8f66\u8131\u79bb\u6570\u636e\u7ebf\u7684\u675f\u7f1a\uff0c\u6784\u5efa\u5b8c\u6574\u7684\u5730\u56fe\u5e76\u8fdb\u884c\u8def\u5f84\u89c4\u5212\u548c\u907f\u969c\u3002<\/p>\n<p>yan 7.12\u00a0 21:40<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u79fb\u52a8\u673a\u5668\u4eba\u5728\u73af\u5883\u4e2d\u83b7\u53d6\u969c\u788d\u7269\u7684\u5177\u4f53\u4f4d\u7f6e\u3001\u623f\u95f4\u7684\u5185\u90e8\u8f6e\u5ed3\u7b49\u4fe1\u606f\u90fd\u662f\u975e\u5e38\u5fc5\u8981\u7684\uff0c\u8fd9\u4e9b\u4fe1\u606f\u662f\u673a\u5668\u4eba\u521b\u5efa\u5730\u56fe\u3001\u8fdb\u884c\u5bfc\u822a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1005,973],"tags":[1021,1020,968,1019,1017,967,516,1016],"_links":{"self":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4303"}],"collection":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4303"}],"version-history":[{"count":0,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4303\/revisions"}],"wp:attachment":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}