{"id":188,"date":"2026-04-18T12:29:44","date_gmt":"2026-04-18T04:29:44","guid":{"rendered":"https:\/\/374969782.xyz\/?p=188"},"modified":"2026-04-18T12:29:46","modified_gmt":"2026-04-18T04:29:46","slug":"ros2%e5%ad%a6%e4%b9%a0%e8%ae%b0%e5%bd%95%ef%bc%8814%ef%bc%89-rviz%ef%bc%9a%e4%b8%89%e7%bb%b4%e5%8f%af%e8%a7%86%e5%8c%96%e6%98%be%e7%a4%ba%e5%b9%b3%e5%8f%b0","status":"publish","type":"post","link":"https:\/\/374969782.xyz\/index.php\/2026\/04\/18\/ros2%e5%ad%a6%e4%b9%a0%e8%ae%b0%e5%bd%95%ef%bc%8814%ef%bc%89-rviz%ef%bc%9a%e4%b8%89%e7%bb%b4%e5%8f%af%e8%a7%86%e5%8c%96%e6%98%be%e7%a4%ba%e5%b9%b3%e5%8f%b0\/","title":{"rendered":"ROS2\u5b66\u4e60\u8bb0\u5f55\uff0814\uff09-Rviz\uff1a\u4e09\u7ef4\u53ef\u89c6\u5316\u663e\u793a\u5e73\u53f0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Rviz\u662f\u4e00\u6b3e\u673a\u5668\u4eba\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7684\u6570\u636e\u53ef\u89c6\u5316\u8f6f\u4ef6\uff0c\u7528\u4e8e\u53ef\u89c6\u5316\u673a\u5668\u4eba\u6a21\u578b\u3001\u4f20\u611f\u5668\u4fe1\u606f\u3001\u73af\u5883\u4fe1\u606f\u7b49\u7b49\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rviz\u7684\u6838\u5fc3\u6846\u67b6\u662f\u57fa\u4e8e<strong>Qt\u53ef\u89c6\u5316\u5de5\u5177<\/strong>\u6253\u9020\u7684\u4e00\u4e2a\u5f00\u653e\u5f0f\u5e73\u53f0\uff0c\u5b98\u65b9\u51fa\u5382\u5c31\u81ea\u5e26\u4e86\u5f88\u591a\u673a\u5668\u4eba\u5e38\u7528\u7684\u53ef\u89c6\u5316\u663e\u793a\u63d2\u4ef6\uff0c\u53ea\u8981\u6211\u4eec\u6309\u7167ROS\u4e2d\u7684\u6d88\u606f\u53d1\u5e03\u5bf9\u5e94\u7684\u8bdd\u9898\uff0c\u5c31\u53ef\u4ee5\u770b\u5230\u56fe\u5f62\u5316\u7684\u6548\u679c\u4e86\u3002\u5982\u679c\u6211\u4eec\u5bf9\u663e\u793a\u7684\u6548\u679c\u4e0d\u6ee1\u610f\uff0c\u6216\u8005\u60f3\u6dfb\u52a0\u67d0\u4e9b\u65b0\u7684\u663e\u793a\u9879\uff0c\u4e5f\u53ef\u4ee5\u5728Rviz\u8fd9\u4e2a\u5e73\u53f0\u4e2d\uff0c\u5f00\u53d1\u66f4\u591a\u53ef\u89c6\u5316\u6548\u679c\uff0c\u65b9\u4fbf\u6253\u9020\u6211\u4eec\u81ea\u5df1\u7684\u4e0a\u4f4d\u673a\u3002<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Rviz\u662f\u4e00\u6b3e<strong>\u4e09\u7ef4\u53ef\u89c6\u5316<\/strong>\u5de5\u5177\uff0c\u53ef\u4ee5\u5f88\u597d\u5730\u517c\u5bb9\u57fa\u4e8eROS\u8f6f\u4ef6\u6846\u67b6\u7684\u673a\u5668\u4eba\u5e73\u53f0\u3002<\/summary>\n<p class=\"wp-block-paragraph\">\u5728rviz\u4e2d\uff0c\u53ef\u4ee5\u4f7f\u7528\u53ef\u6269\u5c55\u6807\u8bb0\u8bed\u8a00XML\u5bf9\u673a\u5668\u4eba\u3001\u5468\u56f4\u7269\u4f53\u7b49\u4efb\u4f55\u5b9e\u7269\u8fdb\u884c\u5c3a\u5bf8\u3001\u8d28\u91cf\u3001\u4f4d\u7f6e\u3001\u6750\u8d28\u3001\u5173\u8282\u7b49\u5c5e\u6027\u7684\u63cf\u8ff0\uff0c\u5e76\u4e14\u5728\u754c\u9762\u4e2d\u5448\u73b0\u51fa\u6765<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u540c\u65f6\uff0crviz\u8fd8\u53ef\u4ee5\u901a\u8fc7\u56fe\u5f62\u5316\u7684\u65b9\u5f0f\uff0c\u5b9e\u65f6\u663e\u793a\u673a\u5668\u4eba\u4f20\u611f\u5668\u7684\u4fe1\u606f\u3001\u673a\u5668\u4eba\u7684\u8fd0\u52a8\u72b6\u6001\u3001\u5468\u56f4\u73af\u5883\u7684\u53d8\u5316\u7b49\u4fe1\u606f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u603b\u800c\u8a00\u4e4b\uff0crviz\u901a\u8fc7\u673a\u5668\u4eba\u6a21\u578b\u53c2\u6570\u3001\u673a\u5668\u4eba\u53d1\u5e03\u7684\u4f20\u611f\u4fe1\u606f\u7b49\u6570\u636e\uff0c\u4e3a\u7528\u6237\u8fdb\u884c\u6240\u6709\u53ef\u76d1\u6d4b\u4fe1\u606f\u7684\u56fe\u5f62\u5316\u663e\u793a\u3002\u7528\u6237\u548c\u5f00\u53d1\u8005\u4e5f\u53ef\u4ee5\u5728rviz\u7684\u63a7\u5236\u754c\u9762\u4e0b\uff0c\u901a\u8fc7\u6309\u94ae\u3001\u6ed1\u52a8\u6761\u3001\u6570\u503c\u7b49\u65b9\u5f0f\uff0c\u63a7\u5236\u673a\u5668\u4eba\u7684\u884c\u4e3a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<\/details>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ea\u8981\u6709\u6570\u636e\uff0c\u5b83\u5c31\u53ef\u4ee5\u53ef\u89c6\u5316\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7\u5728\u547d\u4ee4\u884c\u7a97\u53e3\u8f93\u5165\u4ee5\u4e0b\u6307\u4ee4\u53ef\u4ee5\u6253\u5f00rviz\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ros2 run rviz2 rviz2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6253\u5f00rviz\u540e\uff0c\u53ef\u4ee5\u5728\u5de6\u4fa7\u680f\u5185\u6dfb\u52a0\u90e8\u4ef6\uff08\u5b98\u65b9\u63d0\u4f9b\u4e86\u5305\u62ec\u96f7\u8fbe\u3001\u6444\u50cf\u673a\u7b49\u8bf8\u591a\u90e8\u4ef6\u6a21\u677f\uff09\uff0c\u5e76\u4e3a\u90a3\u4e2a\u90e8\u4ef6\u8bbe\u7f6e\u8ba2\u9605\u7684\u8bdd\u9898\uff0c\u8fdb\u884c\u53ef\u89c6\u5316\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u662f\u4e00\u4e2a\u793a\u4f8b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u5b9a\u4e49\u4e00\u4e2a\u6444\u50cf\u673a\u4eff\u771f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\"?&gt;\n&lt;robot xmlns:xacro=\"http:\/\/www.ros.org\/wiki\/xacro\" name=\"camera\"&gt;\n&lt;!----&gt;\n    &lt;xacro:macro name=\"usb_camera\" params=\"prefix:=camera\"&gt;\n        &lt;!-- Create laser reference frame --&gt;\n        &lt;link name=\"${prefix}_link\"&gt; &lt;!--\u76f8\u673alink--&gt;\n            &lt;inertial&gt;\n                &lt;mass value=\"0.1\" \/&gt;\n                &lt;origin xyz=\"0 0 0\" \/&gt;\n                &lt;inertia ixx=\"0.01\" ixy=\"0.0\" ixz=\"0.0\"\n                         iyy=\"0.01\" iyz=\"0.0\"\n                         izz=\"0.01\" \/&gt;\n            &lt;\/inertial&gt;\n\n            &lt;visual&gt;\n                &lt;origin xyz=\" 0 0 0 \" rpy=\"0 0 0\" \/&gt;\n                &lt;geometry&gt;\n                    &lt;box size=\"0.01 0.04 0.04\" \/&gt; &lt;!--box\u662f\u4e00\u4e2a\u7acb\u65b9\u4f53\uff0c\u540e\u9762\u53c2\u6570\u662f\u5c3a\u5bf8--&gt;\n                &lt;\/geometry&gt;\n                &lt;material name=\"black\"\/&gt; &lt;!--\u989c\u8272\u4e3a\u9ed1\u8272--&gt;\n            &lt;\/visual&gt;\n\n            &lt;collision&gt;\n                &lt;origin xyz=\"0.0 0.0 0.0\" rpy=\"0 0 0\" \/&gt;\n                &lt;geometry&gt;\n                    &lt;box size=\"0.01 0.04 0.04\" \/&gt;\n                &lt;\/geometry&gt;\n            &lt;\/collision&gt;\n        &lt;\/link&gt;\n        &lt;gazebo reference=\"${prefix}_link\"&gt; &lt;!--\u8c03\u7528gazebo\u76f8\u673a\u6e32\u67d3\u63d2\u4ef6\u7684\u90e8\u5206--&gt;\n            &lt;material&gt;Gazebo\/Black&lt;\/material&gt;\n        &lt;\/gazebo&gt;\n\n        &lt;gazebo reference=\"${prefix}_link\"&gt;\n            &lt;sensor type=\"camera\" name=\"camera_node\"&gt;\n                &lt;update_rate&gt;30.0&lt;\/update_rate&gt; &lt;!--\u5e27\u7387--&gt;\n                &lt;camera name=\"head\"&gt;\n                    &lt;horizontal_fov&gt;1.3962634&lt;\/horizontal_fov&gt; &lt;!--\u53ef\u89c6\u89d2\u5ea6--&gt;\n                    &lt;image&gt;\n                        &lt;width&gt;1280&lt;\/width&gt; &lt;!--\u5206\u8fa8\u7387--&gt;\n                        &lt;height&gt;720&lt;\/height&gt;\n                        &lt;format&gt;R8G8B8&lt;\/format&gt; &lt;!--\u7f16\u7801\u683c\u5f0f--&gt;\n                    &lt;\/image&gt;\n                    &lt;clip&gt;\n                        &lt;near&gt;0.02&lt;\/near&gt; &lt;!--\u53ef\u4ee5\u770b\u5230\u7684\u6700\u8fd1\u8ddd\u79bb--&gt;\n                        &lt;far&gt;300&lt;\/far&gt; &lt;!--\u6700\u8fdc\u8ddd\u79bb--&gt;\n                    &lt;\/clip&gt;\n                    &lt;noise&gt; &lt;!--\u6a21\u4eff\u771f\u5b9e\u4f20\u611f\u5668\u7684\u566a\u58f0--&gt;\n                        &lt;type&gt;gaussian&lt;\/type&gt;\n                        &lt;mean&gt;0.0&lt;\/mean&gt;\n                        &lt;stddev&gt;0.007&lt;\/stddev&gt;\n                    &lt;\/noise&gt;\n                &lt;\/camera&gt;\n                &lt;plugin name=\"gazebo_camera\" filename=\"libgazebo_ros_camera.so\"&gt; \n                    &lt;!--\u8c03\u7528gazebo\u4e2d\u7684\u63d2\u4ef6\u5b9e\u73b0\u76f8\u673a\u529f\u80fd--&gt;\n\t\t\t\t    &lt;ros&gt;\n\t\t\t\t        &lt;!-- &lt;namespace&gt;stereo&lt;\/namespace&gt; --&gt;\n\t\t\t\t        &lt;remapping&gt;~\/image_raw:=image_raw&lt;\/remapping&gt; \n                                            &lt;!--\u901a\u8fc7\u8bdd\u9898\u53d1\u5e03\u6570\u636e--&gt;\n\t\t\t\t        &lt;remapping&gt;~\/camera_info:=camera_info&lt;\/remapping&gt;\n\t\t\t\t    &lt;\/ros&gt;\n\t\t\t\t    &lt;camera_name&gt;${prefix}&lt;\/camera_name&gt; &lt;!--\u76f8\u673a\u540d\u5b57--&gt;\n\t\t\t\t    &lt;frame_name&gt;${prefix}_link&lt;\/frame_name&gt; \n                                        &lt;!--\u5750\u6807\u7cfb\uff0c\u4e0e\u8fde\u6746\u540d\u5b57\u4e00\u6837--&gt;\n\t\t\t\t    &lt;hack_baseline&gt;0.2&lt;\/hack_baseline&gt;\n                &lt;\/plugin&gt;\n            &lt;\/sensor&gt;\n        &lt;\/gazebo&gt;\n\n    &lt;\/xacro:macro&gt;\n&lt;\/robot&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8be5\u6587\u4ef6\u5728\u4e0b\u9762\u7684\u603b\u6587\u4ef6\u91cc\u88ab\u8c03\u7528\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\"?&gt;\n&lt;robot name=\"mbot\" xmlns:xacro=\"http:\/\/www.ros.org\/wiki\/xacro\"&gt;\n&lt;!----&gt;\n\n    &lt;xacro:include filename=\"$(find learning_gazebo)\/urdf\/mbot_base_gazebo.xacro\" \/&gt;\n    &lt;!--\u5f15\u7528\u673a\u5668\u4eba\u6a21\u578b\u6587\u4ef6--&gt;\n    &lt;xacro:include filename=\"$(find learning_gazebo)\/urdf\/sensors\/camera_gazebo.xacro\" \/&gt;\n    &lt;!--\u5f15\u7528\u76f8\u673a\u6a21\u578b\u6587\u4ef6--&gt;\n\n    &lt;!--\u4e09\u4e2a\u5e38\u91cf\u8868\u793a\u76f8\u673a\u4e0e\u673a\u5668\u4eba\u5e95\u76d8\u7684\u5173\u7cfb--&gt;\n    &lt;xacro:property name=\"camera_offset_x\" value=\"0.17\" \/&gt; \n    &lt;xacro:property name=\"camera_offset_y\" value=\"0\" \/&gt;\n    &lt;xacro:property name=\"camera_offset_z\" value=\"0.10\" \/&gt;\n\n    &lt;!-- Camera --&gt;\n    &lt;joint name=\"camera_joint\" type=\"fixed\"&gt; &lt;!--\u8fde\u63a5\u76f8\u673a\u548c\u5e95\u76d8\u7684joint--&gt;\n        &lt;origin xyz=\"${camera_offset_x} ${camera_offset_y} ${camera_offset_z}\" rpy=\"0 0 0\" \/&gt;\n        &lt;parent link=\"base_link\"\/&gt;\n        &lt;child link=\"camera_link\"\/&gt;\n    &lt;\/joint&gt;\n\n    &lt;xacro:usb_camera prefix=\"camera\"\/&gt; &lt;!--\u8c03\u7528\u76f8\u673a\u5b8f\u5b9a\u4e49--&gt;\n\n    &lt;xacro:mbot_base_gazebo\/&gt; &lt;!--\u8c03\u7528\u5e95\u76d8\u5b8f\u5b9a\u4e49--&gt;\n\n&lt;\/robot&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528\u4e0a\u4e00\u671f\u7684\u4e24\u6761\u6307\u4ee4\u542f\u52a8\u4eff\u771f\u548c\u5c0f\u8f66\u63a7\u5236\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ros2 launch learning_gazebo load_urdf_into_gazebo.launch.py\nros2 run teleop_twist_keyboard teleop_twist_keyboard <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u542f\u52a8rviz\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ros2 run rviz2 rviz2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u5230rviz\u5de6\u4fa7\u680fadd\u4e00\u4e2a\u65b0\u7684\u90e8\u4ef6\u201cImage\u201d\uff0c\u5e76\u53cc\u51fb\u5176topic\u503c\u8bbe\u7f6e\u4e3a\u201c\/camera\/image_raw\u201d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u65f6\u5019\u5c31\u80fd\u5728rviz\u91cc\u770b\u5230\u5c0f\u8f66\u6444\u50cf\u5934\u770b\u5230\u7684\u4e1c\u897f\u4e86\u3002\u540c\u65f6\uff0c\u901a\u8fc7\u6309\u952e\u63a7\u5236\u5c0f\u8f66\u79fb\u52a8\uff0c\u53ef\u4ee5\u770b\u5230\u56fe\u50cf\u4e5f\u4f1a\u8ddf\u968f\u53d8\u6362\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fdb\u4e00\u6b65\uff0c\u8fd8\u53ef\u4ee5\u8fdb\u884c\u4e09\u7ef4\u76f8\u673a\u4eff\u771f\u4e0e\u53ef\u89c6\u5316\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e09\u7ef4\u76f8\u673a\u4f7f\u7528\u7684Gazebo\u63d2\u4ef6\u4e5f\u662flibgazebo_ros_camera.so\uff0c\u914d\u7f6e\u7684xacro\u6587\u4ef6\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;gazebo reference=\"${prefix}_link\">\n    &lt;sensor type=\"depth\" name=\"${prefix}\"> &lt;!--\u76f8\u673a\u7c7b\u578b\u662f\u201cdepth\u201d,\u4e00\u4e2a\u6df1\u5ea6\u76f8\u673a-->\n        &lt;always_on>true&lt;\/always_on>\n        &lt;update_rate>15.0&lt;\/update_rate> &lt;!--\u66f4\u65b0\u9891\u7387\uff08\u8d6b\u5179\uff09\uff0c\u5927\u90e8\u5206\u8bbe\u7f6e\u548c\u666e\u901a\u76f8\u673a\u4e00\u6837-->\n        &lt;pose>0 0 0 0 0 0&lt;\/pose>\n        &lt;camera name=\"kinect\">\n            &lt;horizontal_fov>${60.0*M_PI\/180.0}&lt;\/horizontal_fov>\n            &lt;image>\n                &lt;format>R8G8B8&lt;\/format>\n                &lt;width>640&lt;\/width>\n                &lt;height>480&lt;\/height>\n            &lt;\/image>\n            &lt;clip>\n                &lt;near>0.05&lt;\/near>\n                &lt;far>8.0&lt;\/far>\n            &lt;\/clip>\n        &lt;\/camera>\n        &lt;plugin name=\"${prefix}_controller\" filename=\"libgazebo_ros_camera.so\">\n            &lt;ros>\n                &lt;!-- &lt;namespace>${prefix}&lt;\/namespace> --> &lt;!--\u4f20\u8f93\u5404\u79cd\u6570\u636e\u7684\u8bdd\u9898\u53ca\u5176\u91cd\u5b9a\u5411-->\n                &lt;remapping>${prefix}\/image_raw:=rgb\/image_raw&lt;\/remapping> &lt;!--\u5f69\u8272\u56fe\u50cf\u8bdd\u9898-->\n                &lt;remapping>${prefix}\/image_depth:=depth\/image_raw&lt;\/remapping> &lt;!--\u6df1\u5ea6\u8bdd\u9898-->\n                &lt;remapping>${prefix}\/camera_info:=rgb\/camera_info&lt;\/remapping>\n                &lt;remapping>${prefix}\/camera_info_depth:=depth\/camera_info&lt;\/remapping>\n                &lt;remapping>${prefix}\/points:=depth\/points&lt;\/remapping>\n            &lt;\/ros>\n            &lt;camera_name>${prefix}&lt;\/camera_name>\n            &lt;frame_name>${prefix}_frame_optical&lt;\/frame_name> &lt;!--kinect\u672c\u8eab\u5750\u6807\u7cfb\u4f5c\u53c2\u8003\u7cfb-->\n            &lt;hack_baseline>0.07&lt;\/hack_baseline>\n            &lt;min_depth>0.001&lt;\/min_depth>\n            &lt;max_depth>300.0&lt;\/max_depth>\n        &lt;\/plugin>\n    &lt;\/sensor>\n&lt;\/gazebo><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u5b83\u7684axcro\u6587\u4ef6\u4e5f\u57fa\u672c\u548c\u666e\u901a\u76f8\u673a\u6ca1\u4ec0\u4e48\u533a\u522b\uff0c\u4fee\u6539\u4e00\u4e0b\u914d\u7f6e\u6587\u4ef6\u4e3a\u65b0\u6587\u4ef6\u548c\u4e00\u4e9b\u8bbe\u7f6e\u53c2\u6570\u5373\u53ef\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\"?>\n&lt;robot name=\"mbot\" xmlns:xacro=\"http:\/\/www.ros.org\/wiki\/xacro\">\n\n    &lt;xacro:include filename=\"$(find learning_gazebo)\/urdf\/mbot_base_gazebo.xacro\" \/>\n    &lt;xacro:include filename=\"$(find learning_gazebo)\/urdf\/sensors\/kinect_gazebo.xacro\" \/>\n    &lt;!--kinect-->\n\n    &lt;xacro:property name=\"kinect_offset_x\" value=\"0.15\" \/>\n    &lt;xacro:property name=\"kinect_offset_y\" value=\"0\" \/>\n    &lt;xacro:property name=\"kinect_offset_z\" value=\"0.11\" \/>\n\n    &lt;!-- kinect -->\n    &lt;joint name=\"kinect_joint\" type=\"fixed\"> &lt;!--\u5b89\u88c5kinect\u7684joint-->\n        &lt;origin xyz=\"${kinect_offset_x} ${kinect_offset_y} ${kinect_offset_z}\" rpy=\"0 0 0\" \/>\n        &lt;parent link=\"base_link\"\/>\n        &lt;child link=\"kinect_link\"\/>\n    &lt;\/joint>\n\n    &lt;xacro:kinect_camera prefix=\"kinect\"\/>\n\n    &lt;xacro:mbot_base_gazebo\/> &lt;!--\u4e24\u4e2a\u5b8f\u5b9a\u4e49-->\n\n&lt;\/robot>\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u9700\u8981\u4f7f\u7528\u70b9\u4e91\u6570\u636e\u53ef\u89c6\u5316\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u7528\u4e4b\u524d\u540c\u6837\u7684\u547d\u4ee4\u6253\u5f00rviz\uff0c\u6b64\u5904\u4e0d\u518d\u91cd\u590d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u540c\u6837\u7684\u6d41\u7a0b\uff0c\u70b9\u51fbAdd\uff0c\u6dfb\u52a0PointCloud2\uff0c\u8bbe\u7f6e\u8ba2\u9605\u7684\u70b9\u4e91\u8bdd\u9898\uff0c\u8fd8\u8981\u914d\u7f6eRviz\u7684\u53c2\u8003\u7cfb\u662fodom\uff0c\u5c31\u53ef\u4ee5\u770b\u5230\u70b9\u4e91\u6570\u636e\u5566\uff0c\u6bcf\u4e00\u4e2a\u70b9\u90fd\u662f\u7531xyz\u4f4d\u7f6e\u548crgb\u989c\u8272\u7ec4\u6210\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9664\u4e86\u6444\u50cf\u5934\u548c\u4e09\u7ef4\u76f8\u673a\uff0c\u6fc0\u5149\u96f7\u8fbe\u4e5f\u662f\u5f88\u591a\u79fb\u52a8\u673a\u5668\u4eba\u5e38\u5907\u7684\u4f20\u611f\u5668\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u96f7\u8fbe\u4f7f\u7528\u7684Gazebo\u63d2\u4ef6\u662flibgazebo_ros_ray_sensor.so\uff0c\u914d\u7f6e\u65b9\u6cd5\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;gazebo reference=\"${prefix}_link\">\n    &lt;sensor type=\"ray\" name=\"rplidar\"> &lt;!--\u7c7b\u578b\u4e3a\u7ea2\u5916-->\n        &lt;update_rate>20&lt;\/update_rate> &lt;!--\u66f4\u65b0\u9891\u7387-->\n        &lt;ray>\n            &lt;scan>\n              &lt;horizontal>\n                &lt;samples>360&lt;\/samples> &lt;!--\u91c7\u96c6\u8303\u56f4\uff1a360\u5ea6--> \n                &lt;resolution>1&lt;\/resolution> &lt;!--\u6bcf\u4e00\u5ea6\u91c7\u96c6\u4e00\u6b21-->\n                &lt;min_angle>-3&lt;\/min_angle> &lt;!--\u6700\u5c0f\u89d2\u5ea6\uff08\u5f27\u5ea6\uff09-->\n                &lt;max_angle>3&lt;\/max_angle> &lt;!--\u6700\u5927\u89d2\u5ea6\uff08\u5f27\u5ea6\uff09-->\n              &lt;\/horizontal>\n            &lt;\/scan>\n            &lt;range>\n              &lt;min>0.10&lt;\/min> &lt;!--\u6700\u8fd1\u4e0e\u6700\u8fdc\u8ddd\u79bb-->\n              &lt;max>30.0&lt;\/max>\n              &lt;resolution>0.01&lt;\/resolution> &lt;!--\u5206\u8fa8\u7387\uff0c\u5355\u4f4d\u4e3a\u7c73-->\n            &lt;\/range>\n            &lt;noise>\n              &lt;type>gaussian&lt;\/type>\n              &lt;mean>0.0&lt;\/mean>\n              &lt;stddev>0.01&lt;\/stddev>\n            &lt;\/noise>\n        &lt;\/ray>\n        &lt;plugin name=\"gazebo_rplidar\" filename=\"libgazebo_ros_ray_sensor.so\">\n      &lt;ros>\n    &lt;namespace>\/&lt;\/namespace>\n    &lt;remapping>~\/out:=scan&lt;\/remapping> &lt;!--\u6570\u636e\u4f20\u8f93\u7684\u8bdd\u9898-->\n      &lt;\/ros>\n      &lt;output_type>sensor_msgs\/LaserScan&lt;\/output_type> &lt;!--\u6d88\u606f\u7c7b\u578b-->\n        &lt;\/plugin>\n    &lt;\/sensor>\n&lt;\/gazebo><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528\u4ee5\u4e0b\u6587\u4ef6\u5305\u542b\u5b83\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\"?>\n&lt;robot name=\"mbot\" xmlns:xacro=\"http:\/\/www.ros.org\/wiki\/xacro\">\n\n    &lt;xacro:include filename=\"$(find learning_gazebo)\/urdf\/mbot_base_gazebo.xacro\" \/>\n    &lt;xacro:include filename=\"$(find learning_gazebo)\/urdf\/sensors\/lidar_gazebo.xacro\" \/>\n\n    &lt;xacro:property name=\"lidar_offset_x\" value=\"0\" \/>\n    &lt;xacro:property name=\"lidar_offset_y\" value=\"0\" \/>\n    &lt;xacro:property name=\"lidar_offset_z\" value=\"0.105\" \/>\n\n    &lt;!-- lidar -->\n    &lt;joint name=\"lidar_joint\" type=\"fixed\">\n        &lt;origin xyz=\"${lidar_offset_x} ${lidar_offset_y} ${lidar_offset_z}\" rpy=\"0 0 0\" \/>\n        &lt;parent link=\"base_link\"\/>\n        &lt;child link=\"laser_link\"\/>\n    &lt;\/joint>\n\n    &lt;xacro:rplidar prefix=\"laser\"\/>\n\n    &lt;xacro:mbot_base_gazebo\/>\n\n&lt;\/robot>\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ros2 launch learning_gazebo load_mbot_laser_into_gazebo.launch.py<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u540c\u65f6\u6253\u5f00rviz\uff0c\u70b9\u51fbAdd\uff0c\u9009\u62e9Laserscan\uff0c\u7136\u540e\u914d\u7f6e\u8ba2\u9605\u7684\u8bdd\u9898\u540d\uff0crviz\u7684\u56fa\u5b9a\u5750\u6807\u7cfb\u4f9d\u7136\u662fodom\uff0c\u6b64\u65f6\u5c31\u53ef\u4ee5\u770b\u5230\u6fc0\u5149\u70b9\u5566\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rviz\u662f\u4e00\u6b3e\u673a\u5668\u4eba\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7684\u6570\u636e\u53ef\u89c6\u5316\u8f6f\u4ef6\uff0c\u7528\u4e8e\u53ef\u89c6\u5316\u673a\u5668\u4eba\u6a21\u578b\u3001\u4f20\u611f\u5668\u4fe1\u606f\u3001\u73af\u5883\u4fe1\u606f\u7b49\u7b49\u3002 Rviz\u7684\u6838 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-188","post","type-post","status-publish","format-standard","hentry","category-ros2"],"_links":{"self":[{"href":"https:\/\/374969782.xyz\/index.php\/wp-json\/wp\/v2\/posts\/188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/374969782.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/374969782.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/374969782.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/374969782.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=188"}],"version-history":[{"count":7,"href":"https:\/\/374969782.xyz\/index.php\/wp-json\/wp\/v2\/posts\/188\/revisions"}],"predecessor-version":[{"id":195,"href":"https:\/\/374969782.xyz\/index.php\/wp-json\/wp\/v2\/posts\/188\/revisions\/195"}],"wp:attachment":[{"href":"https:\/\/374969782.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/374969782.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/374969782.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}