{"id":229,"date":"2026-07-27T11:54:14","date_gmt":"2026-07-27T02:54:14","guid":{"rendered":"https:\/\/udri.or.jp\/topics\/?p=229"},"modified":"2026-08-08T09:16:05","modified_gmt":"2026-08-08T00:16:05","slug":"robot","status":"publish","type":"post","link":"https:\/\/udri.or.jp\/topics\/2026\/07\/27\/robot\/","title":{"rendered":"\u30ed\u30dc\u30c3\u30c8AI\u30a8\u30df\u30e5\u30ec\u30fc\u30bf(wip)"},"content":{"rendered":"\n<ul style=\"list-style:none; padding-left:0;\">\n  <li><a href=\"#slam\">1.SLAM\u3068\u306f<\/a><\/li>\n  <li><a href=\"#simyulater\">2.\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u6bd4\u8f03<\/a><\/li>\n  <li><a href=\"#webots\">3.Webots<\/a><\/li>\n  <li><a href=\"#testarea\">4.\u30c6\u30b9\u30c8\u30a8\u30ea\u30a2<\/a><\/li>\n<li>\u3000 \uff5c\uff3f<a href=\"#Step1\">STEP1\uff08\uff11\u4f53\u52d5\u304b\u3059\uff09<\/a><\/li>\n<li>\u3000 \uff5c\uff3f<a href=\"#Step2\">STEP2\uff082\u4f53\u901a\u4fe1\uff09<\/a><\/li>\n\n\n<\/ul>\n\n\n\n<h2 id=\"slam\" class=\"wp-block-heading\">\uff11\uff0eSLAM\u3068\u306f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Simultaneous Localization and Mapping<\/strong>\uff08\u81ea\u5df1\u4f4d\u7f6e\u63a8\u5b9a\u3068\u5730\u56f3\u4f5c\u6210\u306e\u540c\u6642\u5b9f\u884c\uff09<br>\u30ed\u30dc\u30c3\u30c8\u304c\u672a\u77e5\u7a7a\u9593\u3092\u79fb\u52d5\u3057\u306a\u304c\u3089\u3001\u300c\u81ea\u5206\u304c\u4eca\u3069\u3053\u306b\u3044\u308b\u304b\u300d\u3068\u300c\u5468\u56f2\u306e\u5730\u56f3\u300d\u3092\u540c\u6642\u306b\u69cb\u7bc9\u3059\u308b\u6280\u8853\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PC\u3067\u30a8\u30df\u30e5\u30ec\u30fc\u30c8\u3059\u308b\u65b9\u6cd5\u306f\u3044\u304f\u3064\u304b\u3042\u308b\u3002\u3053\u3053\u3067\u306fPLATEAU\u306e\u7a7a\u9593\u30c7\u30fc\u30bf\u3068\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u5229\u7528\u3059\u308b\u76ee\u7684\u3067\u8abf\u67fb\u3059\u308b\u3002<\/p>\n\n\n\n<h2 id=\"simyulater\" class=\"wp-block-heading\">\uff12\uff0e\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u6bd4\u8f03<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc<\/th><th>Windows\u5bfe\u5fdc<\/th><th>\u96e3\u6613\u5ea6<\/th><th>SLAM<\/th><th>PLATEAU\u9023\u643a<\/th><th>\u4eca\u306e\u6bb5\u968e\u3067\u306e\u512a\u5148\u5ea6<\/th><\/tr><\/thead><tbody><tr><td><strong>Webots<\/strong><\/td><td>\u25ce\u30cd\u30a4\u30c6\u30a3\u30d6<\/td><td>\u2605\u2606\u2606<\/td><td>\u25cb<\/td><td>\u25b3<\/td><td><strong>\u4eca\u3059\u3050\u4f7f\u3048\u308b<\/strong><\/td><\/tr><tr><td><strong>DARPA SubT + Gazebo<\/strong><\/td><td>\u25b3Docker\u7d4c\u7531<\/td><td>\u2605\u2605\u2605<\/td><td>\u25ce<\/td><td>\u25b3<\/td><td>Ubuntu\u5f8c\u306b\u672c\u547d<\/td><\/tr><tr><td><strong>NVIDIA Isaac Sim<\/strong><\/td><td>\u25cb<\/td><td>\u2605\u2605\u2606<\/td><td>\u25ce<\/td><td>\u25ce<\/td><td>\u5c06\u6765\uff08\u9ad8\u6027\u80fdPC\u5fc5\u8981\uff09<\/td><\/tr><tr><td>Unity Robotics Hub<\/td><td>\u25ce<\/td><td>\u2605\u2605\u2606<\/td><td>\u25b3<\/td><td>\u25ce<\/td><td>\u6bd4\u8f03\u7684\u5bb9\u6613\u306b\u30b9\u30bf\u30fc\u30c8\u3067\u304d\u308b<\/td><\/tr><tr><td>AI Habitat<\/td><td>\u25b3Linux\u63a8\u5968<\/td><td>\u2605\u2605\u2606<\/td><td>\u25cb<\/td><td>\u25b3<\/td><td>\u5c06\u6765<\/td><\/tr><tr><td>CoppeliaSim<\/td><td>\u25cb<\/td><td>\u2605\u2605\u2606<\/td><td>\u25cb<\/td><td>\u25b3<\/td><td>\u5fc5\u8981\u306a\u3089<\/td><\/tr><tr><td>MuJoCo<\/td><td>\u25cb<\/td><td>\u2605\u2605\u2605<\/td><td>\u25b3<\/td><td>\u2717<\/td><td>\u811a\u578b\u30ed\u30dc\u30c3\u30c8\u5c02\u9580<\/td><\/tr><tr><td>AirSim<\/td><td>\u25cb<\/td><td>\u2605\u2605\u2606<\/td><td>\u25cb<\/td><td>\u25b3<\/td><td>\u30c9\u30ed\u30fc\u30f3\u5c02\u9580<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 id=\"webots\" class=\"wp-block-heading\">\uff13\uff0eWebots\u3092\u52d5\u304b\u3059<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\uff11\uff09\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3068\u8d77\u52d5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/cyberbotics.com\">https:\/\/cyberbotics.com<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2192 \u53f3\u4e0a\u300c<strong>Download Webots<\/strong>\u300d\u2192&nbsp;<strong>Windows<\/strong>&nbsp;\u3092\u9078\u629e<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d5\u30a1\u30a4\u30eb\u540d:&nbsp;<code>webots-R2023b_setup.exe<\/code>\uff08\u7d04 1.5GB\uff09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">File\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u30b5\u30f3\u30d7\u30eb\u30ef\u30fc\u30eb\u30c9\u3092\u30aa\u30fc\u30d7\u30f3\u3002\u691c\u7d22\u7a93\u3067\u3001lidar\u3068\u6253\u3063\u3066\u51fa\u305f\u30ef\u30fc\u30eb\u30c9\u304c\u6b21\u56f3\u3002lidar\u304c\u5468\u8fba\u306e\u7269\u4f53\u3092\u8a08\u6e2c\u3057\u306a\u304c\u3089\u52d5\u304f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"680\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-07-27-102820-1024x680.png\" alt=\"\" class=\"wp-image-234\" style=\"width:452px;height:auto\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-07-27-102820-1024x680.png 1024w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-07-27-102820-300x199.png 300w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-07-27-102820-768x510.png 768w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-07-27-102820.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">slam\uff08\u6e2c\u5730\uff09\u30b5\u30f3\u30d7\u30eb<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"658\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-1-1024x658.png\" alt=\"\" class=\"wp-image-237\" style=\"aspect-ratio:1.5562968334541938;width:451px;height:auto\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-1-1024x658.png 1024w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-1-300x193.png 300w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-1-768x494.png 768w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-1.png 1313w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 id=\"testarea\" class=\"wp-block-heading\">\uff14\uff0e\u30c6\u30b9\u30c8\u30a8\u30ea\u30a2<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">    \u7d0430m\u00d720m\u306e\u533a\u753b\u3068\u3059\u308b<br>                    \uff3b\u975e\u5e38\u53e3B\uff3d<br>                        \u2502<br>                \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524<br>                \u2502 \u7159\u533a\u57df         \u2502<br>                \u2502        \u25cf \u8981\u6551\u8b77\u8005<br>                \u2514\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2518<br>                        \u2502<br>\uff3b\u5f85\u6a5f\u6240\uff3d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\uff0b\u2500\u2500\u2500\u2500\u2500\u2500\uff3b\u975e\u5e38\u53e3A\uff3d<br>  5\u4f53\u914d\u7f6e               \u2502<br>                        \u25a0 \u304c\u308c\u304d\u30fb\u901a\u884c\u6b62\u3081<br>                        \u2502<br>                   \uff3b\u5e97\u8217\u533a\u753b\uff3d<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">                 \u5165\u308c\u308b\u8981\u7d20<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5e454m\u7a0b\u5ea6\u306e\u4e3b\u901a\u8def<\/li>\n\n\n\n<li>T\u5b57\u8def\u307e\u305f\u306f\u5341\u5b57\u8def<\/li>\n\n\n\n<li>\u975e\u5e38\u53e32\u304b\u6240<\/li>\n\n\n\n<li>\u901a\u884c\u6b62\u30811\u304b\u6240<\/li>\n\n\n\n<li>\u7159\u30fb\u5371\u967a\u533a\u57df1\u304b\u6240<\/li>\n\n\n\n<li>\u8981\u6551\u8b77\u80051\u4eba<\/li>\n\n\n\n<li>5\u4f53\u306e\u5f85\u6a5f\u5834\u6240<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u58c1\u3001\u5e8a\u3001\u304c\u308c\u304d\u306f\u3001\u6700\u521d\u306f\u3059\u3079\u3066\u76f4\u65b9\u4f53<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>MaruBase.proto<\/code>\u3000\uff1a\u5171\u901a\u88c5\u5099<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u88c5\u5099<\/th><th>\u521d\u671f\u5b9f\u9a13\u3067\u306e\u7528\u9014<\/th><\/tr><\/thead><tbody><tr><td>\u5de6\u53f32\u8f2a<\/td><td>\u524d\u9032\u3001\u5f8c\u9000\u3001\u65cb\u56de<\/td><\/tr><tr><td>\u8ddd\u96e2\u30bb\u30f3\u30b5\u30fc<\/td><td>\u58c1\u30fb\u304c\u308c\u304d\u3068\u306e\u885d\u7a81\u56de\u907f<\/td><\/tr><tr><td>GPS<\/td><td>\u5b9f\u9a13\u4e2d\u306e\u73fe\u5728\u4f4d\u7f6e\u53d6\u5f97<\/td><\/tr><tr><td>Compass\u307e\u305f\u306fInertialUnit<\/td><td>\u5411\u304d\u306e\u53d6\u5f97<\/td><\/tr><tr><td>Emitter<\/td><td>\u4ed6\u306e\u30ed\u30dc\u30c3\u30c8\u3078\u306e\u9001\u4fe1<\/td><\/tr><tr><td>Receiver<\/td><td>\u6307\u4ee4\u30fb\u5831\u544a\u306e\u53d7\u4fe1<\/td><\/tr><tr><td>LED<\/td><td>\u5f79\u5272\u3084\u72b6\u614b\u306e\u8868\u793a<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d5\u30a9\u30eb\u30c0\u69cb\u6210<br>TokyoStationMarubots\/<br>\u2502<br>\u251c\u2500 worlds\/<br>\u2502 \u2514\u2500 tokyo_station_minimum.wbt<br>\u2502<br>\u251c\u2500 protos\/<br>\u2502 \u2514\u2500 MaruBase.proto<br>\u2502<br>\u251c\u2500 controllers\/<br>\u2502 \u251c\u2500 maru_controller\/<br>\u2502 \u2502 \u2514\u2500 maru_controller.py<br>\u2502 \u2502<br>\u2502 \u2514\u2500 disaster_supervisor\/<br>\u2502 \u2514\u2500 disaster_supervisor.py<br>\u2502<br>\u2514\u2500 data\/<br>\u3000\u251c\u2500 route_graph.json<br>\u3000\u2514\u2500 scenarios.json<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5b9f\u88c5\u9806\u5e8f<\/h3>\n\n\n\n<h3 id=\"Step1\" class=\"wp-block-heading\">\u7b2c1\u6bb5\u968e\uff1a1\u4f53\uff08SEARCH)\u3092\u52d5\u304b\u3059<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\u958b\u59cb\u5730\u70b9 \u2192 \u6307\u5b9a\u5730\u70b9 \u2192 \u505c\u6b62<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2460NewProject\u4f5c\u6210\uff08\u5148\u307b\u3069\u306e\u30d5\u30a9\u30eb\u30c0\u69cb\u6210\u306b\u5f93\u3044\u3001TokyoStationMarubots\uff09World\u540d\u306ftokyo_station_minimum\uff09<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"763\" height=\"676\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-2.png\" alt=\"\" class=\"wp-image-244\" style=\"aspect-ratio:1.1287015011073742;width:350px;height:auto\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-2.png 763w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-2-300x266.png 300w\" sizes=\"auto, (max-width: 763px) 100vw, 763px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u2461Tools\u30e1\u30cb\u30e5\u30fc\u304b\u3089Scene Tree\u3092\u8868\u793a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"551\" height=\"386\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-3.png\" alt=\"\" class=\"wp-image-246\" style=\"width:532px;height:auto\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-3.png 551w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-3-300x210.png 300w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u2462RectangleArena\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3000floorSize\u309230mx20m\u306b\u3059\u308b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"655\" height=\"709\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-4.png\" alt=\"\" class=\"wp-image-247\" style=\"aspect-ratio:0.9238453305524301;width:532px;height:auto\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-4.png 655w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-4-277x300.png 277w\" sizes=\"auto, (max-width: 655px) 100vw, 655px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u2463floorTileSize\u30921m,1m\u306b\u3059\u308b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"304\" height=\"433\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-5.png\" alt=\"\" class=\"wp-image-248\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-5.png 304w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-5-211x300.png 211w\" sizes=\"auto, (max-width: 304px) 100vw, 304px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u2464\u5168\u4f53\u3092\u898b\u3048\u308b\u3088\u3046\u306b\u3001RectangleArena\u3067\u53f3\u30af\u30ea\u30c3\u30af\u3000Move Viewpoint to Object\u3000\u306b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"595\" height=\"400\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-6.png\" alt=\"\" class=\"wp-image-249\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-6.png 595w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-6-300x202.png 300w\" sizes=\"auto, (max-width: 595px) 100vw, 595px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u2465\u30a8\u30ea\u30a2\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u8ffd\u52a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u5ea6webots\u3092\u9589\u3058\u3001tokyo_station_minimum.wbt\u3092\u30c6\u30ad\u30b9\u30c8\u30a8\u30c7\u30a3\u30bf\u3067\u958b\u304d\u3001\u30dc\u30c3\u30af\u30b9\u306a\u3069\u3092\u76f4\u63a5\u6307\u5b9a\u3057\u3066\u8ffd\u8a18\u3059\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># ------------------------------------------------------------<br># Tokyo Station minimum underground test area<br># ENU coordinate system:<br># X = east\/west, Y = north\/south, Z = height<br># ------------------------------------------------------------<br><br># \u5171\u901a\u58c1\u6750<br>DEF WALL_MATERIAL PBRAppearance {<br>  baseColor 0.68 0.72 0.76<br>  roughness 0.8<br>  metalness 0<br>}<br><br># \u5317\u897f\u5074\u58c11<br>Solid {<br>  translation -11.25 2 0.75<br>  children [<br>    Shape {<br>      appearance USE WALL_MATERIAL<br>      geometry Box {<br>        size 5.5 0.2 1.5<br>      }<br>    }<br>  ]<br>  name \"wall_north_west_1\"<br>  boundingObject Box {<br>    size 5.5 0.2 1.5<br>  }<br>}<br><br># \u5317\u897f\u5074\u58c12<br>Solid {<br>  translation -3.75 2 0.75<br>  children [<br>    Shape {<br>      appearance USE WALL_MATERIAL<br>      geometry Box {<br>        size 3.5 0.2 1.5<br>      }<br>    }<br>  ]<br>  name \"wall_north_west_2\"<br>  boundingObject Box {<br>    size 3.5 0.2 1.5<br>  }<br>}<br><br># \u5317\u6771\u5074\u58c1<br>Solid {<br>  translation 8 2 0.75<br>  children [<br>    Shape {<br>      appearance USE WALL_MATERIAL<br>      geometry Box {<br>        size 12 0.2 1.5<br>      }<br>    }<br>  ]<br>  name \"wall_north_east\"<br>  boundingObject Box {<br>    size 12 0.2 1.5<br>  }<br>}<br><br># \u5357\u897f\u5074\u58c1<br>Solid {<br>  translation -8 -2 0.75<br>  children [<br>    Shape {<br>      appearance USE WALL_MATERIAL<br>      geometry Box {<br>        size 12 0.2 1.5<br>      }<br>    }<br>  ]<br>  name \"wall_south_west\"<br>  boundingObject Box {<br>    size 12 0.2 1.5<br>  }<br>}<br><br># \u5357\u6771\u5074\u58c1<br>Solid {<br>  translation 8 -2 0.75<br>  children [<br>    Shape {<br>      appearance USE WALL_MATERIAL<br>      geometry Box {<br>        size 12 0.2 1.5<br>      }<br>    }<br>  ]<br>  name \"wall_south_east\"<br>  boundingObject Box {<br>    size 12 0.2 1.5<br>  }<br>}<br><br># \u5317\u5074\u7e26\u901a\u8def\u30fb\u5de6\u58c1<br>Solid {<br>  translation -2 6 0.75<br>  children [<br>    Shape {<br>      appearance USE WALL_MATERIAL<br>      geometry Box {<br>        size 0.2 8 1.5<br>      }<br>    }<br>  ]<br>  name \"wall_upper_left\"<br>  boundingObject Box {<br>    size 0.2 8 1.5<br>  }<br>}<br><br># \u5317\u5074\u7e26\u901a\u8def\u30fb\u53f3\u58c1<br>Solid {<br>  translation 2 6 0.75<br>  children [<br>    Shape {<br>      appearance USE WALL_MATERIAL<br>      geometry Box {<br>        size 0.2 8 1.5<br>      }<br>    }<br>  ]<br>  name \"wall_upper_right\"<br>  boundingObject Box {<br>    size 0.2 8 1.5<br>  }<br>}<br><br># \u5357\u5074\u7e26\u901a\u8def\u30fb\u5de6\u58c1<br>Solid {<br>  translation -2 -6 0.75<br>  children [<br>    Shape {<br>      appearance USE WALL_MATERIAL<br>      geometry Box {<br>        size 0.2 8 1.5<br>      }<br>    }<br>  ]<br>  name \"wall_lower_left\"<br>  boundingObject Box {<br>    size 0.2 8 1.5<br>  }<br>}<br><br># \u5357\u5074\u7e26\u901a\u8def\u30fb\u53f3\u58c1<br>Solid {<br>  translation 2 -6 0.75<br>  children [<br>    Shape {<br>      appearance USE WALL_MATERIAL<br>      geometry Box {<br>        size 0.2 8 1.5<br>      }<br>    }<br>  ]<br>  name \"wall_lower_right\"<br>  boundingObject Box {<br>    size 0.2 8 1.5<br>  }<br>}<br><br># ------------------------------------------------------------<br># \u8272\u4ed8\u304d\u533a\u57df<br># ------------------------------------------------------------<br><br># \u7159\u533a\u57df<br>Transform {<br>  translation -9 6 0.02<br>  children [<br>    Shape {<br>      appearance PBRAppearance {<br>        baseColor 0.75 0.12 0.12<br>        emissiveColor 0.18 0.02 0.02<br>        transparency 0.35<br>        roughness 1<br>        metalness 0<br>      }<br>      geometry Box {<br>        size 6 6 0.03<br>      }<br>      castShadows FALSE<br>    }<br>  ]<br>}<br><br># \u5171\u901a\u5b89\u5168\u533a\u57df\u6750<br>DEF SAFE_AREA_MATERIAL PBRAppearance {<br>  baseColor 0.1 0.55 0.28<br>  emissiveColor 0.02 0.12 0.05<br>  transparency 0.15<br>  roughness 1<br>  metalness 0<br>}<br><br># \u5f85\u6a5f\u6240<br>Transform {<br>  translation -12 0 0.025<br>  children [<br>    Shape {<br>      appearance USE SAFE_AREA_MATERIAL<br>      geometry Box {<br>        size 3.5 3.2 0.01<br>      }<br>      castShadows FALSE<br>    }<br>  ]<br>}<br><br># \u975e\u5e38\u53e3A<br>Transform {<br>  translation 13.2 0 0.025<br>  children [<br>    Shape {<br>      appearance USE SAFE_AREA_MATERIAL<br>      geometry Box {<br>        size 1.5 3 0.04<br>      }<br>      castShadows FALSE<br>    }<br>  ]<br>}<br><br># \u975e\u5e38\u53e3B<br>Transform {<br>  translation 0 8.8 0.025<br>  children [<br>    Shape {<br>      appearance USE SAFE_AREA_MATERIAL<br>      geometry Box {<br>        size 3 1.5 0.04<br>      }<br>      castShadows FALSE<br>    }<br>  ]<br>}<br><br># \u5e97\u8217\u533a\u753b<br>Transform {<br>  translation 0 -8.5 0.025<br>  children [<br>    Shape {<br>      appearance PBRAppearance {<br>        baseColor 0.24 0.36 0.58<br>        roughness 0.9<br>        metalness 0<br>      }<br>      geometry Box {<br>        size 3.5 2.5 0.04<br>      }<br>      castShadows FALSE<br>    }<br>  ]<br>}<br><br># ------------------------------------------------------------<br># \u969c\u5bb3\u7269\u3068\u8981\u6551\u8b77\u8005<br># ------------------------------------------------------------<br><br># \u304c\u308c\u304d\u30fb\u901a\u884c\u6b62\u3081<br>Solid {<br>  translation 0 -5 0.5<br>  children [<br>    Shape {<br>      appearance PBRAppearance {<br>        baseColor 0.55 0.25 0.08<br>        roughness 0.95<br>        metalness 0<br>      }<br>      geometry Box {<br>        size 3.6 1.2 1<br>      }<br>    }<br>  ]<br>  name \"blocked_area\"<br>  boundingObject Box {<br>    size 3.6 1.2 1<br>  }<br>}<br><br># \u8981\u6551\u8b77\u8005\u306e\u4eee\u30de\u30fc\u30ab\u30fc<br>Transform {<br>  translation -9 6 0.45<br>  children [<br>    Shape {<br>      appearance PBRAppearance {<br>        baseColor 0.8 0.05 0.65<br>        emissiveColor 0.25 0.01 0.18<br>        roughness 0.55<br>        metalness 0<br>      }<br>      geometry Sphere {<br>        radius 0.45<br>      }<br>    }<br>  ]<br>}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"626\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-7-1024x626.png\" alt=\"\" class=\"wp-image-251\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-7-1024x626.png 1024w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-7-300x184.png 300w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-7-768x470.png 768w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-7.png 1110w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8d64\u8272\u30fb\u534a\u900f\u660e \u7159\u533a\u57df<br>\u7d2b\u8272\u306e\u7403 \u8981\u6551\u8b77\u8005<br>\u7dd1\u8272 \u5f85\u6a5f\u6240\u30fb\u975e\u5e38\u53e3<br>\u6a59\u8272 \u304c\u308c\u304d\u30fb\u901a\u884c\u6b62\u3081<br>\u9752\u8272 \u5e97\u8217\u533a\u753b<br>\u7070\u8272 \u901a\u8def\u58c1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2466\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30b9\u30c8\u30c3\u30d7\u3057Time\u3092\uff10\u306b\u5dfb\u304d\u623b\u3057<br>\u2467\u30b7\u30fc\u30f3\u306bTurtleBot3Burger\u3092\u8ffd\u52a0<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"954\" height=\"555\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-8.png\" alt=\"\" class=\"wp-image-254\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-8.png 954w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-8-300x175.png 300w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-8-768x447.png 768w\" sizes=\"auto, (max-width: 954px) 100vw, 954px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b7\u30fc\u30f3\u30c4\u30ea\u30fc\u3067\u5c55\u958b\u3057\u3001\u6b21\u306e\u5024\u306b\u3002<br>translation -12 0 0.02\u3000\uff08\u5f85\u6a5f\u5834\u6240\u3002\u5e8a\u304b\u3089\u5c11\u30570.02\u4e0a\uff09<br>rotation 0 0 1 0<br>name &#8220;search_maru&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2468\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u4f5c\u6210\uff08python\uff09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">File\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u3000New\u2192Robot Controller\uff08Pyrhon\u3067\uff09\u3092\u9078\u3076<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"462\" height=\"229\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-9.png\" alt=\"\" class=\"wp-image-256\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-9.png 462w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-9-300x149.png 300w\" sizes=\"auto, (max-width: 462px) 100vw, 462px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Language\uff1aPython<br>Name\uff1asearch_maru_controller<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u306b\u3088\u308a\u81ea\u52d5\u7684\u306bcontrller\u30d5\u30a9\u30eb\u30c0\u3068\u30d5\u30a1\u30a4\u30eb\u304c\u4f5c\u6210\u3055\u308c\u308b<br>D:\\TokyoStationMarubots\\<br>\u2514\u2500 controllers<br>\u2514\u2500 search_maru_controller<br>\u2514\u2500 search_maru_controller.py<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30c6\u30ad\u30b9\u30c8\u30a8\u30c7\u30a3\u30bf\u3067\u30d5\u30a1\u30a4\u30eb\u304c\u958b\u304f\uff08serch_maru_controller.py )<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"\"\"\u63a2\u7d22\u4e38\uff1a\u5f85\u6a5f\u6240\u304b\u3089\u4e2d\u592e\u3078\u524d\u9032\u3059\u308b\u6700\u521d\u306e\u5236\u5fa1\u30d7\u30ed\u30b0\u30e9\u30e0\u3002\"\"\"<br><br>from controller import Robot<br><br><br>robot = Robot()<br>time_step = int(robot.getBasicTimeStep())<br><br># TurtleBot3 Burger\u306e\u5de6\u53f3\u8eca\u8f2a<br>left_motor = robot.getDevice(\"left wheel motor\")<br>right_motor = robot.getDevice(\"right wheel motor\")<br><br># \u901f\u5ea6\u5236\u5fa1\u30e2\u30fc\u30c9\u306b\u5207\u308a\u66ff\u3048\u308b<br>left_motor.setPosition(float(\"inf\"))<br>right_motor.setPosition(float(\"inf\"))<br><br># \u958b\u59cb\u6642\u306f\u505c\u6b62<br>left_motor.setVelocity(0.0)<br>right_motor.setVelocity(0.0)<br><br>start_time = robot.getTime()<br><br>while robot.step(time_step) != -1:<br>    elapsed = robot.getTime() - start_time<br><br>    # \u7d048\u79d2\u9593\u76f4\u9032<br>    if elapsed &lt; 8.0:<br>        left_motor.setVelocity(3.0)<br>        right_motor.setVelocity(3.0)<br>    else:<br>        # 8\u79d2\u5f8c\u306b\u505c\u6b62<br>        left_motor.setVelocity(0.0)<br>        right_motor.setVelocity(0.0)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">TurtleBot3 Burger\u306e\u6700\u5927\u8eca\u8f2a\u901f\u5ea6\u306f\u30e2\u30c7\u30eb\u4e0a <code>6.67 rad\/s<\/code> \u306a\u306e\u3067\u3001\u3053\u3053\u3067\u306f\u63a7\u3048\u3081\u306b <code>3.0 rad\/s<\/code> \u3068\u3057\u3066\u3044\u308b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2469\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u9078\u629e<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b7\u30fc\u30f3\u30c4\u30ea\u30fc\u3067\u3001\u3053\u306e\u30ed\u30dc\u30c3\u30c8\uff08TurtleBot3Burger&#8221;serch_maru&#8221;)\u3092\u958b\u304d\u3001controller\u3067\u4eca\u4f5c\u6210\u3057\u305fserch_maru_controller\u3092\u9078\u629e\u3059\u308b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"274\" height=\"655\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-10.png\" alt=\"\" class=\"wp-image-259\" style=\"width:213px;height:auto\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-10.png 274w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-10-125x300.png 125w\" sizes=\"auto, (max-width: 274px) 100vw, 274px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u246aWorld\u30ea\u30ed\u30fc\u30c9\u3057\u3066\u3001\u30d7\u30ec\u30a4\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b<br>\u5f85\u6a5f\u5834\u6240\u304b\u3089\uff18\u79d2\u307e\u3063\u3059\u3050\u52d5\u3044\u3066\u6b62\u307e\u308b\u30ed\u30dc\u30c3\u30c8\u3092\u89b3\u5bdf\u3067\u304d\u308b\uff08\u5de6\u30de\u30a6\u30b9\u30c9\u30e9\u30c3\u30b0\u3067\u30ab\u30e1\u30e9\u659c\u3081\uff09<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"941\" height=\"493\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-11.png\" alt=\"\" class=\"wp-image-261\" style=\"aspect-ratio:1.908790929858702;width:529px;height:auto\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-11.png 941w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-11-300x157.png 300w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-11-768x402.png 768w\" sizes=\"auto, (max-width: 941px) 100vw, 941px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u246b\u56de\u8ee2\u3092\u4e0e\u3048\u308b<br>\u6b21\u306f<strong>\u6642\u9593\u3067\u306f\u306a\u304f\u3001\u8eca\u8f2a\u306e\u56de\u8ee2\u91cf\u3067\u8ddd\u96e2\u306890\u5ea6\u65cb\u56de\u3092\u5236\u5fa1<\/strong>\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TurtleBot3 Burger\u306b\u306f\u3001\u6700\u521d\u304b\u3089\u5de6\u53f3\u306e\u8eca\u8f2a\u30bb\u30f3\u30b5\u30fc <code>left wheel sensor<\/code>\u3001<code>right wheel sensor<\/code> \u304c\u5165\u3063\u3066\u3044\u308b\u3002\u8eca\u8f2a\u534a\u5f84\u306f0.033m\u3001\u5de6\u53f3\u8f2a\u306e\u9593\u9694\u306f0.16m\u3002PositionSensor\u306f\u8eca\u8f2a\u306e\u56de\u8ee2\u89d2\u3092\u30e9\u30b8\u30a2\u30f3\u3067\u53d6\u5f97\u3067\u304d\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5f85\u6a5f\u6240 (-12, 0)\n    \u2193 \u6771\u30785m\n\u7159\u533a\u57df\u5165\u53e3 (-7, 0)\n    \u2193 \u5de690\u5ea6\n\u5317\u30786m\n    \u2193 \u5de690\u5ea6\n\u897f\u30782m\n    \u2193\n\u8981\u6551\u8b77\u8005 (-9, 6)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u30d7\u30ed\u30b0\u30e9\u30e0\u66f8\u304d\u63db\u3048<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"\"\"\u63a2\u7d22\u4e38\uff1a\u8eca\u8f2a\u30a8\u30f3\u30b3\u30fc\u30c0\u30fc\u3092\u4f7f\u3063\u3066\u8981\u6551\u8b77\u8005\u5730\u70b9\u307e\u3067\u79fb\u52d5\u3059\u308b\u3002\"\"\"\n\nimport math\nfrom controller import Robot\n\n\nrobot = Robot()\ntime_step = int(robot.getBasicTimeStep())\n\n# \u30e2\u30fc\u30bf\u30fc\nleft_motor = robot.getDevice(\"left wheel motor\")\nright_motor = robot.getDevice(\"right wheel motor\")\n\n# \u8eca\u8f2a\u4f4d\u7f6e\u30bb\u30f3\u30b5\u30fc\nleft_sensor = robot.getDevice(\"left wheel sensor\")\nright_sensor = robot.getDevice(\"right wheel sensor\")\n\nleft_sensor.enable(time_step)\nright_sensor.enable(time_step)\n\n# \u901f\u5ea6\u5236\u5fa1\u30e2\u30fc\u30c9\nleft_motor.setPosition(float(\"inf\"))\nright_motor.setPosition(float(\"inf\"))\n\nleft_motor.setVelocity(0.0)\nright_motor.setVelocity(0.0)\n\n# TurtleBot3 Burger\u306e\u5bf8\u6cd5\nWHEEL_RADIUS = 0.033   # \u8eca\u8f2a\u534a\u5f84&#91;m]\nAXLE_LENGTH = 0.160   # \u5de6\u53f3\u8f2a\u306e\u9593\u9694&#91;m]\n\nSTRAIGHT_SPEED = 6.0  # \u76f4\u9032\u6642\u306e\u8eca\u8f2a\u901f\u5ea6&#91;rad\/s]\nTURN_SPEED = 3.0      # \u65cb\u56de\u6642\u306e\u8eca\u8f2a\u901f\u5ea6&#91;rad\/s]\n\n# \u79fb\u52d5\u5de5\u7a0b\nsegments = &#91;\n    {\n        \"name\": \"\u7159\u533a\u57df\u5165\u53e3\u307e\u3067\u6771\u30785m\",\n        \"type\": \"straight\",\n        \"value\": 5.0,\n    },\n    {\n        \"name\": \"\u5317\u65b9\u5411\u3078\u5de690\u5ea6\u65cb\u56de\",\n        \"type\": \"turn_left\",\n        \"value\": math.pi \/ 2,\n    },\n    {\n        \"name\": \"\u7159\u533a\u57df\u5185\u3092\u5317\u30786m\",\n        \"type\": \"straight\",\n        \"value\": 6.0,\n    },\n    {\n        \"name\": \"\u8981\u6551\u8b77\u8005\u65b9\u5411\u3078\u5de690\u5ea6\u65cb\u56de\",\n        \"type\": \"turn_left\",\n        \"value\": math.pi \/ 2,\n    },\n    {\n        \"name\": \"\u8981\u6551\u8b77\u8005\u307e\u3067\u897f\u30782m\",\n        \"type\": \"straight\",\n        \"value\": 2.0,\n    },\n]\n\n\ndef stop_robot():\n    \"\"\"\u5de6\u53f3\u306e\u8eca\u8f2a\u3092\u505c\u6b62\u3059\u308b\u3002\"\"\"\n    left_motor.setVelocity(0.0)\n    right_motor.setVelocity(0.0)\n\n\n# \u6700\u521d\u306e\u30bb\u30f3\u30b5\u30fc\u5024\u304c\u53d6\u5f97\u3067\u304d\u308b\u307e\u30671\u30b9\u30c6\u30c3\u30d7\u9032\u3081\u308b\nif robot.step(time_step) == -1:\n    raise SystemExit\n\nsegment_index = 0\nsegment_started = False\nmission_reported = False\n\nstart_left = 0.0\nstart_right = 0.0\ntarget_rotation = 0.0\npause_until = 0.0\n\nwhile robot.step(time_step) != -1:\n    # \u5168\u5de5\u7a0b\u7d42\u4e86\n    if segment_index &gt;= len(segments):\n        stop_robot()\n\n        if not mission_reported:\n            print(\"===================================\")\n            print(\"VICTIM_FOUND\")\n            print(\"\u63a2\u7d22\u4e38\uff1a\u8981\u6551\u8b77\u8005\u5730\u70b9\u306b\u5230\u7740\")\n            print(\"\u60f3\u5b9a\u5ea7\u6a19\uff1ax=-9.0, y=6.0\")\n            print(\"===================================\")\n            mission_reported = True\n\n        continue\n\n    # \u5de5\u7a0b\u9593\u306e\u77ed\u3044\u505c\u6b62\n    if robot.getTime() &lt; pause_until:\n        stop_robot()\n        continue\n\n    segment = segments&#91;segment_index]\n\n    # \u65b0\u3057\u3044\u5de5\u7a0b\u306e\u958b\u59cb\n    if not segment_started:\n        start_left = left_sensor.getValue()\n        start_right = right_sensor.getValue()\n\n        if segment&#91;\"type\"] == \"straight\":\n            # \u8ddd\u96e2\u00f7\u8eca\u8f2a\u534a\u5f84\uff1d\u5fc5\u8981\u306a\u8eca\u8f2a\u56de\u8ee2\u89d2\n            target_rotation = segment&#91;\"value\"] \/ WHEEL_RADIUS\n\n            left_motor.setVelocity(STRAIGHT_SPEED)\n            right_motor.setVelocity(STRAIGHT_SPEED)\n\n        elif segment&#91;\"type\"] == \"turn_left\":\n            # \u305d\u306e\u5834\u65cb\u56de\u3067\u5404\u8eca\u8f2a\u304c\u9032\u3080\u5186\u5f27\u9577\n            wheel_arc = (AXLE_LENGTH \/ 2.0) * segment&#91;\"value\"]\n            target_rotation = wheel_arc \/ WHEEL_RADIUS\n\n            left_motor.setVelocity(-TURN_SPEED)\n            right_motor.setVelocity(TURN_SPEED)\n\n        print(f\"\u958b\u59cb\uff1a{segment&#91;'name']}\")\n        segment_started = True\n\n    # \u3053\u306e\u5de5\u7a0b\u3067\u5de6\u53f3\u8f2a\u304c\u56de\u8ee2\u3057\u305f\u89d2\u5ea6\n    left_progress = abs(left_sensor.getValue() - start_left)\n    right_progress = abs(right_sensor.getValue() - start_right)\n\n    average_progress = (left_progress + right_progress) \/ 2.0\n\n    # \u76ee\u6a19\u56de\u8ee2\u91cf\u3078\u5230\u9054\n    if average_progress &gt;= target_rotation:\n        stop_robot()\n\n        print(f\"\u5b8c\u4e86\uff1a{segment&#91;'name']}\")\n\n        segment_index += 1\n        segment_started = False\n\n        # \u6163\u6027\u3092\u843d\u3061\u7740\u304b\u305b\u308b\u305f\u30810.4\u79d2\u505c\u6b62\n        pause_until = robot.getTime() + 0.4<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u30e2\u30fc\u30bf\u30fc\u306f<code>setPosition(float(\"inf\"))<\/code>\u306b\u3057\u3066\u304b\u3089\u901f\u5ea6\u3092\u4e0e\u3048\u308b\u3068\u3001\u901f\u5ea6\u5236\u5fa1\u30e2\u30fc\u30c9\u306b\u306a\u308b\u3002\u4eca\u56de\u306e\u30b3\u30fc\u30c9\u3067\u306fPositionSensor\u306e\u56de\u8ee2\u89d2\u304b\u3089\u3001\u8d70\u884c\u8ddd\u96e2\u3068\u65cb\u56de\u89d2\u3092\u5224\u5b9a\u3057\u3066\u3044\u308b\u3002\u5b9f\u884c\u5f8c\u3001\u30b3\u30f3\u30bd\u30fc\u30eb\u306bprint\u6587\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"808\" height=\"842\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-12.png\" alt=\"\" class=\"wp-image-264\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-12.png 808w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-12-288x300.png 288w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-12-768x800.png 768w\" sizes=\"auto, (max-width: 808px) 100vw, 808px\" \/><\/figure>\n\n\n\n<h3 id=\"Step2\" class=\"wp-block-heading\">\u7b2c2\u6bb5\u968e\uff1a2\u4f53(SEARCH,RELAY)\u3067\u901a\u4fe1\u3059\u308b<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;SEARCH] \u2192 VICTIM_FOUND \u2192 &#91;RELAY]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Webots\u3067\u306f\u9001\u4fe1\u5074\u306b<code><strong>Emitter<\/strong><\/code>\u3001\u53d7\u4fe1\u5074\u306b<code><strong>Receiver<\/strong><\/code>\u3092\u642d\u8f09\u3057\u3001\u540c\u3058\u30c1\u30e3\u30f3\u30cd\u30eb\u3092\u8a2d\u5b9a\u3059\u308b\u3002\u53cc\u65b9\u5411\u901a\u4fe1\u306b\u3059\u308b\u6bb5\u968e\u3067\u306f\u3001\u4e21\u65b9\u306e\u30ed\u30dc\u30c3\u30c8\u306bEmitter\u3068Receiver\u3092\u642d\u8f09\u3059\u308b\u3002<br>\u30b7\u30fc\u30f3\u30c4\u30ea\u30fc\u3067\u3001serch_maru\u3092\u30b3\u30d4\u30fc\u30da\u30fc\u30b9\u30c8\u3002relay_maru\u3092\u6e96\u5099\u3059\u308b\u3002<br>translation -12 1.2 0<br>rotation 0 0 1 0<br>name &#8220;relay_maru&#8221;<br>controller &#8220;&#8221;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u30ef\u30fc\u30eb\u30c9\u30d5\u30a1\u30a4\u30eb\u3078\u901a\u4fe1\u6a5f\u5668\uff08Relay)\u3092\u8ffd\u52a0<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ef\u30fc\u30eb\u30c9\u3092\u4fdd\u5b58\u3057\u3066\u3001\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30e1\u30e2\u5e33\u3067\u958b\u304f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>D:\\TokyoStationMarubots\\worlds\\tokyo_station_minimum.wbt<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u63a2\u7d22\u4e38\u306e\u8a18\u8ff0\u3092\u4fee\u6b63<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a2\u7d22\u4e38\u306e\u90e8\u5206\u3092\u691c\u7d22\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>name \"search_maru\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u73fe\u5728\u3001\u304a\u304a\u3080\u306d\u6b21\u306e\u5f62\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TurtleBot3Burger {\n  translation -12 0 0\n  rotation 0 0 1 0\n  name \"search_maru\"\n  controller \"search_maru_controller\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3092\u6b21\u306b\u7f6e\u304d\u63db\u3048\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TurtleBot3Burger {\n  translation -12 0 0\n  rotation 0 0 1 0\n  name \"search_maru\"\n  controller \"search_maru_controller\"\n  extensionSlot &#91;\n    Emitter {\n      name \"emitter\"\n      channel 1\n      range -1\n    }\n  ]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>range -1<\/code>\u306f\u3001\u4eca\u56de\u306e\u57fa\u790e\u5b9f\u9a13\u3067\u306f\u901a\u4fe1\u8ddd\u96e2\u3092\u5236\u9650\u3057\u306a\u3044\u8a2d\u5b9a\u306e\u305f\u3081\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u203bTurtleBot3 Burger\u306e<code>extensionSlot<\/code>\u306b\u306f\u3001\u30bb\u30f3\u30b5\u30fc\u3084\u901a\u4fe1\u6a5f\u5668\u306a\u3069\u306e\u30ce\u30fc\u30c9\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3002\u660e\u793a\u7684\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u6a19\u6e96\u306eLiDAR\u306f\u4e00\u6642\u7684\u306b\u5916\u308c\u308b\u304c\u3001\u73fe\u5728\u306e\u901a\u4fe1\u5b9f\u9a13\u306b\u306f\u5f71\u97ff\u306a\u3057\u3002\u5f8c\u3067LiDAR\u3068\u901a\u4fe1\u6a5f\u5668\u3092\u4f75\u8a2d\u3059\u308b\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u901a\u4fe1\u4e38\u306e\u8a18\u8ff0\u3092\u4fee\u6b63<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b21\u306b\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>name \"relay_maru\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3092\u691c\u7d22\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u306e\u90e8\u5206\u3092\u6b21\u306e\u5f62\u306b\u3059\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TurtleBot3Burger {\n  translation -12 1.2 0\n  rotation 0 0 1 0\n  name \"relay_maru\"\n  controller \"relay_maru_controller\"\n  extensionSlot &#91;\n    Receiver {\n      name \"receiver\"\n      channel 1\n    }\n  ]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u5b58\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ctrl + S<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u901a\u4fe1\u4e38\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u4f5c\u308b<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>File\n\u2192 New\n\u2192 New Robot Controller...<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Language\uff1aPython\nName\uff1arelay_maru_controller<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f5c\u6210\u3055\u308c\u305f\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>D:\\TokyoStationMarubots\n\u2514\u2500 controllers\n   \u2514\u2500 relay_maru_controller\n      \u2514\u2500 relay_maru_controller.py<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3092\u958b\u304d\u3001\u5185\u5bb9\u3092\u3059\u3079\u3066\u6b21\u306b\u7f6e\u304d\u63db\u3048\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"\"\"\u901a\u4fe1\u4e38\uff1a\u63a2\u7d22\u4e38\u304b\u3089\u8981\u6551\u8b77\u8005\u767a\u898b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3059\u308b\u3002\"\"\"\n\nimport json\nfrom controller import Robot\n\n\nrobot = Robot()\ntime_step = int(robot.getBasicTimeStep())\n\n# \u901a\u4fe1\u4e38\u306f\u4eca\u56de\u306f\u79fb\u52d5\u305b\u305a\u3001\u5f85\u6a5f\u6240\u3067\u505c\u6b62\u3059\u308b\nleft_motor = robot.getDevice(\"left wheel motor\")\nright_motor = robot.getDevice(\"right wheel motor\")\n\nleft_motor.setPosition(float(\"inf\"))\nright_motor.setPosition(float(\"inf\"))\n\nleft_motor.setVelocity(0.0)\nright_motor.setVelocity(0.0)\n\n# \u53d7\u4fe1\u6a5f\nreceiver = robot.getDevice(\"receiver\")\nreceiver.enable(time_step)\nreceiver.setChannel(1)\n\nprint(\"===================================\")\nprint(\"\u901a\u4fe1\u4e38\uff1a\u53d7\u4fe1\u5f85\u6a5f\u3092\u958b\u59cb\")\nprint(\"\u30c1\u30e3\u30f3\u30cd\u30eb\uff1a1\")\nprint(\"===================================\")\n\nwhile robot.step(time_step) != -1:\n    # \u540c\u3058\u30b9\u30c6\u30c3\u30d7\u5185\u306b\u8907\u6570\u5c4a\u3044\u305f\u5834\u5408\u3082\u3001\u3059\u3079\u3066\u51e6\u7406\u3059\u308b\n    while receiver.getQueueLength() &gt; 0:\n        raw_message = receiver.getString()\n        signal_strength = receiver.getSignalStrength()\n\n        # \u8aad\u307f\u7d42\u308f\u3063\u305f\u30d1\u30b1\u30c3\u30c8\u3092\u30ad\u30e5\u30fc\u304b\u3089\u53d6\u308a\u9664\u304f\n        receiver.nextPacket()\n\n        try:\n            message = json.loads(raw_message)\n        except json.JSONDecodeError:\n            print(f\"\u901a\u4fe1\u4e38\uff1aJSON\u3068\u3057\u3066\u89e3\u6790\u3067\u304d\u306a\u3044\u30c7\u30fc\u30bf\u3092\u53d7\u4fe1\uff1a{raw_message}\")\n            continue\n\n        message_type = message.get(\"type\", \"UNKNOWN\")\n        sender = message.get(\"sender\", \"UNKNOWN\")\n\n        print(\"-----------------------------------\")\n        print(\"\u901a\u4fe1\u4e38\uff1a\u30e1\u30c3\u30bb\u30fc\u30b8\u53d7\u4fe1\")\n        print(f\"\u9001\u4fe1\u5143\uff1a{sender}\")\n        print(f\"\u7a2e\u985e\u3000\uff1a{message_type}\")\n        print(f\"\u4fe1\u53f7\u5f37\u5ea6\uff1a{signal_strength:.6f}\")\n\n        if message_type == \"VICTIM_FOUND\":\n            position = message.get(\"position\", &#91;None, None])\n\n            print(\"\u8981\u6551\u8b77\u8005\u767a\u898b\u60c5\u5831\u3092\u53d7\u4fe1\u3057\u307e\u3057\u305f\")\n            print(f\"\u4f4d\u7f6e\uff1ax={position&#91;0]}, y={position&#91;1]}\")\n            print(\"\u6b21\u306e\u51e6\u7406\uff1a\u6551\u8b77\u4e38\u30fb\u904b\u642c\u4e38\u3078\u51fa\u52d5\u8981\u8acb\")\n\n        print(\"-----------------------------------\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Receiver\u306ePython API\u3067\u306f\u3001<code>getQueueLength()<\/code>\u3067\u672a\u51e6\u7406\u30d1\u30b1\u30c3\u30c8\u3092\u78ba\u8a8d\u3057\u3001<code>getString()<\/code>\u3067\u6587\u5b57\u5217\u3092\u53d6\u5f97\u3057\u3001\u51e6\u7406\u5f8c\u306b<code>nextPacket()<\/code>\u3067\u6b21\u306e\u30d1\u30b1\u30c3\u30c8\u3078\u9032\u3081\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u5b58\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ctrl + S<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u63a2\u7d22\u4e38\u306b\u9001\u4fe1\u51e6\u7406\u3092\u8ffd\u52a0\u3059\u308b<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e2\u5b58\u306e\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>D:\\TokyoStationMarubots\n\u2514\u2500 controllers\n   \u2514\u2500 search_maru_controller\n      \u2514\u2500 search_maru_controller.py<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3092\u958b\u304f\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u5148\u982d\u306bjson\u3092\u8ffd\u52a0<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u73fe\u5728\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import math\nfrom controller import Robot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3068\u306a\u3063\u3066\u3044\u308b\u90e8\u5206\u3092\u3001\u6b21\u306b\u3059\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import json\nimport math\nfrom controller import Robot<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Emitter\u3092\u53d6\u5f97\u3059\u308b<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u30e2\u30fc\u30bf\u30fc\u3084\u30bb\u30f3\u30b5\u30fc\u3092\u53d6\u5f97\u3057\u3066\u3044\u308b\u90e8\u5206\u306e\u5f8c\u3078\u3001\u6b21\u3092\u8ffd\u52a0\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u901a\u4fe1\u6a5f\u5668\nemitter = robot.getDevice(\"emitter\")\nemitter.setChannel(1)<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u6700\u5f8c\u306e\u5230\u7740\u51e6\u7406\u3092\u4fee\u6b63\u3059\u308b<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u5f8c\u306eprint\u6587\u306e\u3068\u3053\u308d\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if not mission_reported:\n    print(\"===================================\")\n    print(\"VICTIM_FOUND\")\n    print(\"\u63a2\u7d22\u4e38\uff1a\u8981\u6551\u8b77\u8005\u5730\u70b9\u306b\u5230\u7740\")\n    print(\"\u60f3\u5b9a\u5ea7\u6a19\uff1ax=-9.0, y=6.0\")\n    print(\"===================================\")\n    mission_reported = True<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3092\u6b21\u306b\u7f6e\u304d\u63db\u3048\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if not mission_reported:\n    message = {\n        \"sender\": \"SEARCH\",\n        \"receiver\": \"RELAY\",\n        \"type\": \"VICTIM_FOUND\",\n        \"position\": &#91;-9.0, 6.0],\n        \"priority\": 1,\n        \"simulation_time\": round(robot.getTime(), 3),\n    }\n\n    message_text = json.dumps(message)\n\n    emitter.send(message_text)\n\n    print(\"===================================\")\n    print(\"VICTIM_FOUND\")\n    print(\"\u63a2\u7d22\u4e38\uff1a\u8981\u6551\u8b77\u8005\u5730\u70b9\u306b\u5230\u7740\")\n    print(\"\u60f3\u5b9a\u5ea7\u6a19\uff1ax=-9.0, y=6.0\")\n    print(\"\u63a2\u7d22\u4e38\uff1a\u901a\u4fe1\u4e38\u3078\u767a\u898b\u60c5\u5831\u3092\u9001\u4fe1\")\n    print(message_text)\n    print(\"===================================\")\n\n    mission_reported = True<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Webots R2025a\u306ePython\u7248Emitter\u306f\u3001<code><strong>send()<\/strong><\/code>\u3078\u6587\u5b57\u5217\u307e\u305f\u306fbytes\u3092\u6e21\u305b\u307e\u3059\u3002\u4eca\u56de\u306fJSON\u6587\u5b57\u5217\u3092\u9001\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u5b58\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ctrl + S<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u30ef\u30fc\u30eb\u30c9\u3092\u518d\u8aad\u307f\u8fbc\u307f\u3059\u308b<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>\u2460 \u63a2\u7d22\u4e38\u304c\u5f85\u6a5f\u6240\u3092\u51fa\u767a\n\u2461 \u4e2d\u592e\u901a\u8def\u3092\u79fb\u52d5\n\u2462 \u5317\u5074\u3078\u65cb\u56de\n\u2463 \u7159\u533a\u57df\u3078\u9032\u5165\n\u2464 \u8981\u6551\u8b77\u8005\u4ed8\u8fd1\u3078\u5230\u7740\n\u2465 \u63a2\u7d22\u4e38\u304cVICTIM_FOUND\u3092\u9001\u4fe1\n\u2466 \u901a\u4fe1\u4e38\u304c\u5f85\u6a5f\u6240\u3067\u53d7\u4fe1<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u6210\u529f\u6642\u306eConsole\u8868\u793a<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a2\u7d22\u4e38\u5074\u3067\u306f\u3001\u6700\u5f8c\u306b\u6b21\u306e\u3088\u3046\u306b\u8868\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>VICTIM_FOUND\n\u63a2\u7d22\u4e38\uff1a\u8981\u6551\u8b77\u8005\u5730\u70b9\u306b\u5230\u7740\n\u60f3\u5b9a\u5ea7\u6a19\uff1ax=-9.0, y=6.0\n\u63a2\u7d22\u4e38\uff1a\u901a\u4fe1\u4e38\u3078\u767a\u898b\u60c5\u5831\u3092\u9001\u4fe1\n{\"sender\": \"SEARCH\", \"receiver\": \"RELAY\", ...}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u4fe1\u4e38\u5074\u3067\u306f\u6b21\u304c\u8868\u793a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u901a\u4fe1\u4e38\uff1a\u30e1\u30c3\u30bb\u30fc\u30b8\u53d7\u4fe1\n\u9001\u4fe1\u5143\uff1aSEARCH\n\u7a2e\u985e\u3000\uff1aVICTIM_FOUND\n\u8981\u6551\u8b77\u8005\u767a\u898b\u60c5\u5831\u3092\u53d7\u4fe1\u3057\u307e\u3057\u305f\n\u4f4d\u7f6e\uff1ax=-9.0, y=6.0\n\u6b21\u306e\u51e6\u7406\uff1a\u6551\u8b77\u4e38\u30fb\u904b\u642c\u4e38\u3078\u51fa\u52d5\u8981\u8acb<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Webots\u306e\u6a19\u6e96<code>radio<\/code>\u901a\u4fe1\u306f\u3001\u58c1\u306b\u3088\u308b\u906e\u853d\u3092\u8003\u616e\u305b\u305a\u3001\u540c\u3058\u30c1\u30e3\u30f3\u30cd\u30eb\u306eReceiver\u3078\u9001\u4fe1\u3059\u308b\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u4eca\u56de\u306f\u7d14\u7c8b\u306b\u300c\u8907\u6570\u30ed\u30dc\u30c3\u30c8\u9593\u306e\u60c5\u5831\u9023\u643a\u300d\u304c\u6210\u7acb\u3059\u308b\u304b\u3092\u78ba\u8a8d\u3067\u304d\u308b\u3002\u901a\u4fe1\u8ddd\u96e2\u3001\u66f2\u304c\u308a\u89d2\u3001\u58c1\u306b\u3088\u308b\u6e1b\u8870\u306f\u5f8c\u306e\u6bb5\u968e\u3067\u8ffd\u52a0\u3059\u308b\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"943\" height=\"946\" src=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-13.png\" alt=\"\" class=\"wp-image-270\" style=\"aspect-ratio:0.9968292818601546;width:830px;height:auto\" srcset=\"https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-13.png 943w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-13-300x300.png 300w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-13-150x150.png 150w, https:\/\/udri.or.jp\/topics\/wp-content\/uploads\/2026\/07\/image-13-768x770.png 768w\" sizes=\"auto, (max-width: 943px) 100vw, 943px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u203b\u300c\u53d7\u4fe1\u6642\u306e\u4fe1\u53f7\u5f37\u5ea6\u300d\u306f\u3001\u63a2\u7d22\u4e38\u304b\u3089\u5c4a\u3044\u305f\u96fb\u6ce2\u304c\u901a\u4fe1\u4e38\u306e\u4f4d\u7f6e\u3067\u3069\u306e\u7a0b\u5ea6\u5f37\u3044\u304b\u3092\u8868\u3059\u3001Webots\u4e0a\u306e\u6a21\u64ec\u5024\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Webots\u306e\u6a19\u6e96\u8a2d\u5b9a\u3067\u306f\u3001\u9001\u4fe1\u6a5f\u3068\u53d7\u4fe1\u6a5f\u306e\u8ddd\u96e2\u3068\u306e\u95a2\u4fc2\u3067\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4fe1\u53f7\u5f37\u5ea6 = 1 \u00f7 \u8ddd\u96e2\u00b2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3068\u3057\u3066\u8a08\u7b97\u3055\u308c\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u3048\u3070\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u8ddd\u96e2 1m  \u2192 \u4fe1\u53f7\u5f37\u5ea6 1.0\n\u8ddd\u96e2 2m  \u2192 \u4fe1\u53f7\u5f37\u5ea6 0.25\n\u8ddd\u96e2 5m  \u2192 \u4fe1\u53f7\u5f37\u5ea6 0.04\n\u8ddd\u96e210m  \u2192 \u4fe1\u53f7\u5f37\u5ea6 0.01<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u8868\u793a\u3055\u308c\u305f\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4fe1\u53f7\u5f37\u5ea6\uff1a0.022517<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u306f\u3001\u9001\u4fe1\u6642\u306e\u63a2\u7d22\u4e38\u3068\u901a\u4fe1\u4e38\u306e\u8ddd\u96e2\u304c<strong>\u7d046.7m<\/strong>\u3060\u3063\u305f\u3053\u3068\u306b\u76f8\u5f53\u3059\u308b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7b2c3\u6bb5\u968e\uff1a5\u4f53\u306b\u5897\u3084\u3059<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5171\u901a\u6a5f\u4f53\u3092\u8907\u88fd\u3057\u3001\u5f79\u5272\u540d\u3060\u3051\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GUIDE\nRELAY\nSEARCH\nRESCUE\nCARRIER<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5404\u30ed\u30dc\u30c3\u30c8\u304c\u7570\u306a\u308b\u76ee\u7684\u5730\u3078\u79fb\u52d5\u3067\u304d\u308c\u3070\u3001\u6700\u521d\u306e\u30de\u30eb\u30c1\u30ed\u30dc\u30c3\u30c8\u5b9f\u9a13\u304c\u6210\u7acb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7b2c4\u6bb5\u968e\uff1a\u901a\u884c\u6b62\u3081\u3068\u7d4c\u8def\u5909\u66f4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8def\u3092\u30ce\u30fc\u30c9\u3068\u30ea\u30f3\u30af\u3067\u8868\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A \u2500 B \u2500 C\n    \u2502\n    D \u2500 E<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u304c\u308c\u304d\u304c\u767a\u751f\u3057\u305f\u3089\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>B-C \u901a\u884c\u4e0d\u53ef<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u306b\u5909\u66f4\u3057\u3001\u5225\u7d4c\u8def\u3092\u63a2\u7d22\u3057\u307e\u3059\u3002\u6700\u521d\u306fDijkstra\u6cd5\u307e\u305f\u306fA*\u6cd5\u3067\u5341\u5206\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7b2c5\u6bb5\u968e\uff1a\u901a\u4fe1\u4e38\u306e\u4e2d\u7d99\u884c\u52d5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u4fe1\u4e38\u306f\u3001\u63a2\u7d22\u4e38\u304b\u3089\u53d7\u3051\u53d6\u3063\u305f\u4fe1\u53f7\u5f37\u5ea6\u3092\u76e3\u8996\u3057\u307e\u3059\u3002Webots Receiver\u306f\u3001\u53d7\u4fe1\u30d1\u30b1\u30c3\u30c8\u306b\u3064\u3044\u3066\u4fe1\u53f7\u5f37\u5ea6\u3068\u9001\u4fe1\u5143\u65b9\u5411\u3092\u8fd4\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4fe1\u53f7\u5f37\u5ea6\u304c\u4f4e\u4e0b\n\u2193\n\u63a2\u7d22\u4e38\u65b9\u5411\u3078\u5c11\u3057\u79fb\u52d5\n\u2193\n\u6307\u4ee4\u6240\u3068\u306e\u901a\u4fe1\u3082\u78ba\u8a8d\n\u2193\n\u4e21\u8005\u3068\u901a\u4fe1\u3067\u304d\u308b\u5730\u70b9\u3067\u505c\u6b62<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3067\u300c\u901a\u4fe1\u4e38\u3089\u3057\u3044\u52d5\u304d\u300d\u304c\u751f\u307e\u308c\u307e\u3059\u3002<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1.SLAM\u3068\u306f 2.\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u6bd4\u8f03 3.Webots 4.\u30c6\u30b9\u30c8\u30a8\u30ea\u30a2 \u3000 \u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-229","post","type-post","status-publish","format-standard","hentry","category-notes"],"_links":{"self":[{"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/posts\/229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/comments?post=229"}],"version-history":[{"count":28,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/posts\/229\/revisions"}],"predecessor-version":[{"id":277,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/posts\/229\/revisions\/277"}],"wp:attachment":[{"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/media?parent=229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/categories?post=229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/tags?post=229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}