{"id":1948,"date":"2025-06-27T10:13:16","date_gmt":"2025-06-27T10:13:16","guid":{"rendered":"https:\/\/learnbydoing.dev\/?p=1948"},"modified":"2026-01-10T22:41:33","modified_gmt":"2026-01-10T22:41:33","slug":"how-to-create-a-ros2-workspace","status":"publish","type":"post","link":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/","title":{"rendered":"How to create a ROS2 Workspace"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"1948\" class=\"elementor elementor-1948\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e28ab35 e-flex e-con-boxed e-con e-parent\" data-id=\"e28ab35\" data-element_type=\"container\" data-e-type=\"container\" id=\"content\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-62ab6e3 e-con-full e-flex e-con e-child\" data-id=\"62ab6e3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-62ab203 elementor-align-center elementor-widget elementor-widget-post-info\" data-id=\"62ab203\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"post-info.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-inline-items elementor-icon-list-items elementor-post-info\">\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-2c98363 elementor-inline-item\" itemprop=\"about\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-post-info__terms-list\">\n\t\t\t\t<span class=\"elementor-post-info__terms-list-item\">Linux<\/span>, <span class=\"elementor-post-info__terms-list-item\">ROS 2<\/span>, <span class=\"elementor-post-info__terms-list-item\">Tutoriales<\/span>\t\t\t\t<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0650e10 e-con-full e-flex e-con e-child\" data-id=\"0650e10\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ac19582 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"ac19582\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"75\" height=\"75\" viewbox=\"0 0 75 75\" fill=\"none\"><path d=\"M74.9999 75H13.1889V73.0002H71.5859L0.460938 1.87521L1.87515 0.460999L73.0001 71.586V13.1889H74.9999V75Z\" fill=\"white\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-47aa245d e-flex e-con-boxed e-con e-parent\" data-id=\"47aa245d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-206a001 elementor-widget elementor-widget-image\" data-id=\"206a001\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp\" class=\"attachment-full size-full wp-image-2096\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp 1920w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1-300x169.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1-1024x576.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1-768x432.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1-1536x864.webp 1536w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1-18x10.webp 18w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4bc31ca3 elementor-widget elementor-widget-text-editor\" data-id=\"4bc31ca3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"326\" data-end=\"589\">If you\u2019re getting started with <strong data-start=\"357\" data-end=\"366\">ROS 2<\/strong> on <strong data-start=\"370\" data-end=\"390\">Ubuntu 24.04 LTS<\/strong>, one of the very first things you\u2019ll need to do is create a <strong data-start=\"451\" data-end=\"464\">workspace<\/strong>. A workspace is simply a folder where you keep all your ROS 2 packages, build them, and manage your development environment.<\/p><p data-start=\"591\" data-end=\"743\">In this guide, we\u2019ll walk through \u2014 step by step \u2014 how to set up a clean, organized ROS 2 workspace using <strong data-start=\"697\" data-end=\"707\">colcon<\/strong>, the official build tool for ROS 2.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-12a4ca0 elementor-widget elementor-widget-text-editor\" data-id=\"12a4ca0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"1857\" data-end=\"1885\">\ud83d\udce6 Step 1: Create the Workspace Directory Structure<\/h3><p data-start=\"1588\" data-end=\"1640\">Let\u2019s create a directory to hold our ROS 2 projects.<\/p><p data-start=\"1642\" data-end=\"1664\">In your terminal, run:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0e21217 elementor-widget elementor-widget-code-highlight\" data-id=\"0e21217\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>mkdir -p ~\/ros2_ws\/src\r\n\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c983314 elementor-widget elementor-widget-text-editor\" data-id=\"c983314\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1702\" data-end=\"1724\">Here\u2019s what this does:<\/p><ul data-start=\"1725\" data-end=\"1980\"><li data-start=\"1725\" data-end=\"1795\"><p data-start=\"1727\" data-end=\"1795\"><code data-start=\"1727\" data-end=\"1737\">mkdir -p<\/code> creates the directory (and any necessary parent folders).<\/p><\/li><li data-start=\"1796\" data-end=\"1917\"><p data-start=\"1798\" data-end=\"1917\"><code data-start=\"1798\" data-end=\"1810\">~\/ros2_ws\/<\/code> is your workspace folder (you can name it differently if you want, but <code data-start=\"1882\" data-end=\"1891\">ros2_ws<\/code> is a popular convention).<\/p><\/li><li data-start=\"1918\" data-end=\"1980\"><p data-start=\"1920\" data-end=\"1980\"><code data-start=\"1920\" data-end=\"1926\">src\/<\/code> is a subfolder where all your ROS 2 packages will go.<\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e1ef5c9 elementor-widget elementor-widget-text-editor\" data-id=\"e1ef5c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"1857\" data-end=\"1885\">\ud83d\udd04 Step 2: Source the ROS 2 Environment<\/h3><p data-start=\"1922\" data-end=\"2017\">Before you can use ROS 2 tools like <code data-start=\"2208\" data-end=\"2214\">ros2<\/code> or <code data-start=\"2218\" data-end=\"2226\">colcon<\/code>, your terminal needs to know where to find them. This is done by <strong data-start=\"2292\" data-end=\"2327\">sourcing the ROS 2 setup script<\/strong>:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-84e7813 elementor-widget elementor-widget-code-highlight\" data-id=\"84e7813\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>source \/opt\/ros\/jazzy\/setup.bash\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b54ad66 elementor-widget elementor-widget-text-editor\" data-id=\"b54ad66\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>If you added this command to your <code data-start=\"2410\" data-end=\"2421\">~\/.bashrc<\/code> earlier, it will already run automatically in new terminals. But it\u2019s good practice to check before moving on.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c513be2 elementor-widget elementor-widget-text-editor\" data-id=\"c513be2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"1857\" data-end=\"1885\">\ud83d\udee0\ufe0f Step 3: Build the\u00a0 Workspace<\/h3><p data-start=\"2583\" data-end=\"2805\">Even though there are no packages yet, it\u2019s a good idea to build the workspace at this point. This verifies that your build system is working properly and sets up the necessary <code data-start=\"2760\" data-end=\"2768\">build\/<\/code>, <code data-start=\"2770\" data-end=\"2780\">install\/<\/code>, and <code data-start=\"2786\" data-end=\"2792\">log\/<\/code> directories.<\/p><p data-start=\"2807\" data-end=\"2849\">Move into your workspace\u2019s root directory:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-766ba3a elementor-widget elementor-widget-code-highlight\" data-id=\"766ba3a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>cd ~\/ros2_ws\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8cc3f14 elementor-widget elementor-widget-text-editor\" data-id=\"8cc3f14\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Then run:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0afbd41 elementor-widget elementor-widget-code-highlight\" data-id=\"0afbd41\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>colcon build\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d8bfec0 elementor-widget elementor-widget-text-editor\" data-id=\"d8bfec0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"2914\" data-end=\"2936\"><strong data-start=\"2914\" data-end=\"2936\">What happens here:<\/strong><\/p><ul data-start=\"2937\" data-end=\"3346\"><li data-start=\"2937\" data-end=\"3005\"><p data-start=\"2939\" data-end=\"3005\"><code data-start=\"2939\" data-end=\"2947\">colcon<\/code> looks inside the <code data-start=\"2965\" data-end=\"2971\">src\/<\/code> folder for any packages to build.<\/p><\/li><li data-start=\"3006\" data-end=\"3127\"><p data-start=\"3008\" data-end=\"3127\">Since there aren\u2019t any yet, it\u2019ll display a message like \u201cNo packages found\u201d \u2014 which is exactly what we expect for now.<\/p><\/li><li data-start=\"3128\" data-end=\"3346\"><p data-start=\"3130\" data-end=\"3173\">It still creates the necessary directories:<\/p><ul data-start=\"3176\" data-end=\"3346\"><li data-start=\"3176\" data-end=\"3215\"><p data-start=\"3178\" data-end=\"3215\"><code data-start=\"3178\" data-end=\"3186\">build\/<\/code> \u2014 for temporary build files.<\/p><\/li><li data-start=\"3218\" data-end=\"3285\"><p data-start=\"3220\" data-end=\"3285\"><code data-start=\"3220\" data-end=\"3230\">install\/<\/code> \u2014 for compiled packages and environment setup scripts.<\/p><\/li><li data-start=\"3288\" data-end=\"3346\"><p data-start=\"3290\" data-end=\"3346\"><code data-start=\"3290\" data-end=\"3296\">log\/<\/code> \u2014 for logs generated during builds and execution.<\/p><\/li><\/ul><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-75809ca elementor-widget elementor-widget-text-editor\" data-id=\"75809ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"1857\" data-end=\"1885\">\u2699\ufe0f Step 4: Source Your Workspace\u2019s Environment<\/h3><p data-start=\"3404\" data-end=\"3556\">After each build, you need to <strong data-start=\"3434\" data-end=\"3480\">source your workspace\u2019s local setup script<\/strong> so that your terminal recognizes the packages you\u2019ve built (or will build).<\/p><p data-start=\"3558\" data-end=\"3562\">Run:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cedd50c elementor-widget elementor-widget-code-highlight\" data-id=\"cedd50c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>source ~\/ros2_ws\/install\/setup.bash\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aa0ef6d elementor-widget elementor-widget-text-editor\" data-id=\"aa0ef6d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong data-start=\"3613\" data-end=\"3634\">Why this matters:<\/strong><br data-start=\"3634\" data-end=\"3637\" \/>ROS 2 allows multiple workspaces to exist on your system, and each workspace can have its own packages and dependencies. Sourcing the <code data-start=\"3771\" data-end=\"3791\">install\/setup.bash<\/code> from your workspace tells ROS 2 to prioritize the packages in this workspace when running commands.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3937852 elementor-widget elementor-widget-text-editor\" data-id=\"3937852\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"1857\" data-end=\"1885\">\u2705 Step 5: Check That Everything Works<\/h3><p data-start=\"4240\" data-end=\"4287\">To make sure your workspace is properly set up:<br \/><br \/><\/p><ul><li data-start=\"4292\" data-end=\"4336\">Ensure you\u2019re in the root of your workspace:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-087b401 elementor-widget elementor-widget-code-highlight\" data-id=\"087b401\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>cd ~\/ros2_ws\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a1c2d11 elementor-widget elementor-widget-text-editor\" data-id=\"a1c2d11\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li data-start=\"4292\" data-end=\"4336\">Run<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-032b1ce elementor-widget elementor-widget-code-highlight\" data-id=\"032b1ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>colcon list\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7565914 elementor-widget elementor-widget-text-editor\" data-id=\"7565914\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Since there are no packages yet, it won\u2019t list anything \u2014 and that\u2019s fine. No errors means your workspace is set up correctly.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bfc12e8 elementor-widget elementor-widget-text-editor\" data-id=\"bfc12e8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"4951\" data-end=\"4991\">\ud83d\udcdd Full Setup Script in One Go<\/h3><p data-start=\"4993\" data-end=\"5112\">If you want to automate this process next time, here\u2019s the entire setup sequence you can copy-paste into your terminal:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3e0da34 elementor-widget elementor-widget-code-highlight\" data-id=\"3e0da34\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp># Create the workspace directory\r\nmkdir -p ~\/ros2_ws\/src\r\ncd ~\/ros2_ws\r\n\r\n# Source ROS 2 environment\r\necho \"source \/opt\/ros\/jazzy\/setup.bash\" >> ~\/.bashrc\r\nsource ~\/.bashrc\r\n\r\n# Build the (empty) workspace\r\ncolcon build\r\n\r\n# Source your workspace environment\r\necho \"source ~\/ros2_ws\/install\/setup.bash\" >> ~\/.bashrc\r\nsource ~\/ros2_ws\/install\/setup.bash\r\n\r\n# Verify the workspace\r\ncolcon list\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1bbd266 e-con-full e-flex e-con e-parent\" data-id=\"1bbd266\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d99b187 elementor-bg-transform elementor-bg-transform-move-left elementor-cta--layout-image-left elementor-cta--mobile-layout-image-above elementor-cta--skin-classic elementor-animated-content elementor-widget elementor-widget-call-to-action\" data-id=\"d99b187\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"call-to-action.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-cta\">\n\t\t\t\t\t<div class=\"elementor-cta__bg-wrapper\">\n\t\t\t\t<div class=\"elementor-cta__bg elementor-bg\" style=\"background-image: url(https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/odometry_control.webp);\" role=\"img\" aria-label=\"odometry_control\"><\/div>\n\t\t\t\t<div class=\"elementor-cta__bg-overlay\"><\/div>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-cta__content\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<h2 class=\"elementor-cta__title elementor-cta__content-item elementor-content-item\">\n\t\t\t\t\t\tWant to learn more?\t\t\t\t\t<\/h2>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-cta__description elementor-cta__content-item elementor-content-item\">\n\t\t\t\t\t\tYou can find a detailed explaination of the workspace in  the \"Self Driving and ROS 2 - Learn by Doing! Odometry &amp; Control\" course\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item\">\n\t\t\t\t\t<a class=\"elementor-cta__button elementor-button elementor-size-\" href=\"\" target=\"_blank\">\n\t\t\t\t\t\tEnroll Now\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-ribbon elementor-ribbon-right\">\n\t\t\t\t<div class=\"elementor-ribbon-inner\">\n\t\t\t\t\tDISCOUNT\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-825299e elementor-widget elementor-widget-spacer\" data-id=\"825299e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>If you\u2019re getting started with ROS 2 on Ubuntu 24.04 LTS, one of the very first things you\u2019ll need to do is create a workspace. A workspace is simply a folder where you keep all your ROS 2 packages, build them, and manage your development environment. In this guide, we\u2019ll walk through \u2014 step by [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":2096,"comment_status":"closed","ping_status":"open","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[47,45,43],"tags":[126,129,128,67,87,125,66,74,72,76,73,124,127],"class_list":["post-1948","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-ros-2","category-tutorials","tag-base","tag-build","tag-colcon","tag-complete","tag-guide","tag-jazzy","tag-learn-by-doing","tag-linux","tag-ros2","tag-step-by-step","tag-ubuntu","tag-workspace","tag-zero-to-hero"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to create a ROS2 Workspace - Learn by Doing!<\/title>\n<meta name=\"description\" content=\"Learn how to create and use a ROS2 Workspace in Ubuntu 24.04\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/learnbydoing.dev\/es\/how-to-create-a-ros2-workspace\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to create a ROS2 Workspace\" \/>\n<meta property=\"og:description\" content=\"Learn by Doing!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/learnbydoing.dev\/es\/how-to-create-a-ros2-workspace\/\" \/>\n<meta property=\"og:site_name\" content=\"Learn by Doing!\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-27T10:13:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-10T22:41:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"How to create a ROS2 Workspace\",\"datePublished\":\"2025-06-27T10:13:16+00:00\",\"dateModified\":\"2026-01-10T22:41:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/\"},\"wordCount\":479,\"publisher\":{\"@id\":\"https:\/\/learnbydoing.dev\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp\",\"keywords\":[\"Base\",\"build\",\"colcon\",\"complete\",\"Guide\",\"Jazzy\",\"learn by doing\",\"Linux\",\"ROS2\",\"step by step\",\"Ubuntu\",\"Workspace\",\"Zero to Hero\"],\"articleSection\":[\"Linux\",\"ROS 2\",\"Tutorials\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/\",\"url\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/\",\"name\":\"How to create a ROS2 Workspace - Learn by Doing!\",\"isPartOf\":{\"@id\":\"https:\/\/learnbydoing.dev\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp\",\"datePublished\":\"2025-06-27T10:13:16+00:00\",\"dateModified\":\"2026-01-10T22:41:33+00:00\",\"description\":\"Learn how to create and use a ROS2 Workspace in Ubuntu 24.04\",\"breadcrumb\":{\"@id\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#primaryimage\",\"url\":\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp\",\"contentUrl\":\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/learnbydoing.dev\/es\/learn-by-doing-es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to create a ROS2 Workspace\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/learnbydoing.dev\/es\/#website\",\"url\":\"https:\/\/learnbydoing.dev\/es\/\",\"name\":\"Learn by Doing!\",\"description\":\"Learn Robotics the fun way\",\"publisher\":{\"@id\":\"https:\/\/learnbydoing.dev\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/learnbydoing.dev\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/learnbydoing.dev\/es\/#organization\",\"name\":\"Learn by Doing!\",\"url\":\"https:\/\/learnbydoing.dev\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/learnbydoing.dev\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/cropped-cropped-cropped-Progetto-senza-titolo-6-1.png\",\"contentUrl\":\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/cropped-cropped-cropped-Progetto-senza-titolo-6-1.png\",\"width\":512,\"height\":512,\"caption\":\"Learn by Doing!\"},\"image\":{\"@id\":\"https:\/\/learnbydoing.dev\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/antonio-brandi-512166bb\/\"]},{\"@type\":\"Person\",\"@id\":\"\",\"url\":\"https:\/\/learnbydoing.dev\/es\/author\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to create a ROS2 Workspace - Learn by Doing!","description":"Learn how to create and use a ROS2 Workspace in Ubuntu 24.04","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:\/\/learnbydoing.dev\/es\/how-to-create-a-ros2-workspace\/","og_locale":"es_ES","og_type":"article","og_title":"How to create a ROS2 Workspace","og_description":"Learn by Doing!","og_url":"https:\/\/learnbydoing.dev\/es\/how-to-create-a-ros2-workspace\/","og_site_name":"Learn by Doing!","article_published_time":"2025-06-27T10:13:16+00:00","article_modified_time":"2026-01-10T22:41:33+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#article","isPartOf":{"@id":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/"},"author":{"name":"","@id":""},"headline":"How to create a ROS2 Workspace","datePublished":"2025-06-27T10:13:16+00:00","dateModified":"2026-01-10T22:41:33+00:00","mainEntityOfPage":{"@id":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/"},"wordCount":479,"publisher":{"@id":"https:\/\/learnbydoing.dev\/es\/#organization"},"image":{"@id":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#primaryimage"},"thumbnailUrl":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp","keywords":["Base","build","colcon","complete","Guide","Jazzy","learn by doing","Linux","ROS2","step by step","Ubuntu","Workspace","Zero to Hero"],"articleSection":["Linux","ROS 2","Tutorials"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/","url":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/","name":"How to create a ROS2 Workspace - Learn by Doing!","isPartOf":{"@id":"https:\/\/learnbydoing.dev\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#primaryimage"},"image":{"@id":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#primaryimage"},"thumbnailUrl":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp","datePublished":"2025-06-27T10:13:16+00:00","dateModified":"2026-01-10T22:41:33+00:00","description":"Learn how to create and use a ROS2 Workspace in Ubuntu 24.04","breadcrumb":{"@id":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#primaryimage","url":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp","contentUrl":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Workspace-1.webp","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/learnbydoing.dev\/how-to-create-a-ros2-workspace\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/learnbydoing.dev\/es\/learn-by-doing-es\/"},{"@type":"ListItem","position":2,"name":"How to create a ROS2 Workspace"}]},{"@type":"WebSite","@id":"https:\/\/learnbydoing.dev\/es\/#website","url":"https:\/\/learnbydoing.dev\/es\/","name":"Learn by Doing!","description":"Learn Robotics the fun way","publisher":{"@id":"https:\/\/learnbydoing.dev\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/learnbydoing.dev\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/learnbydoing.dev\/es\/#organization","name":"Learn by Doing!","url":"https:\/\/learnbydoing.dev\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/learnbydoing.dev\/es\/#\/schema\/logo\/image\/","url":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/cropped-cropped-cropped-Progetto-senza-titolo-6-1.png","contentUrl":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/cropped-cropped-cropped-Progetto-senza-titolo-6-1.png","width":512,"height":512,"caption":"Learn by Doing!"},"image":{"@id":"https:\/\/learnbydoing.dev\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/antonio-brandi-512166bb\/"]},{"@type":"Person","@id":"","url":"https:\/\/learnbydoing.dev\/es\/author\/"}]}},"_links":{"self":[{"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/posts\/1948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/comments?post=1948"}],"version-history":[{"count":48,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/posts\/1948\/revisions"}],"predecessor-version":[{"id":5613,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/posts\/1948\/revisions\/5613"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/media\/2096"}],"wp:attachment":[{"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/media?parent=1948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/categories?post=1948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/tags?post=1948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}