{"id":4000,"date":"2025-09-18T12:15:48","date_gmt":"2025-09-18T12:15:48","guid":{"rendered":"https:\/\/learnbydoing.dev\/?p=4000"},"modified":"2026-01-10T21:55:55","modified_gmt":"2026-01-10T21:55:55","slug":"safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2","status":"publish","type":"post","link":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/","title":{"rendered":"Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"4000\" class=\"elementor elementor-4000\" 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-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<p data-start=\"373\" data-end=\"1034\">When robots and humans share the same workspace, <strong data-start=\"422\" data-end=\"443\">functional safety<\/strong> becomes a first-class requirement. A collaborative robot must be able to adapt its motion according to the level of risk in the environment, slowing down or stopping entirely when a person comes too close.Unlike traditional setups with cages or physical barriers, this approach relies on software and sensing to ensure safety. <br \/><br \/>The principle is realized through <strong data-start=\"806\" data-end=\"847\">Speed and Separation Monitoring (SSM)<\/strong>, a continuous process that evaluates the minimum distance between the robot and surrounding objects\u2014commonly using a 2D LiDAR\u2014and translates this measurement into safe motion commands.<br \/><br \/><\/p><p data-start=\"1036\" data-end=\"1285\">This article explores how SSM works conceptually and how it can be integrated into a ROS 2 stack, where the <strong data-start=\"1144\" data-end=\"1159\"><code data-start=\"1146\" data-end=\"1157\">twist_mux<\/code><\/strong> node plays a key role in arbitrating velocity commands from multiple sources such as navigation, teleoperation, and safety.<\/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-d5889a3 elementor-widget elementor-widget-text-editor\" data-id=\"d5889a3\" 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=\"1292\" data-end=\"1351\">\ud83c\udfce\ufe0f What Speed and Separation Monitoring actually does<\/h3><p data-start=\"1353\" data-end=\"1729\">The foundation of SSM is the definition of <strong data-start=\"1396\" data-end=\"1423\">concentric safety zones<\/strong> around the robot, derived from the LiDAR\u2019s field of view. These zones translate distance into behavior: when no obstacles are present, the robot moves freely; when something enters a warning zone, the robot reduces its speed; and when an object crosses into the danger zone, the robot halts immediately.<br \/><br \/><\/p><p data-start=\"1731\" data-end=\"2234\">The LiDAR continuously provides range measurements across its angular span. Each scan is analyzed to extract the minimum valid distance, and this value is compared to the predefined thresholds. If the closest object lies within the warning zone, the robot transitions into a reduced-speed behavior. If it falls inside the danger zone, the system enforces a complete stop. This cycle repeats at the sensor\u2019s update frequency, ensuring that the robot\u2019s speed always reflects the real-time level of risk.<br \/><br \/><\/p><p data-start=\"2236\" data-end=\"2687\">Two aspects are particularly critical. The first is the <strong data-start=\"2292\" data-end=\"2327\">detection geometry and coverage<\/strong>: the accuracy of SSM depends entirely on what the LiDAR can \u201csee,\u201d which is influenced by its angular resolution, field of view, and any occlusions. The second is the <strong data-start=\"2495\" data-end=\"2523\">reaction characteristics<\/strong> of the system: the update rate, filtering methods, and debouncing must allow fast responses to sudden approaches, while also avoiding unstable or noisy triggers.<\/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-5c7ac6c elementor-widget elementor-widget-image\" data-id=\"5c7ac6c\" 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=\"450\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-8-1024x576.webp\" class=\"attachment-large size-large wp-image-4016\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-8-1024x576.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-8-300x169.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-8-768x432.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-8-1536x864.webp 1536w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-8-18x10.webp 18w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-8.webp 1920w\" 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-d53eb9a elementor-widget elementor-widget-text-editor\" data-id=\"d53eb9a\" 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=\"2694\" data-end=\"2750\">\u2194\ufe0f Perception pipeline (LiDAR \u2192 distance estimate)<\/h3><p data-start=\"2752\" data-end=\"3381\">The perception stage begins with the LiDAR scan, which produces an array of distances covering a 2D plane. The SSM logic processes this data to identify the closest object, either across the full scan or within a defined sector depending on the application. Because raw LiDAR data is prone to noise, the system typically applies validation steps to discard invalid values and lightweight filtering\u2014such as temporal averaging\u2014to stabilize decisions. This ensures the output is not overly sensitive to random fluctuations. The result of this process is a <strong data-start=\"3305\" data-end=\"3319\">risk state<\/strong> that can be categorized as <em data-start=\"3347\" data-end=\"3354\">clear<\/em>, <em data-start=\"3356\" data-end=\"3365\">warning<\/em>, or <em data-start=\"3370\" data-end=\"3378\">danger<\/em>.<\/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-6a3f6da elementor-widget elementor-widget-text-editor\" data-id=\"6a3f6da\" 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=\"3388\" data-end=\"3439\">\u2696\ufe0f Decision layer (from distance to behavior)<\/h3><p data-start=\"3441\" data-end=\"3862\">Once the risk state is determined, the system maps it directly to robot behavior. In a <em data-start=\"3528\" data-end=\"3535\">clear<\/em> state, navigation or teleoperation commands pass through unchanged. In a <em data-start=\"3609\" data-end=\"3618\">warning<\/em> state, the velocity commands are attenuated according to predefined limits, reducing both linear and angular speed. If the state escalates to <em data-start=\"3761\" data-end=\"3769\">danger<\/em>, the system overrides any input and sets the velocity to zero, ensuring an immediate stop.<br \/><br \/><\/p><p data-start=\"3864\" data-end=\"4112\">This mapping must be deterministic and monotonic, meaning that as an obstacle gets closer, the robot\u2019s behavior always becomes more restrictive. To prevent oscillations near threshold boundaries, a simple hysteresis mechanism is often introduced.<\/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-a751509 elementor-widget elementor-widget-image\" data-id=\"a751509\" 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=\"450\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-9-1024x576.webp\" class=\"attachment-large size-large wp-image-4017\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-9-1024x576.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-9-300x169.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-9-768x432.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-9-1536x864.webp 1536w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-9-18x10.webp 18w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-9.webp 1920w\" 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-643f85f elementor-widget elementor-widget-text-editor\" data-id=\"643f85f\" 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=\"4119\" data-end=\"4165\">\ud83d\udd79\ufe0f Why <code data-start=\"4130\" data-end=\"4141\">twist_mux<\/code> is essential in ROS 2<\/h3><p data-start=\"4167\" data-end=\"4493\">Modern robots usually receive velocity commands from multiple sources. For example, navigation may propose a trajectory, an operator may teleoperate the robot, and a safety system may inject protective overrides. These commands are all expressed as <code data-start=\"4416\" data-end=\"4437\">geometry_msgs\/Twist<\/code>, and without proper arbitration, they would conflict.<br \/><br \/><\/p><p data-start=\"4495\" data-end=\"4773\">The <strong data-start=\"4499\" data-end=\"4514\"><code data-start=\"4501\" data-end=\"4512\">twist_mux<\/code><\/strong> node provides the necessary arbitration by assigning priorities to each input. In practice, navigation might run at a lower priority, teleoperation higher, and safety at the top. If multiple inputs are active, the one with the highest priority is selected.<br \/><br \/><\/p><p data-start=\"4775\" data-end=\"5184\">Additional mechanisms improve robustness: timeouts ensure that if a source stops publishing, its commands are ignored, preventing stale data from being applied; lock topics can override all other inputs, enforcing an emergency stop regardless of current priorities. This design guarantees that the safety channel always prevails, without the need for direct intervention from the navigation or teleop nodes.<\/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-203ac53 elementor-widget elementor-widget-image\" data-id=\"203ac53\" 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=\"450\" src=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-10-1024x576.webp\" class=\"attachment-large size-large wp-image-4018\" alt=\"\" srcset=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-10-1024x576.webp 1024w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-10-300x169.webp 300w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-10-768x432.webp 768w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-10-1536x864.webp 1536w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-10-18x10.webp 18w, https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-10.webp 1920w\" 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-cab90be elementor-widget elementor-widget-text-editor\" data-id=\"cab90be\" 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=\"5191\" data-end=\"5227\">&lt;\/&gt; Integrating SSM in practice<\/h3><p data-start=\"5229\" data-end=\"5715\">In a real ROS 2 setup, the integration of SSM follows a clear flow. First, the LiDAR publishes its scans. The SSM logic processes them, computes the minimum distance, and determines the current risk state. Based on that, it publishes either a reduced velocity or a stop command on the safety channel. The <code data-start=\"5534\" data-end=\"5545\">twist_mux<\/code> node then receives this input alongside navigation and teleop commands, and\u2014using its configured priorities and timeouts\u2014decides which command to forward to the robot.<br \/><br \/><\/p><p data-start=\"5717\" data-end=\"5976\">Because every system can have different topic names and policies, it is important to align the configuration with the <code data-start=\"5835\" data-end=\"5846\">twist_mux<\/code> settings already defined in your project. The priorities, timeouts, and lock behaviors must reflect the intended safety policy.<\/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-858fb83 elementor-widget elementor-widget-text-editor\" data-id=\"858fb83\" 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=\"5983\" data-end=\"6016\">\ud83e\uddfe Verification and testing<\/h3><p data-start=\"6018\" data-end=\"6731\">Before enabling SSM in environments where humans are present, thorough testing is essential. The first step is verifying <strong data-start=\"6139\" data-end=\"6158\">sensor coverage<\/strong>, ensuring the LiDAR truly monitors the critical zones without blind spots. Next, the <strong data-start=\"6244\" data-end=\"6277\">warning and danger thresholds<\/strong> must be validated empirically to match the robot\u2019s braking distance, system latency, and expected human approach speeds. The <strong data-start=\"6403\" data-end=\"6418\">transitions<\/strong> between states should be observed to confirm that they are deterministic, repeatable, and free from unstable oscillations. Finally, the <strong data-start=\"6555\" data-end=\"6579\">arbitration behavior<\/strong> must be checked to confirm that <code data-start=\"6612\" data-end=\"6623\">twist_mux<\/code> correctly prioritizes safety overrides and seamlessly restores normal operation once conditions are safe.<br \/><br \/><\/p><p data-start=\"6733\" data-end=\"6856\">These validation steps ensure that the SSM configuration is not only theoretically correct but also practically reliable.<\/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-76eeeb3 elementor-widget elementor-widget-text-editor\" data-id=\"76eeeb3\" 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=\"2710\" data-end=\"2760\"><strong data-start=\"6172\" data-end=\"6207\">Speed and Separation Monitoring<\/strong> provides a practical, effective way to keep people safe around mobile robots by continuously adapting the robot\u2019s motion to the measured risk. Leveraging a 2D LiDAR for distance assessment and <strong data-start=\"6401\" data-end=\"6416\"><code data-start=\"6403\" data-end=\"6414\">twist_mux<\/code><\/strong> for command arbitration gives you a robust, ROS 2-native solution that preserves productivity without compromising safety.<\/p><p data-start=\"2710\" data-end=\"2760\">\u00a0<\/p><p data-start=\"482\" data-end=\"777\">If you are interested in this topic and want to explore the full design of safe and autonomous robotic systems with ROS 2, the <strong data-start=\"609\" data-end=\"628\">complete course<\/strong> includes dedicated lessons, practical examples, and ready-to-use material that will allow you to apply these techniques directly to your projects.<\/p><p data-start=\"779\" data-end=\"839\">\u00a0<\/p>\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<div class=\"elementor-element elementor-element-c5d20e7 e-con-full e-flex e-con e-parent\" data-id=\"c5d20e7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6f5d4a8 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=\"6f5d4a8\" 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\/05\/map_localization.webp);\" role=\"img\" aria-label=\"map_localization\"><\/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\tDiscover how to design, build, and use maps in real robotic systems in the \"Self Driving and ROS 2 - Learn by doing! Map &amp; Localization\" 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-180426a elementor-widget elementor-widget-spacer\" data-id=\"180426a\" 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>When robots and humans share the same workspace, functional safety becomes a first-class requirement. A collaborative robot must be able to adapt its motion according to the level of risk in the environment, slowing down or stopping entirely when a person comes too close.Unlike traditional setups with cages or physical barriers, this approach relies on [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":4022,"comment_status":"closed","ping_status":"open","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[45,43],"tags":[328,338,313,329,325,284,66,307,74,336,331,332,340,100,75,71,107,72,334,335,333,279,330,76,64,339,341,73,337],"class_list":["post-4000","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ros-2","category-tutorials","tag-antonio-brandi","tag-controller","tag-environment","tag-human","tag-integrate","tag-interaction","tag-learn-by-doing","tag-lidar","tag-linux","tag-modelm-robot","tag-monitor","tag-monitoring","tag-mux","tag-robot","tag-robotics","tag-ros","tag-ros-2","tag-ros2","tag-safe","tag-safety","tag-separation","tag-speed","tag-speed-and-separation-monitoring","tag-step-by-step","tag-tutorial","tag-twist","tag-twist_mux","tag-ubuntu","tag-velocity"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2 - Learn by Doing!<\/title>\n<meta name=\"description\" content=\"Learn how autonomous robots use maps and sensors in ROS 2. The complete guide to localization, from core concepts to practical use.\" \/>\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\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2\" \/>\n<meta property=\"og:description\" content=\"Learn by Doing!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/learnbydoing.dev\/es\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Learn by Doing!\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-18T12:15:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-10T21:55:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-11-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=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2\",\"datePublished\":\"2025-09-18T12:15:48+00:00\",\"dateModified\":\"2026-01-10T21:55:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/\"},\"wordCount\":1087,\"publisher\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/es\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/learnbydoing.dev\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Maps-11.webp\",\"keywords\":[\"antonio brandi\",\"controller\",\"Environment\",\"human\",\"integrate\",\"interaction\",\"learn by doing\",\"Lidar\",\"Linux\",\"modelm robot\",\"monitor\",\"monitoring\",\"mux\",\"robot\",\"Robotics\",\"ROS\",\"ROS 2\",\"ROS2\",\"safe\",\"safety\",\"separation\",\"speed\",\"speed and separation monitoring\",\"step by step\",\"tutorial\",\"twist\",\"twist_mux\",\"Ubuntu\",\"velocity\"],\"articleSection\":[\"ROS 2\",\"Tutorials\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/\",\"url\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/\",\"name\":\"Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2 - Learn by Doing!\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/learnbydoing.dev\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Maps-11.webp\",\"datePublished\":\"2025-09-18T12:15:48+00:00\",\"dateModified\":\"2026-01-10T21:55:55+00:00\",\"description\":\"Learn how autonomous robots use maps and sensors in ROS 2. The complete guide to localization, from core concepts to practical use.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/learnbydoing.dev\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Maps-11.webp\",\"contentUrl\":\"https:\\\/\\\/learnbydoing.dev\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Maps-11.webp\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/learnbydoing.dev\\\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/learnbydoing.dev\\\/es\\\/learn-by-doing-es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2\"}]},{\"@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":"Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2 - Learn by Doing!","description":"Learn how autonomous robots use maps and sensors in ROS 2. The complete guide to localization, from core concepts to practical use.","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\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/","og_locale":"es_ES","og_type":"article","og_title":"Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2","og_description":"Learn by Doing!","og_url":"https:\/\/learnbydoing.dev\/es\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/","og_site_name":"Learn by Doing!","article_published_time":"2025-09-18T12:15:48+00:00","article_modified_time":"2026-01-10T21:55:55+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-11-1.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"","Tiempo de lectura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/#article","isPartOf":{"@id":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/"},"author":{"name":"","@id":""},"headline":"Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2","datePublished":"2025-09-18T12:15:48+00:00","dateModified":"2026-01-10T21:55:55+00:00","mainEntityOfPage":{"@id":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/"},"wordCount":1087,"publisher":{"@id":"https:\/\/learnbydoing.dev\/es\/#organization"},"image":{"@id":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/#primaryimage"},"thumbnailUrl":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-11.webp","keywords":["antonio brandi","controller","Environment","human","integrate","interaction","learn by doing","Lidar","Linux","modelm robot","monitor","monitoring","mux","robot","Robotics","ROS","ROS 2","ROS2","safe","safety","separation","speed","speed and separation monitoring","step by step","tutorial","twist","twist_mux","Ubuntu","velocity"],"articleSection":["ROS 2","Tutorials"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/","url":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/","name":"Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2 - Learn by Doing!","isPartOf":{"@id":"https:\/\/learnbydoing.dev\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/#primaryimage"},"image":{"@id":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/#primaryimage"},"thumbnailUrl":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-11.webp","datePublished":"2025-09-18T12:15:48+00:00","dateModified":"2026-01-10T21:55:55+00:00","description":"Learn how autonomous robots use maps and sensors in ROS 2. The complete guide to localization, from core concepts to practical use.","breadcrumb":{"@id":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/#primaryimage","url":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-11.webp","contentUrl":"https:\/\/learnbydoing.dev\/wp-content\/uploads\/2025\/09\/Maps-11.webp","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/learnbydoing.dev\/safety-in-human-robot-interaction-speed-and-separation-monitoring-with-ros-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/learnbydoing.dev\/es\/learn-by-doing-es\/"},{"@type":"ListItem","position":2,"name":"Safety in Human\u2013Robot Interaction: Speed and Separation Monitoring with ROS 2"}]},{"@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\/4000","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=4000"}],"version-history":[{"count":18,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/posts\/4000\/revisions"}],"predecessor-version":[{"id":5496,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/posts\/4000\/revisions\/5496"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/media\/4022"}],"wp:attachment":[{"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/media?parent=4000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/categories?post=4000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/learnbydoing.dev\/es\/wp-json\/wp\/v2\/tags?post=4000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}