{"id":3080,"date":"2025-07-26T14:23:08","date_gmt":"2025-07-26T14:23:08","guid":{"rendered":"https:\/\/learnbydoing.dev\/?p=3080"},"modified":"2026-01-19T18:03:58","modified_gmt":"2026-01-19T18:03:58","slug":"how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot","status":"publish","type":"post","link":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/","title":{"rendered":"How to Develop a Custom Alexa Skill to Control Your ROS 2 Robot"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"3080\" class=\"elementor elementor-3080\" 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\">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-261c3d8 elementor-widget elementor-widget-text-editor\" data-id=\"261c3d8\" 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<h4 aria-level=\"1\"><b><span data-contrast=\"none\">\ud83d\udc49 How to Develop a Custom Alexa Skill to Control Your ROS 2 Robot<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:480,&quot;335559739&quot;:0}\">\u00a0<\/span><\/h4><p><span data-contrast=\"auto\">In this step-by-step lab, you&#8217;ll learn how to create a custom Alexa Skill from scratch that can send commands to your ROS 2 robot. We&#8217;ll use the Alexa Developer Console to define intents and invocation phrases, and configure the skill to interact with a web server hosted via ngrok. By the end of this guide, you&#8217;ll be able to trigger robot actions using voice commands through Alexa&#8217;s cloud-based system\u2014even without a physical Alexa device.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/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-e04c0ca elementor-widget elementor-widget-text-editor\" data-id=\"e04c0ca\" 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<h4 aria-level=\"2\"><b><span data-contrast=\"none\">1. Access the Alexa Developer Console<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}\">\u00a0<\/span><\/h4><p><span data-contrast=\"auto\">Start by going to the Alexa Developer Console at developer.amazon.com. Log in with your Amazon account or create a new one.<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">Once logged in, click on &#8216;Create Skill&#8217; to begin building your custom voice assistant skill.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/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-ae8d9ad elementor-widget elementor-widget-image\" data-id=\"ae8d9ad\" 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=\"800\" height=\"800\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/b8294d7d-f6ea-47b8-9149-d5b49bec4f16.webp\" class=\"attachment-large size-large wp-image-3082\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/b8294d7d-f6ea-47b8-9149-d5b49bec4f16.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/b8294d7d-f6ea-47b8-9149-d5b49bec4f16-300x300.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/b8294d7d-f6ea-47b8-9149-d5b49bec4f16-150x150.webp 150w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/b8294d7d-f6ea-47b8-9149-d5b49bec4f16-768x768.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/b8294d7d-f6ea-47b8-9149-d5b49bec4f16-12x12.webp 12w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/b8294d7d-f6ea-47b8-9149-d5b49bec4f16-600x600.webp 600w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/b8294d7d-f6ea-47b8-9149-d5b49bec4f16-100x100.webp 100w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\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-7a888ec elementor-widget elementor-widget-text-editor\" data-id=\"7a888ec\" 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<h4 aria-level=\"2\"><b><span data-contrast=\"none\">2. Create and Configure the Skill<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}\">\u00a0<\/span><\/h4><p><span data-contrast=\"auto\">&#8211; Skill name: Choose a descriptive name for your skill (e.g., &#8216;Arduinobot&#8217;).<\/span>\u00a0<br \/><span data-contrast=\"auto\">&#8211; Language: Select the primary language (e.g., English or Italian).<\/span>\u00a0<br \/><span data-contrast=\"auto\">&#8211; Choose a model: Select &#8216;Custom&#8217; to build the skill interaction model from scratch.<\/span>\u00a0<br \/><span data-contrast=\"auto\">&#8211; Hosting method: Choose &#8216;Provision your own&#8217; so we can use ngrok to expose the skill endpoint.<\/span>\u00a0<br \/><span data-contrast=\"auto\">Click &#8216;Create skill&#8217; and then choose &#8216;Start from scratch&#8217; as the template.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/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-4b147dd elementor-widget elementor-widget-image\" data-id=\"4b147dd\" 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 decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e7aaf534-588e-4888-940f-26fb76ee9f66.webp\" class=\"attachment-large size-large wp-image-3083\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e7aaf534-588e-4888-940f-26fb76ee9f66.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e7aaf534-588e-4888-940f-26fb76ee9f66-300x300.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e7aaf534-588e-4888-940f-26fb76ee9f66-150x150.webp 150w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e7aaf534-588e-4888-940f-26fb76ee9f66-768x768.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e7aaf534-588e-4888-940f-26fb76ee9f66-12x12.webp 12w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e7aaf534-588e-4888-940f-26fb76ee9f66-600x600.webp 600w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e7aaf534-588e-4888-940f-26fb76ee9f66-100x100.webp 100w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\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-16783b7 elementor-widget elementor-widget-text-editor\" data-id=\"16783b7\" 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=\"311\" data-end=\"367\"><h4 aria-level=\"2\"><b><span data-contrast=\"none\">3. Define the Invocation Name<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}\">\u00a0<\/span><\/h4><p><span data-contrast=\"auto\">The invocation name is the phrase users will say to activate your skill.<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">Example: Set the invocation name to &#8216;activate the robot&#8217;.<\/span>\u00a0<br \/><span data-contrast=\"auto\">Once defined, click &#8216;Save Model&#8217; to confirm.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/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-95cbffe elementor-widget elementor-widget-image\" data-id=\"95cbffe\" 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 decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/9bb96805-fde4-42ca-83b9-9b7f2dfffe4b.webp\" class=\"attachment-large size-large wp-image-3084\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/9bb96805-fde4-42ca-83b9-9b7f2dfffe4b.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/9bb96805-fde4-42ca-83b9-9b7f2dfffe4b-300x300.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/9bb96805-fde4-42ca-83b9-9b7f2dfffe4b-150x150.webp 150w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/9bb96805-fde4-42ca-83b9-9b7f2dfffe4b-768x768.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/9bb96805-fde4-42ca-83b9-9b7f2dfffe4b-12x12.webp 12w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/9bb96805-fde4-42ca-83b9-9b7f2dfffe4b-600x600.webp 600w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/9bb96805-fde4-42ca-83b9-9b7f2dfffe4b-100x100.webp 100w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\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-0887672 elementor-widget elementor-widget-text-editor\" data-id=\"0887672\" 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=\"711\" data-end=\"790\"><h4 aria-level=\"2\"><b><span data-contrast=\"none\">4. Create Custom Intents<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}\">\u00a0<\/span><\/h4><p><span data-contrast=\"auto\">Now we will define the skill&#8217;s functionality using custom intents. Each intent represents a command.<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">**Intent 1 \u2013 PickIntent**<\/span>\u00a0<br \/><span data-contrast=\"auto\">&#8211; Utterances:<\/span>\u00a0<br \/><span data-contrast=\"auto\">\u00a0 \u2022 pick up this pen<\/span>\u00a0<br \/><span data-contrast=\"auto\">\u00a0 \u2022 pick up that pen<\/span>\u00a0<br \/><span data-contrast=\"auto\">\u00a0 \u2022 grab the pen<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">**Intent 2 \u2013 SleepIntent**<\/span>\u00a0<br \/><span data-contrast=\"auto\">&#8211; Utterances:<\/span>\u00a0<br \/><span data-contrast=\"auto\">\u00a0 \u2022 rest<\/span>\u00a0<br \/><span data-contrast=\"auto\">\u00a0 \u2022 sleep<\/span>\u00a0<br \/><span data-contrast=\"auto\">\u00a0 \u2022 turn off the robot<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">**Intent 3 \u2013 WakeIntent**<\/span>\u00a0<br \/><span data-contrast=\"auto\">&#8211; Utterances:<\/span>\u00a0<br \/><span data-contrast=\"auto\">\u00a0 \u2022 wake up the robot<\/span>\u00a0<br \/><span data-contrast=\"auto\">\u00a0 \u2022 activate the robot<\/span>\u00a0<br \/><span data-contrast=\"auto\">\u00a0 \u2022 wake up arduinobot<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">Click &#8216;Save Model&#8217; after creating each intent. You can add more intents later following the same process.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/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-b903318 elementor-widget elementor-widget-image\" data-id=\"b903318\" 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 loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/8b0e1db5-5d80-4785-9892-ccfd060bf776.webp\" class=\"attachment-large size-large wp-image-3085\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/8b0e1db5-5d80-4785-9892-ccfd060bf776.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/8b0e1db5-5d80-4785-9892-ccfd060bf776-300x300.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/8b0e1db5-5d80-4785-9892-ccfd060bf776-150x150.webp 150w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/8b0e1db5-5d80-4785-9892-ccfd060bf776-768x768.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/8b0e1db5-5d80-4785-9892-ccfd060bf776-12x12.webp 12w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/8b0e1db5-5d80-4785-9892-ccfd060bf776-600x600.webp 600w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/8b0e1db5-5d80-4785-9892-ccfd060bf776-100x100.webp 100w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\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-ebab863 elementor-widget elementor-widget-text-editor\" data-id=\"ebab863\" 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=\"1128\" data-end=\"1196\"><h4 aria-level=\"2\"><b><span data-contrast=\"none\">5. Configure the Endpoint<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}\">\u00a0<\/span><\/h4><p><span data-contrast=\"auto\">Go to the &#8216;Endpoint&#8217; section under the &#8216;Assets&#8217; tab.<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">&#8211; Endpoint type: Select &#8216;HTTPS&#8217;<\/span>\u00a0<br \/><span data-contrast=\"auto\">&#8211; Default region URI: Temporarily enter &#8216;https:\/\/ngrok.io&#8217; as a placeholder<\/span>\u00a0<br \/><span data-contrast=\"auto\">&#8211; SSL certificate type: Select &#8216;My development endpoint is a sub-domain of a domain that has a valid certificate&#8217;<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">Click &#8216;Save Endpoints&#8217; to store this configuration. We&#8217;ll update it with the actual ngrok address later.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/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-6ad065d elementor-widget elementor-widget-image\" data-id=\"6ad065d\" 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 loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/f09e787b-cc27-4ad5-a18a-dd6a39680fb7.webp\" class=\"attachment-large size-large wp-image-3086\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/f09e787b-cc27-4ad5-a18a-dd6a39680fb7.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/f09e787b-cc27-4ad5-a18a-dd6a39680fb7-300x300.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/f09e787b-cc27-4ad5-a18a-dd6a39680fb7-150x150.webp 150w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/f09e787b-cc27-4ad5-a18a-dd6a39680fb7-768x768.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/f09e787b-cc27-4ad5-a18a-dd6a39680fb7-12x12.webp 12w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/f09e787b-cc27-4ad5-a18a-dd6a39680fb7-600x600.webp 600w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/f09e787b-cc27-4ad5-a18a-dd6a39680fb7-100x100.webp 100w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\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-455a2f8 elementor-widget elementor-widget-text-editor\" data-id=\"455a2f8\" 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=\"1128\" data-end=\"1196\"><h4 aria-level=\"2\"><b><span data-contrast=\"none\">6. Build the Skill<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}\">\u00a0<\/span><\/h4><p><span data-contrast=\"auto\">Now it&#8217;s time to build the interaction model.<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">&#8211; Click the &#8216;Build Skill&#8217; button<\/span>\u00a0<br \/><span data-contrast=\"auto\">&#8211; Wait until the process completes (status: Build Complete)<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">This process generates Alexa&#8217;s internal natural language model to match user phrases with the intents you&#8217;ve defined.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/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-026039b elementor-widget elementor-widget-image\" data-id=\"026039b\" 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 loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/d0ee2966-b5cf-4dce-85f7-0cc586a335b9.webp\" class=\"attachment-large size-large wp-image-3087\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/d0ee2966-b5cf-4dce-85f7-0cc586a335b9.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/d0ee2966-b5cf-4dce-85f7-0cc586a335b9-300x300.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/d0ee2966-b5cf-4dce-85f7-0cc586a335b9-150x150.webp 150w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/d0ee2966-b5cf-4dce-85f7-0cc586a335b9-768x768.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/d0ee2966-b5cf-4dce-85f7-0cc586a335b9-12x12.webp 12w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/d0ee2966-b5cf-4dce-85f7-0cc586a335b9-600x600.webp 600w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/d0ee2966-b5cf-4dce-85f7-0cc586a335b9-100x100.webp 100w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\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-94c1d7e elementor-widget elementor-widget-text-editor\" data-id=\"94c1d7e\" 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=\"1128\" data-end=\"1196\"><h4 aria-level=\"2\"><b><span data-contrast=\"none\">7. Test the Skill<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}\">\u00a0<\/span><\/h4><p><span data-contrast=\"auto\">Go to the &#8216;Test&#8217; tab in the Developer Console.<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">&#8211; Enable testing by selecting &#8216;Skill testing is enabled in: Development&#8217;<\/span>\u00a0<br \/><span data-contrast=\"auto\">&#8211; You can now interact with Alexa using voice or by typing<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">Example test: Click the microphone and say &#8216;activate the robot&#8217;.<\/span>\u00a0<br \/><span data-contrast=\"auto\">Because we used a placeholder endpoint, Alexa won\u2019t get a response\u2014but you\u2019ll see the JSON message Alexa would send.<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">This JSON includes the request type (e.g., &#8216;LaunchRequest&#8217;) and the intent triggered. This is crucial for building the backend server that will process these requests and trigger robot actions.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/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-3870eaa elementor-widget elementor-widget-image\" data-id=\"3870eaa\" 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 loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e0248c26-3fb8-4685-9e3d-d6f9652fc03b.webp\" class=\"attachment-large size-large wp-image-3088\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e0248c26-3fb8-4685-9e3d-d6f9652fc03b.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e0248c26-3fb8-4685-9e3d-d6f9652fc03b-300x300.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e0248c26-3fb8-4685-9e3d-d6f9652fc03b-150x150.webp 150w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e0248c26-3fb8-4685-9e3d-d6f9652fc03b-768x768.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e0248c26-3fb8-4685-9e3d-d6f9652fc03b-12x12.webp 12w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e0248c26-3fb8-4685-9e3d-d6f9652fc03b-600x600.webp 600w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/e0248c26-3fb8-4685-9e3d-d6f9652fc03b-100x100.webp 100w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\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-2e30d35 elementor-widget elementor-widget-text-editor\" data-id=\"2e30d35\" 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=\"1128\" data-end=\"1196\"><h4 aria-level=\"2\"><b><span data-contrast=\"none\">8. What Comes Next<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:200,&quot;335559739&quot;:0}\">\u00a0<\/span><\/h4><p><span data-contrast=\"auto\">In the upcoming lessons, we&#8217;ll develop the backend web server to receive Alexa&#8217;s JSON requests and link them to ROS 2 actions.<\/span>\u00a0<\/p><p><span data-contrast=\"auto\">With the skill structure complete, you now have a working foundation for cloud-based voice interaction with your robot!<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/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-9bc6f7b elementor-widget elementor-widget-image\" data-id=\"9bc6f7b\" 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 loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"534\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/c8d386b8-8d4f-4151-9c00-f6f4dcd5901f-1024x683.webp\" class=\"attachment-large size-large wp-image-3090\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/c8d386b8-8d4f-4151-9c00-f6f4dcd5901f-1024x683.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/c8d386b8-8d4f-4151-9c00-f6f4dcd5901f-300x200.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/c8d386b8-8d4f-4151-9c00-f6f4dcd5901f-768x512.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/c8d386b8-8d4f-4151-9c00-f6f4dcd5901f-18x12.webp 18w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/c8d386b8-8d4f-4151-9c00-f6f4dcd5901f-1320x880.webp 1320w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/c8d386b8-8d4f-4151-9c00-f6f4dcd5901f-600x400.webp 600w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/c8d386b8-8d4f-4151-9c00-f6f4dcd5901f.webp 1536w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\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\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>\ud83d\udc49 How to Develop a Custom Alexa Skill to Control Your ROS 2 Robot\u00a0 In this step-by-step lab, you&#8217;ll learn how to create a custom Alexa Skill from scratch that can send commands to your ROS 2 robot. We&#8217;ll use the Alexa Developer Console to define intents and invocation phrases, and configure the skill to [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":3081,"comment_status":"closed","ping_status":"open","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[45,43],"tags":[116,256,109,259,258,255,260,179,66,100,71,107,257,76,73],"class_list":["post-3080","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ros-2","category-tutorials","tag-alexa","tag-bot","tag-control","tag-custom","tag-develop","tag-echo","tag-how-to","tag-lbd","tag-learn-by-doing","tag-robot","tag-ros","tag-ros-2","tag-skill","tag-step-by-step","tag-ubuntu"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Develop a Custom Alexa Skill to Control Your ROS 2 Robot - Learn by Doing!<\/title>\n<meta name=\"description\" content=\"Learn to develop a custom Alexa Skill from scratch to control your ROS 2 robot. Define intents, invocation phrases, and send voice commands via ngrok.\" \/>\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-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Installing ROS 2 Jazzy on Ubuntu 24.04: Step-by-Step Tutorial\" \/>\n<meta property=\"og:description\" content=\"Learn to develop a custom Alexa Skill from scratch to control your ROS 2 robot. Define intents, invocation phrases, and send voice commands via ngrok.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/learnbydoing.dev\/es\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/\" \/>\n<meta property=\"og:site_name\" content=\"Learn by Doing!\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-26T14:23:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-19T18:03:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Progetto-senza-titolo-14.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=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"How to Develop a Custom Alexa Skill to Control Your ROS 2 Robot\",\"datePublished\":\"2025-07-26T14:23:08+00:00\",\"dateModified\":\"2026-01-19T18:03:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/\"},\"wordCount\":577,\"publisher\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/es\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/learnbydoing.dev\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/26fe6190-eb2a-4512-b027-79f071c256b2.webp\",\"keywords\":[\"alexa\",\"Bot\",\"control\",\"custom\",\"Develop\",\"echo\",\"how to\",\"lbd\",\"learn by doing\",\"robot\",\"ROS\",\"ROS 2\",\"Skill\",\"step by step\",\"Ubuntu\"],\"articleSection\":[\"ROS 2\",\"Tutorials\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/\",\"url\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/\",\"name\":\"How to Develop a Custom Alexa Skill to Control Your ROS 2 Robot - Learn by Doing!\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/learnbydoing.dev\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/26fe6190-eb2a-4512-b027-79f071c256b2.webp\",\"datePublished\":\"2025-07-26T14:23:08+00:00\",\"dateModified\":\"2026-01-19T18:03:58+00:00\",\"description\":\"Learn to develop a custom Alexa Skill from scratch to control your ROS 2 robot. Define intents, invocation phrases, and send voice commands via ngrok.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/#primaryimage\",\"url\":\"https:\\\/\\\/learnbydoing.dev\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/26fe6190-eb2a-4512-b027-79f071c256b2.webp\",\"contentUrl\":\"https:\\\/\\\/learnbydoing.dev\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/26fe6190-eb2a-4512-b027-79f071c256b2.webp\",\"width\":1536,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/learnbydoing.dev\\\/es\\\/learn-by-doing-es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Develop a Custom Alexa Skill to Control Your ROS 2 Robot\"}]},{\"@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 Develop a Custom Alexa Skill to Control Your ROS 2 Robot - Learn by Doing!","description":"Learn to develop a custom Alexa Skill from scratch to control your ROS 2 robot. Define intents, invocation phrases, and send voice commands via ngrok.","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-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/","og_locale":"es_ES","og_type":"article","og_title":"Installing ROS 2 Jazzy on Ubuntu 24.04: Step-by-Step Tutorial","og_description":"Learn to develop a custom Alexa Skill from scratch to control your ROS 2 robot. Define intents, invocation phrases, and send voice commands via ngrok.","og_url":"https:\/\/learnbydoing.dev\/es\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/","og_site_name":"Learn by Doing!","article_published_time":"2025-07-26T14:23:08+00:00","article_modified_time":"2026-01-19T18:03:58+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/06\/Progetto-senza-titolo-14.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/#article","isPartOf":{"@id":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/"},"author":{"name":"","@id":""},"headline":"How to Develop a Custom Alexa Skill to Control Your ROS 2 Robot","datePublished":"2025-07-26T14:23:08+00:00","dateModified":"2026-01-19T18:03:58+00:00","mainEntityOfPage":{"@id":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/"},"wordCount":577,"publisher":{"@id":"https:\/\/learnbydoing.dev\/es\/#organization"},"image":{"@id":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/#primaryimage"},"thumbnailUrl":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/26fe6190-eb2a-4512-b027-79f071c256b2.webp","keywords":["alexa","Bot","control","custom","Develop","echo","how to","lbd","learn by doing","robot","ROS","ROS 2","Skill","step by step","Ubuntu"],"articleSection":["ROS 2","Tutorials"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/","url":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/","name":"How to Develop a Custom Alexa Skill to Control Your ROS 2 Robot - Learn by Doing!","isPartOf":{"@id":"https:\/\/learnbydoing.dev\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/#primaryimage"},"image":{"@id":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/#primaryimage"},"thumbnailUrl":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/26fe6190-eb2a-4512-b027-79f071c256b2.webp","datePublished":"2025-07-26T14:23:08+00:00","dateModified":"2026-01-19T18:03:58+00:00","description":"Learn to develop a custom Alexa Skill from scratch to control your ROS 2 robot. Define intents, invocation phrases, and send voice commands via ngrok.","breadcrumb":{"@id":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/#primaryimage","url":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/26fe6190-eb2a-4512-b027-79f071c256b2.webp","contentUrl":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/07\/26fe6190-eb2a-4512-b027-79f071c256b2.webp","width":1536,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/learnbydoing.dev\/how-to-develop-a-custom-alexa-skill-to-control-your-ros-2-robot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/learnbydoing.dev\/es\/learn-by-doing-es\/"},{"@type":"ListItem","position":2,"name":"How to Develop a Custom Alexa Skill to Control Your ROS 2 Robot"}]},{"@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\/3080","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\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/comments?post=3080"}],"version-history":[{"count":18,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/posts\/3080\/revisions"}],"predecessor-version":[{"id":5717,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/posts\/3080\/revisions\/5717"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/media\/3081"}],"wp:attachment":[{"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/media?parent=3080"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/categories?post=3080"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/tags?post=3080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}