{"id":45266,"date":"2019-01-10T16:10:00","date_gmt":"2019-01-10T23:10:00","guid":{"rendered":"https:\/\/www.realsenseai.com\/uncategorized-cn\/how-to-multiple-camera-setup-with-ros-2\/"},"modified":"2019-01-10T16:10:00","modified_gmt":"2019-01-10T23:10:00","slug":"how-to-multiple-camera-setup-with-ros-2","status":"publish","type":"post","link":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/","title":{"rendered":"How-to: Multiple camera setup with ROS"},"content":{"rendered":"\n<div class=\"gb-element-92e51574\">\n<p>RealSense\u2122 D400 series depth cameras use stereo-based algorithms to calculate depth. One key advantage of stereo depth systems is the ability to use as many cameras as you want to within a specific scene. In this post, we are going to cover creating a unified point cloud with multiple cameras using ROS.<\/p>\n\n\n\n<p>For the initial demonstration, we set up two RealSense\u2122 D435 cameras looking at the same area from two different points of view.<\/p>\n<\/div>\n\n\n\n<div class=\"gb-element-a341adab\">\n<figure class=\"wp-block-image size-large alignnone size-full wp-image-25492\"><img decoding=\"async\" src=\"https:\/\/realsenseai.com\/wp-content\/uploads\/2019\/02\/2_cams_setup_annotated_resize-768x576-1.jpg\" alt=\"Agility Robotics is the world\u2019s leading manufacturer of mobile manipulation robots.\"\/><figcaption class=\"wp-element-caption\">Agility Robotics is the world\u2019s leading manufacturer of mobile manipulation robots.<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"gb-element-bbfd9f22\">\n<p>The cameras themselves have no data regarding their relative position. In Step 3, we\u2019ll use a 3rd party program to set this up.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 0: Ensure you have your environment set up.<\/h3>\n\n\n\n<p>Install the RealSense SDK 2.0 (<em>librealsense<\/em>) for Linux* following the instructions <a href=\"https:\/\/github.com\/IntelRealSense\/librealsense\/blob\/master\/doc\/installation.md\">here<\/a>.<br>Install the ROS (not ROS 2) wrapper for <em>librealsense<\/em> from <a href=\"https:\/\/github.com\/intel-ros\/realsense\/releases\">here<\/a>. It is recommended to follow this set of <a href=\"https:\/\/github.com\/intel-ros\/realsense\/blob\/development\/.travis.yml\">instructions<\/a> for the installation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Obtaining the camera serial numbers.<\/h3>\n\n\n\n<p>If you already know each camera\u2019s serial number you can skip this step.<\/p>\n\n\n\n<p>Otherwise,<\/p>\n\n\n\n<p>1. Open terminal and change directory to <em>catkin_ws<\/em><\/p>\n\n\n\n<p>2. Make sure only <em>cam_1<\/em> is connected and start the <em>realsense2_camera<\/em> wrapper:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">roslaunch realsense2_camera rs_camera.launch<\/pre>\n\n\n\n<p>Note the serial number it finds in the following log line:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[ INFO] [1538983051.813336379]: setupDevice...\n \n[ INFO] [1538983051.813399792]: JSON file is not provided\n \n[ INFO] [1538983051.813427820]: ROS Node Namespace: camera\n \n[ INFO] [1538983051.813442869]: Device Name: RealSense D435\n \n[ INFO] [1538983051.813605893]: Device Serial No: 728312070349\n \n[ INFO] [1538983051.813622583]: Device FW version: 05.10.03.00<\/pre>\n\n\n\n<p>The serial number in this case is <strong>728312070349<\/strong>.<br>Record this somewhere and terminate the node using CTRL+C.<br>Repeat the step with now only <em>cam_2<\/em> connected.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Start both cameras.<\/h3>\n\n\n\n<p>Open 2 terminal windows (and change directory to <em>catkin_ws<\/em> directory).<\/p>\n\n\n\n<p>In terminal 1 enter the following (don\u2019t forget to replace <strong>728312070349<\/strong> with the <em>cam_1<\/em> serial number you recorded in Step 1):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">roslaunch realsense2_camera rs_camera.launch camera:=cam_1 serial_no:=728312070349 filters:=spatial,temporal,pointcloud_<\/pre>\n\n\n\n<p>In terminal 2 enter the following (again, fill in the correct serial number for <em>cam_2<\/em>):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">roslaunch realsense2_camera rs_camera.launch camera:=cam_2 serial_no:=&lt;serial_number_2&gt; filters:=spatial,temporal,pointcloud_<\/pre>\n\n\n\n<p>We now have two cameras running with their own point clouds.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Publish spatial connection between cameras.<\/h3>\n\n\n\n<p>We estimate the translation of <em>cam_2<\/em> from <em>cam_1<\/em> at 70(cm) on X-axis and 60(cm) on Y-axis. We also estimate the yaw angle of <em>cam_2<\/em> relative to <em>cam_1<\/em> as 90(degrees) clockwise \u2013 this based on our knowledge of the setup in the image above. To simplify things, the coordinate system of <em>cam_1<\/em> will serves as the coordinate system for the whole scene. These are the initial parameters we set for the transformation between the 2 cameras.<\/p>\n\n\n\n<p>The following script calculates the transformation between the 2 cameras from the given parameters and publish the frame transformation.<\/p>\n\n\n\n<p>Open a third terminal window \u2013 terminal 3 \u2013 and enter the following:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cd catkin_ws\npython src\/realsense\/realsense2_camera\/scripts\/set_cams_transforms.py cam_1_link cam_2_link 0.7 0.6 0 -90 0 0<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Visualizing the point clouds and fine-tune the camera calibration.<\/h3>\n\n\n\n<p>Open a fourth terminal \u2013 terminal 4 \u2013 and run RViz. RViz is a 3D visualizer for displaying sensor data and state information from ROS:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rviz<\/pre>\n\n\n\n<p>In the RViz window, do the following:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">1. Set \u201cFixed Frame\u201d to \u201ccam_1_link\u201d\n2. Add -&gt; By topic -&gt; \/cam_1\/depth\/color\/points\/PointCloud2\n3. Add -&gt; By topic -&gt; \/cam_2\/depth\/color\/points\/PointCloud2<\/pre>\n\n\n\n<p>Now both point clouds are shown together. If you looked closely it\u2019s easy to see that the clouds are not exactly in position. Some features are duplicated. Now it\u2019s time for fine calibration.<\/p>\n\n\n\n<p>Switch to terminal 3, where <em>set_cams_transforms.py<\/em> is still running. Use it to fine-calibrate <em>cam_2<\/em> relative to <em>cam_1<\/em>. The instructions are printed by the program:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Using default file \/home\/doronhi\/catkin_ws\/src\/realsense\/realsense2_camera\/scripts\/_set_cams_info_file.txt\n \nUse given initial values.\n \nPress the following keys to change mode: x, y, z, (a)zimuth, (p)itch, (r)oll\n \nFor each mode, press 6 to increase by step and 4 to decrease\n \nPress + to multiply step by 2 or - to divide\n \nPress Q to quit<\/pre>\n\n\n\n<p>Below that a constantly updating line is printed, showing the current mode, value and step size after every key stroke.<\/p>\n\n\n\n<p>Notice, that the program prints the path of the current configuration file. It saves its last configuration automatically, all the time, to be used on the next run. If you have been running the program for a while, and want to back up the configuration file, just copy it aside. Read the <em>rviz<\/em> manual, by running without any parameters to learn more about changing the configuration filename.<\/p>\n\n\n\n<p>There is no question that it would be much better to find the precise matrix between the cameras automatically. In the meanwhile, after a lot of fiddling around, I was relatively satisfied with the following numbers: Parameter Value x 0.75 y 0.575 z 0 azimuth -91.25 pitch 0.75 roll 0<\/p>\n\n\n\n<p>The result is a more complete cover of the scene:<\/p>\n<\/div>\n\n\n\n<div class=\"gb-element-de939f13\">\n<figure class=\"wp-block-image size-large alignnone size-full wp-image-25492\"><img decoding=\"async\" src=\"https:\/\/realsenseai.com\/wp-content\/uploads\/2019\/02\/2_cameras_cloud_screenshot.jpg\" alt=\"Agility Robotics is the world\u2019s leading manufacturer of mobile manipulation robots.\"\/><figcaption class=\"wp-element-caption\">Agility Robotics is the world\u2019s leading manufacturer of mobile manipulation robots.<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"gb-element-0967e606\">\n<figure class=\"wp-block-image size-large alignnone size-full wp-image-25492\"><img decoding=\"async\" src=\"https:\/\/realsenseai.com\/wp-content\/uploads\/2019\/01\/2_cams_cover-1024x713-1.gif\" alt=\"Agility Robotics is the world\u2019s leading manufacturer of mobile manipulation robots.\"\/><figcaption class=\"wp-element-caption\">Agility Robotics is the world\u2019s leading manufacturer of mobile manipulation robots.<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"gb-element-6c2a496d\">\n<h2 class=\"wp-block-heading\" id=\"h-adding-more-cameras\">Adding more cameras<\/h2>\n\n\n\n<p>There are a couple of reasons why the number of cameras connected to a single computer is limited: CPU usage, USB bandwidth, power supply and also, the length of the USB cable. These are all covered in length in the <a href=\"https:\/\/dev.realsenseai.com\/docs\/multiple-depth-cameras-configuration\" target=\"_blank\" rel=\"noreferrer noopener\">Multiple camera configuration white paper<\/a>.<br>In order to demonstrate the scenario we created the following array:<\/p>\n<\/div>\n\n\n\n<div class=\"gb-element-e2dc1767\">\n<figure class=\"wp-block-image size-large alignnone size-full wp-image-25492\"><img decoding=\"async\" src=\"https:\/\/realsenseai.com\/wp-content\/uploads\/2019\/02\/scematics_multiple.jpg\" alt=\"Agility Robotics is the world\u2019s leading manufacturer of mobile manipulation robots.\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"gb-element-973d70d6\">\n<figure class=\"wp-block-image size-large alignnone size-full wp-image-25492\"><img decoding=\"async\" src=\"https:\/\/realsenseai.com\/wp-content\/uploads\/2019\/02\/2_cams_setup_annotated_resize-768x576-1.jpg\" alt=\"Agility Robotics is the world\u2019s leading manufacturer of mobile manipulation robots.\"\/><figcaption class=\"wp-element-caption\">Agility Robotics is the world\u2019s leading manufacturer of mobile manipulation robots.<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"gb-element-abd1636f\">\n<p>Both <em>cam_2<\/em> and <em>cam_3<\/em> are visible in <em>cam_1<\/em>\u2019s point cloud. That way, it\u2019s easier, though not trivial, to use <em>set_cams_transforms.py<\/em> to fix their location in <em>cam_1<\/em>\u2019s coordinate system.<\/p>\n\n\n\n<p>While using multiple computers we have to specifically set the roscore host. In this demo, the first command in each terminal is:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">export ROS_MASTER_URI=http:\/\/&lt;ros host ip address&gt;:&lt;port&gt;<\/pre>\n\n\n\n<p>In this demo, the <em>roscore<\/em>, <em>cam_1<\/em> and <em>cam_2<\/em> run on <em>perclnx319<\/em> and <em>cam_3 <\/em>is on <em>perclnx217<\/em>.<br>Also, in this demo all the terminals are being opened on roscore\u2019s computer, <em>perclnx319<\/em>.<br>The commands to run are as follows \u2013 but remember to replace the serial numbers with your own.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Terminal 1<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">roscore<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Terminal 2<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">export ROS_MASTER_URI=http:\/\/perclnx319:11311 roslaunch realsense2_camera rs_camera.launch camera:=cam_1 serial_no:=728312070349 filters:=spatial,temporal,pointcloud<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Terminal 3<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">export ROS_MASTER_URI=http:\/\/perclnx319:11311 roslaunch realsense2_camera rs_camera.launch camera:=cam_2 serial_no:=713612070696 filters:=spatial,temporal,pointcloud<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Terminal 4 \u2013 Used to operate the second machine, perclnx217 in our case<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">ssh perclnx217\n \n[Enter Pasword]\n \nexport ROS_MASTER_URI=http:\/\/perclnx319:11311 roslaunch realsense2_camera rs_camera.launch camera:=cam_3 serial_no:=725112060487 filters:=spatial,temporal,pointcloud<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Publish the spatial connection between cameras.<\/h4>\n\n\n\n<p><em>cam_1<\/em> is rotated about 30 degrees compared to the left side of the imaginary square created by the 3 cameras. This camera is our coordinate system.<br>We estimate the translation of <em>cam_2<\/em> from <em>cam_1<\/em> at 90(cm) on X-axis and 30(cm) on Y-axis. We also estimate the yaw angle of <em>cam_2<\/em> at 120(degrees) clockwise, compared to <em>cam_1<\/em>. These are the initial parameters we set for the transformation between the 2 cameras.<br>As for <em>cam_3<\/em>, we estimate the translation on X-axis at 160(cm) and on Y-axis at -20(cm). We estimate the yaw at 170(degrees) counter-clockwise.<br>The following script calculates the transformation from the given parameters and publish the frame transform.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Terminal 5<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">cd catkin_ws export ROS_MASTER_URI=http:\/\/perclnx319:11311 python src\/realsense\/realsense2_camera\/scripts\/set_cams_transforms.py cam_1_link cam_2_link 0.9 0.3 0 -120 0 0 --file \u2018_cams_set_info_1_to_2\u2019<\/pre>\n\n\n\n<p>Press Q to Quit.<\/p>\n\n\n\n<p>Now set transformation for <em>cam_3<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python src\/realsense\/realsense2_camera\/scripts\/set_cams_transforms.py cam_1_link cam_3_link 1.6 -0.2 0 170 0 0 --file \u2018_cams_set_info_1_to_3\u2019<\/pre>\n\n\n\n<p>Since <em>set_cams_transforms.py<\/em> is not a ROS-package and you can\u2019t run 2 nodes with the same name, we run one copy at a time.<\/p>\n\n\n\n<p>From now on, the last values for the relative transformations are saved in the specified files. If you want to modify <em>cam_2<\/em> extrinsics, type:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python src\/realsense\/realsense2_camera\/scripts\/set_cams_transforms.py cam_1_link cam_2_link --file \u2018_cams_set_info_1_to_2\u2019 To modify cam_3: python src\/realsense\/realsense2_camera\/scripts\/set_cams_transforms.py cam_1_link cam_3_link --file \u2018_cams_set_info_1_to_3\u2019<\/pre>\n\n\n\n<p><strong>Notice<\/strong>: Use 2 different file names for saving the results for two different sets of cameras.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Visualizing the point clouds and fine-tuning the camera calibration<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Terminal 6<\/h4>\n\n\n\n<p>Enter the following command: \u2018 rviz \u2018 In RViz, do the following:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">1. Set \u201cFixed Frame\u201d to \u201ccam_1_link\u201d\n2. Add -&gt; By topic -&gt; \/cam_1\/depth\/color\/points\/PointCloud2\n3. Add -&gt; By topic -&gt; \/cam_2\/depth\/color\/points\/PointCloud2\n4. Add -&gt; By topic -&gt; \/cam_3\/depth\/color\/points\/PointCloud2\n5. Add -&gt; By display type -&gt; TF\n6. In the \u201cDisplays\u201d window under TF &gt; Frames enable only cam_1_link, cam_2_link and cam_3_link. Just for clarity reasons.<\/pre>\n\n\n\n<p>Now three point clouds are shown together. It\u2019s easy to see that the clouds are not exactly in position. Some features are duplicated. Now it\u2019s time for fine calibration:<br>Switching to terminal 5, where <em>set_cams_transforms.py<\/em> is still running, we use it to fine calibrate <em>cam_2<\/em> and <em>cam_3<\/em> relative to <em>cam_1<\/em>.<br>The instruction are printed by the program:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Using file \/home\/doronhi\/catkin_ws\/_cams_set_info_1_to_3.txt read initial values from it.\n \nPress the following keys to change mode: x, y, z, (a)zimuth, (p)itch, (r)oll.\n \nFor each mode, press 6 to increase by step and 4 to decrease.\n \nPress + to multiply step by 2 or - to divide.\n \nPress Q to quit<\/pre>\n\n\n\n<p>Without an automatic calibration tool it can be quite challenging to tune the cameras. Here are a couple of tips for calibration:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Calibrate one camera at a time.<\/li>\n\n\n\n<li>Set cam_2 in the field view of cam_1. Keep in RViz display only the point cloud of cam_1 and the axis notation (TF) of cam_2. Now it\u2019s possible to watch the axis notation of cam_2 and change its x,y,z parameters until it\u2019s located right on top of the camera as seen in cam_1\u2019s point cloud. You can even try and put some distinct object close by and directly in line of sight of cam_2 and try to modify its orientation parameters to align the axis image so it will point to the object as seen in cam_1\u2019s point cloud.<\/li>\n\n\n\n<li>Now, display also the point cloud of cam_2. Put a board to be seen by both cameras. Modify cam_2\u2019s parameters to rotate the board until it is aligned parallel to the board as seen from cam_1, then translate it, rotate again and so on, iteratively, until they are exactly aligned. Use the board to understand what parameter to modify and your face for fine tuning.<\/li>\n\n\n\n<li>Repeat step 2 and 3 for cam_3 as well.<\/li>\n<\/ol>\n\n\n\n<p>Eventually, I was relatively satisfied with the following numbers.<\/p>\n\n\n\n<p>For <strong><em>cam_2<\/em><\/strong>: Parameter Value x 0.95 y 0.38125 z -0.015625 azimuth -104.25 pitch 0 roll -0.5<\/p>\n\n\n\n<p>for <strong><em>cam_3<\/em><\/strong>: Parameter Value x 1.5875 y -0.703125 z -0.05 azimuth 163 pitch 1 roll 1.25<\/p>\n\n\n\n<p>No doubt, a SLAM based solution is better then the manual labor I\u2019ve been through to get this calibration, both in time and results. Nevertheless, the final 3D-model I got looked like that:<\/p>\n\n\n\n<div class=\"gb-element-4fac6632\">\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/realsenseai.com\/wp-content\/uploads\/2019\/02\/multi_cams_3d.mp4\"><\/video><\/figure>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>RealSense\u2122 D400 series depth cameras use stereo-ba [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":42861,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"featured_image_focal_point":[],"inline_featured_image":false,"footnotes":""},"categories":[1206],"tags":[500,538,907],"capability_application":[],"industry":[],"class_list":["post-45266","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-whitepapers-cn","tag-robotics-2","tag-stereo-2","tag-stereoscopic-depth-cn"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.7 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How-to: Multiple camera setup with ROS - RealSense<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How-to: Multiple camera setup with ROS\" \/>\n<meta property=\"og:description\" content=\"RealSense\u2122 D400 series depth cameras use stereo-ba [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/\" \/>\n<meta property=\"og:site_name\" content=\"RealSense\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-10T23:10:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.realsenseai.com\/wp-content\/uploads\/2026\/01\/How-to-Multiple-camera-setup-with-ROS.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"jaymie.tan@freshwatercreative.ca\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"jaymie.tan@freshwatercreative.ca\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/\"},\"headline\":\"How-to: Multiple camera setup with ROS\",\"datePublished\":\"2019-01-10T23:10:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/\"},\"wordCount\":1395,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.realsenseai.com\/cn\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.realsenseai.com\/wp-content\/uploads\/2026\/01\/How-to-Multiple-camera-setup-with-ROS.jpg\",\"keywords\":[\"Robotics\",\"Stereo\",\"Stereoscopic depth\"],\"articleSection\":[\"\u767d\u76ae\u4e66\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/\",\"url\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/\",\"name\":\"How-to: Multiple camera setup with ROS - RealSense\",\"isPartOf\":{\"@id\":\"https:\/\/www.realsenseai.com\/cn\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.realsenseai.com\/wp-content\/uploads\/2026\/01\/How-to-Multiple-camera-setup-with-ROS.jpg\",\"datePublished\":\"2019-01-10T23:10:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#primaryimage\",\"url\":\"https:\/\/www.realsenseai.com\/wp-content\/uploads\/2026\/01\/How-to-Multiple-camera-setup-with-ROS.jpg\",\"contentUrl\":\"https:\/\/www.realsenseai.com\/wp-content\/uploads\/2026\/01\/How-to-Multiple-camera-setup-with-ROS.jpg\",\"width\":1024,\"height\":576},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"RealSense\",\"item\":\"https:\/\/www.realsenseai.com\/cn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u65b0\u95fb\u4e0e\u6d1e\u5bdf\",\"item\":\"https:\/\/www.realsenseai.com\/cn\/category\/news-insights-cn\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u767d\u76ae\u4e66\",\"item\":\"https:\/\/www.realsenseai.com\/cn\/category\/news-insights-cn\/whitepapers-cn\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"How-to: Multiple camera setup with ROS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.realsenseai.com\/cn\/#website\",\"url\":\"https:\/\/www.realsenseai.com\/cn\/\",\"name\":\"RealSense\",\"description\":\"Powering Physical AI with Advanced Vision and Perception\",\"publisher\":{\"@id\":\"https:\/\/www.realsenseai.com\/cn\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.realsenseai.com\/cn\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.realsenseai.com\/cn\/#organization\",\"name\":\"RealSense\",\"url\":\"https:\/\/www.realsenseai.com\/cn\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.realsenseai.com\/cn\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/realsenseai.com\/wp-content\/uploads\/2025\/07\/realsenseai_logo.jpeg\",\"contentUrl\":\"https:\/\/realsenseai.com\/wp-content\/uploads\/2025\/07\/realsenseai_logo.jpeg\",\"width\":200,\"height\":200,\"caption\":\"RealSense\"},\"image\":{\"@id\":\"https:\/\/www.realsenseai.com\/cn\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/linkedin.com\/company\/realsenseai\/\",\"https:\/\/www.youtube.com\/@IntelRealSense\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.realsenseai.com\/cn\/#\/schema\/person\/41f6ef6561b53e9f1630bdb32696053c\",\"name\":\"jaymie.tan@freshwatercreative.ca\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.realsenseai.com\/cn\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e2792e544c277e7af150f837b7dc6c0786155f67f34faf8431d3f0a3a573d34?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e2792e544c277e7af150f837b7dc6c0786155f67f34faf8431d3f0a3a573d34?s=96&d=mm&r=g\",\"caption\":\"jaymie.tan@freshwatercreative.ca\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How-to: Multiple camera setup with ROS - RealSense","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/","og_locale":"zh_CN","og_type":"article","og_title":"How-to: Multiple camera setup with ROS","og_description":"RealSense\u2122 D400 series depth cameras use stereo-ba [&hellip;]","og_url":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/","og_site_name":"RealSense","article_published_time":"2019-01-10T23:10:00+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/www.realsenseai.com\/wp-content\/uploads\/2026\/01\/How-to-Multiple-camera-setup-with-ROS.jpg","type":"image\/jpeg"}],"author":"jaymie.tan@freshwatercreative.ca","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"jaymie.tan@freshwatercreative.ca","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"9 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#article","isPartOf":{"@id":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/"},"headline":"How-to: Multiple camera setup with ROS","datePublished":"2019-01-10T23:10:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/"},"wordCount":1395,"commentCount":0,"publisher":{"@id":"https:\/\/www.realsenseai.com\/cn\/#organization"},"image":{"@id":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.realsenseai.com\/wp-content\/uploads\/2026\/01\/How-to-Multiple-camera-setup-with-ROS.jpg","keywords":["Robotics","Stereo","Stereoscopic depth"],"articleSection":["\u767d\u76ae\u4e66"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/","url":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/","name":"How-to: Multiple camera setup with ROS - RealSense","isPartOf":{"@id":"https:\/\/www.realsenseai.com\/cn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#primaryimage"},"image":{"@id":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.realsenseai.com\/wp-content\/uploads\/2026\/01\/How-to-Multiple-camera-setup-with-ROS.jpg","datePublished":"2019-01-10T23:10:00+00:00","breadcrumb":{"@id":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/"]}]},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#primaryimage","url":"https:\/\/www.realsenseai.com\/wp-content\/uploads\/2026\/01\/How-to-Multiple-camera-setup-with-ROS.jpg","contentUrl":"https:\/\/www.realsenseai.com\/wp-content\/uploads\/2026\/01\/How-to-Multiple-camera-setup-with-ROS.jpg","width":1024,"height":576},{"@type":"BreadcrumbList","@id":"https:\/\/www.realsenseai.com\/cn\/news-insights-cn\/whitepapers-cn\/how-to-multiple-camera-setup-with-ros-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"RealSense","item":"https:\/\/www.realsenseai.com\/cn\/"},{"@type":"ListItem","position":2,"name":"\u65b0\u95fb\u4e0e\u6d1e\u5bdf","item":"https:\/\/www.realsenseai.com\/cn\/category\/news-insights-cn\/"},{"@type":"ListItem","position":3,"name":"\u767d\u76ae\u4e66","item":"https:\/\/www.realsenseai.com\/cn\/category\/news-insights-cn\/whitepapers-cn\/"},{"@type":"ListItem","position":4,"name":"How-to: Multiple camera setup with ROS"}]},{"@type":"WebSite","@id":"https:\/\/www.realsenseai.com\/cn\/#website","url":"https:\/\/www.realsenseai.com\/cn\/","name":"RealSense","description":"Powering Physical AI with Advanced Vision and Perception","publisher":{"@id":"https:\/\/www.realsenseai.com\/cn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.realsenseai.com\/cn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":"Organization","@id":"https:\/\/www.realsenseai.com\/cn\/#organization","name":"RealSense","url":"https:\/\/www.realsenseai.com\/cn\/","logo":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.realsenseai.com\/cn\/#\/schema\/logo\/image\/","url":"https:\/\/realsenseai.com\/wp-content\/uploads\/2025\/07\/realsenseai_logo.jpeg","contentUrl":"https:\/\/realsenseai.com\/wp-content\/uploads\/2025\/07\/realsenseai_logo.jpeg","width":200,"height":200,"caption":"RealSense"},"image":{"@id":"https:\/\/www.realsenseai.com\/cn\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/linkedin.com\/company\/realsenseai\/","https:\/\/www.youtube.com\/@IntelRealSense"]},{"@type":"Person","@id":"https:\/\/www.realsenseai.com\/cn\/#\/schema\/person\/41f6ef6561b53e9f1630bdb32696053c","name":"jaymie.tan@freshwatercreative.ca","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.realsenseai.com\/cn\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e2792e544c277e7af150f837b7dc6c0786155f67f34faf8431d3f0a3a573d34?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e2792e544c277e7af150f837b7dc6c0786155f67f34faf8431d3f0a3a573d34?s=96&d=mm&r=g","caption":"jaymie.tan@freshwatercreative.ca"}}]}},"_links":{"self":[{"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/posts\/45266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/comments?post=45266"}],"version-history":[{"count":0,"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/posts\/45266\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/media\/42861"}],"wp:attachment":[{"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/media?parent=45266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/categories?post=45266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/tags?post=45266"},{"taxonomy":"capability_application","embeddable":true,"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/capability_application?post=45266"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.realsenseai.com\/cn\/wp-json\/wp\/v2\/industry?post=45266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}