{"id":5102,"date":"2022-11-06T10:29:59","date_gmt":"2022-11-06T01:29:59","guid":{"rendered":"http:\/\/shinku.ddo.jp\/wordpress\/?page_id=5102"},"modified":"2024-03-23T12:15:10","modified_gmt":"2024-03-23T03:15:10","slug":"ros2%e3%83%af%e3%83%bc%e3%82%af%e3%82%b9%e3%83%9a%e3%83%bc%e3%82%b9%e3%81%ae%e4%bd%9c%e6%88%90%ef%bd%9e%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0%e5%8b%95%e4%bd%9c","status":"publish","type":"page","link":"http:\/\/shinku.ddo.jp\/wordpress\/?page_id=5102","title":{"rendered":"ROS2:\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u4f5c\u6210\uff5e\u30d7\u30ed\u30b0\u30e9\u30e0\u52d5\u4f5c"},"content":{"rendered":"\n<p>\u203bPython\u30d9\u30fc\u30b9\u306e\u8a71\u3067\u3059\u3002C\u306e\u60c5\u5831\u306f\u5c11\u306a\u3059\u304e\u3066\u8ae6\u3081\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u203b\u5fc5\u305a\u6587\u5b57\u30b3\u30fc\u30c9\u306fUTF-8\u3001\u6539\u884c\u306fLF\u3001\u3064\u307e\u308a\u6628\u4ecalinux\u306e\u6a19\u6e96\u7684\u306a\u30b3\u30fc\u30c9\u3067\u8a18\u8f09\u9858\u3044\u307e\u3059\u3002\u7279\u306b\u3001\u500b\u3005\u306e\u60c5\u5831\u3092\u30b3\u30d4\u30fc\u3057\u3066\u4f7f\u3046\u65b9\u3084\u3001Windows\u3084\u3092\u4f7f\u3063\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u308b\u4eba\u306f\u8981\u6ce8\u610f\u3002\uff08Mac\uff1f\u306a\u306b\u305d\u308c\uff1f\u79c1\u306e\u524d\u3067\u305d\u306e\u8a00\u8449\u3092\u8a00\u3046\u306a\u3002\uff09<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p>\u30fb\u30ef\u30fc\u30af\u30d5\u30a9\u30eb\u30c0\u306e\u4f5c\u6210<\/p>\n\n\n\n<p>\u307e\u305a\u3001ROS2(Foxy)\u306e\u958b\u767a\u652f\u63f4\u30c4\u30fc\u30eb\u300ccolcon\u300d\u306f\u4f55\u3089\u304b\u306e\u30ef\u30fc\u30af\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u3053\u3067\u306f\u3001\u3088\u304f\u4f7f\u308f\u308c\u308b\u540d\u524d\u300ccolcon_ws\u300d\u3068\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u3057\u3066\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u914d\u7f6e\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\\colcon_ws\\\n\u3000\u3000\u3000\u3000\u3000\u2514src\\<\/code><\/pre>\n\n\n\n<p>\u57fa\u672c\u7684\u306b\u306fsrc\u306e\u4e2d\u3067\u4f5c\u696d\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u30fb\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u308b\u3002<\/p>\n\n\n\n<p>\u3000\u7528\u8a9e\u306f\u3055\u3066\u304a\u304d\u3001\u4eca\u56de\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u69cb\u6210\u3067\u30a4\u30b4\u304b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image.png\" alt=\"\" class=\"wp-image-5589\" width=\"748\" height=\"440\"\/><\/a><\/figure>\n\n\n\n<p>\u3000\u3053\u306e\u305f\u3081\u306bROS2\u5074\u3067\u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u306f\uff13\u3064<\/p>\n\n\n\n<p>\u3000\u2460ROS2\u30ce\u30fc\u30c9\uff1acp_mbed_io_stab\u306e\u5b9f\u4f53\u3068\u306a\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30d1\u30c3\u30b1\u30fc\u30b8<\/p>\n\n\n\n<p>\u3000\u2461\u30c8\u30d4\u30c3\u30af\u901a\u4fe1\u5b9a\u7fa9\uff1ambed2rasppi\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u30d1\u30c3\u30b1\u30fc\u30b8<\/p>\n\n\n\n<p>\u3000\u2462\u30c8\u30d4\u30c3\u30af\u901a\u4fe1\u5b9a\u7fa9\uff1arasppi2mbed\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u30d1\u30c3\u30b1\u30fc\u30b8<\/p>\n\n\n\n<p>\u3000\u3053\u3046\u3044\u3046\u3082\u3093\u3060\u3068\u601d\u3063\u3066\u304f\u3060\u3055\u3044\uff01<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u4ee5\u4e0b\u3067\u2460\u2461\u2462\u4f5c\u6210\u65b9\u6cd5\u3092\u8a18\u8f09\u3057\u307e\u3059\u304c\u3001\u306a\u304b\u306a\u304b\u3080\u3064\u304b\u3057\u3044\u6240\u3082\u3042\u308b\u3068\u601d\u3046\u306e\u3067\u3001(\u3069\u3046\u305b\u4f5c\u308b\u3060\u3051\u306e\u4f5c\u696d\u306b\u306a\u308b\u3057\u3002\uff09\u2460\u2461\u2462\u3092\u4f5c\u6210\u3057\u305fcolcon_ws\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3054\u3068\u56fa\u3081\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u2192<strong>\u53f3\u30af\u30ea\u30c3\u30af\u3067\u4fdd\u5b58<\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u4ee5\u4e0b\u3001\u4f5c\u308a\u65b9\u3067\u3059\u304c\u3001\u30e1\u30a4\u30f3\u306f\u3082\u3061\u308d\u3093\u2460\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u901a\u4fe1\u5b9a\u7fa9\u304c\u306a\u3044\u3068\u8a71\u306b\u306a\u3089\u3093\u306e\u3067\u3001\u2461\u2462\u3092\u5148\u306b\u4f5c\u6210\u3057\u307e\u3059<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2>\u2461\u3001\u2462\u306e\u4f5c\u6210<\/h2>\n\n\n\n<p>\u3000\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u5b9a\u7fa9\u306b\u3064\u3044\u3066\u306f\u30ce\u30fc\u30c9\u306f\u5b9a\u7fa9\u305b\u305a\u30d1\u30c3\u30b1\u30fc\u30b8\u3057\u304b\u4f5c\u3089\u306a\u3044\u306e\u3067\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/colcon_ws\/src$ros2 pkg create mbed2rasppi<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">_msgs<\/mark>\n~\/colcon_ws\/src$ros2 pkg create rasppi2mbed<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">_msgs<\/mark><\/code><\/pre>\n\n\n\n<p>\u3068\u3057\u307e\u3059\u3002\u540c\u3058\u304f\u66f8\u5f0f\u306f<\/p>\n\n\n\n<p>ros2 pkg create &lt;package_name&gt;<\/p>\n\n\n\n<p>\u3067\u3059\u304c\u3001\u306a\u305c\u3001\u300c_msg\u300d\u3092\u3064\u3051\u308b\u306e\u304b\uff1f\u2192\u77e5\u3089\u3093\u308f\uff01<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-1.png\"><img decoding=\"async\" loading=\"lazy\" width=\"591\" height=\"133\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-1.png\" alt=\"\" class=\"wp-image-5590\"\/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3068\u306b\u304b\u304f\u3001\u3053\u3093\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u51fa\u308b\u306f\u305a\u3067\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-5.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1016\" height=\"1226\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-5.png\" alt=\"\" class=\"wp-image-5599\"\/><\/a><\/figure>\n\n\n\n<p>\u3059\u308b\u3068\u3001\u305d\u308c\u305e\u308c\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30d5\u30a9\u30eb\u30c0\u304c\u3067\u304d\u3066\u3044\u307e\u3059\uff08\u9752\u5b57\u90e8\u5206\u306f\u2460\u2461\u3067\u7570\u306a\u308b\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/colcon_ws\/src\/<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">raspp22mbed_msgs<\/mark>\/\n                       \u251c<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">package.xml<\/mark>\n                       \u251c<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">CMakeLists.txt<\/mark>\n                       \u251cinclude\/\u30fb\u30fb\u30fb(\u4ee5\u4e0b\u7565\uff09\n                       \u251csrc\/\u30fb\u30fb\u30fb(\u4ee5\u4e0b\u7565\uff09\n                       \u2514<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">msg\/<\/mark>\n                         <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">\u2514<strong>R<\/strong>asppi2mbed.msg<\/mark>\n<\/code><\/pre>\n\n\n\n<p>\u8d64\u90e8\u5206\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u5909\u66f4(\u8ffd\u8a18\uff09\u3059\u308b\u3002<\/p>\n\n\n\n<p>\u305d\u3057\u3066\u7dd1\u90e8\u5206\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3068\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u308b\u3002\uff08\u30d5\u30a1\u30a4\u30eb\u540d\u4e00\u6587\u5b57\u76ee\u304c\u5927\u6587\u5b57\u3067\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\uff09<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">\u30fb\u7dd1\u90e8\u5206\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001\u4ee5\u4e0b\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210<\/mark><\/p>\n\n\n\n<p>(Rsappi2mbed.msg)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>uint8 v_bluestat_rpi1\r\nfloat32 v_bluestat_rpi2\n<\/code><\/pre>\n\n\n\n<p>\u6ce8\u610f\uff1a\u5f15\u7528\u3059\u308b\u3068\u304d\u306f\u6ce8\u610f\u3002\u30b3\u30fc\u30c9\u306futf-8,\u6539\u884c\u306fLF<\/p>\n\n\n\n<p>(Mbed2rasppi.msg)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>uint8 v_bluestat1\r\nfloat32 v_bluestat2\n<\/code><\/pre>\n\n\n\n<p>\u6ce8\u610f\uff1a\u5f15\u7528\u3059\u308b\u3068\u304d\u306f\u6ce8\u610f\u3002\u30b3\u30fc\u30c9\u306futf-8,\u6539\u884c\u306fLF<\/p>\n\n\n\n<p>\u5bdf\u3057\u306e\u3044\u3044\u65b9\u306f\u308f\u304b\u3063\u305f\u304b\u3068\u601d\u3044\u307e\u3059\u304c\u3001\u901a\u4fe1\u3057\u305f\u3044\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5897\u3084\u3057\u305f\u3044\u306a\u3089\u3070\u3001\u3053\u3053\u3092\u5897\u3084\u305b\u3070\u3088\u3044<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u30fbpackage.xml<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-7.png\"><img decoding=\"async\" loading=\"lazy\" width=\"590\" height=\"192\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-7.png\" alt=\"\" class=\"wp-image-5601\"\/><\/a><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>  &lt;build_depend>rosidl_default_generators&lt;\/build_depend>\r\n  &lt;exec_depend>rosidl_default_runtime&lt;\/exec_depend>\r\n  &lt;member_of_group>rosidl_interface_packages&lt;\/member_of_group><\/code><\/pre>\n\n\n\n<p>\u6ce8\u610f\uff1a\u30a4\u30f3\u30c7\u30f3\u30c8\u305d\u308d\u3048\u308b\u3053\u3068<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u30fbCMakeLists.txt<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-11.png\"><img decoding=\"async\" loading=\"lazy\" width=\"540\" height=\"339\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-11.png\" alt=\"\" class=\"wp-image-5605\"\/><\/a><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>set(msg_files\r\n  \"<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">msg\/Rasppi2mbed.msg<\/mark>\"\r\n)\r\nrosidl_generate_interfaces(${PROJECT_NAME}\r\n  ${msg_files}\r\n)\r\n\r\nament_export_dependencies(rosidl_default_runtime)<\/code><\/pre>\n\n\n\n<p>\u6ce8\u610f\uff11\uff1a\u30a4\u30f3\u30c7\u30f3\u30c8\u305d\u308d\u3048\u308b\u3053\u3068<\/p>\n\n\n\n<p>\u6ce8\u610f\uff12\uff1a\u300c<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">msg\/Rasppi2mbed.msg<\/mark>\u300d\u306f\u2461\u2462\u3067\u5909\u66f4\u3059\u308b\u3053\u3068\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3053\u3053\u307e\u3067\u51fa\u6765\u305f\u3089\u3001\u2460\u306e\u4f5c\u6210\u3092\u3059\u308b\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2>\u2460\u306e\u4f5c\u6210\u3002<\/h2>\n\n\n\n<p>\u3000\u30ce\u30fc\u30c9\uff08ROS2\u4e0a\u306e\u4ed5\u4e8b\u306e\u5358\u4f4d\u3060\u3068\u601d\u3063\u3066\u304f\u3060\u3055\u3044\uff01\uff09\u306a\u306e\u3067\u3001\u30ce\u30fc\u30c9\u3082\u4f5c\u308b\u5ba3\u8a00\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$cd ~\/colcon_ws\/src\n~\/colcon_ws\/src$ros2 pkg  create --build-type ament_python --node-name cp_mbed_io_stab_node cp_mbed_io_stab\u3000<\/code><\/pre>\n\n\n\n<p>\u4e00\u5fdc\u66f8\u5f0f\u3092\u89e3\u8aac\u3059\u308b\u3068<\/p>\n\n\n\n<p>ros2 pkg create &#8211;build-type ament_python &#8211;node-name<\/p>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u6d41\u308c\u3066\u30fb\u30fb\u30fb<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-12.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1740\" height=\"1017\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-12.png\" alt=\"\" class=\"wp-image-5606\"\/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>\u7d50\u679c\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30d5\u30a9\u30eb\u30c0\u69cb\u6210\u304c\u4f5c\u3089\u308c\u308b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/colcon_ws\/src\/cp_mbed_io_stab\/\n                       \u251c<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">package.xml<\/mark>\n                       \u251csetup.cfg\n                       \u251csetup.py\n                       \u251cinclude\/\u30fb\u30fb\u30fb(\u4ee5\u4e0b\u7565\uff09\n                       \u251ctest\/\u30fb\u30fb\u30fb(\u4ee5\u4e0b\u7565\uff09\n                       \u251cresource\/\u30fb\u30fb\u30fb\uff08\u4ee5\u4e0b\u7565\uff09\n                       \u2514cp_mbed_io_stab\n                                 \u251c__init__.py\n                                 \u2514<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">cp_mbed_io_stab_node.py<\/mark><\/code><\/pre>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u30fbpackage.xml<\/mark>\u3092\u4ee5\u4e0b\u306e\u901a\u308a\u7de8\u96c6\u3059\u308b<\/p>\n\n\n\n<p>\u8d64\u56f2\u307f\u90e8\u5206\u3092\u633f\u5165\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-3.png\"><img decoding=\"async\" loading=\"lazy\" width=\"773\" height=\"326\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-3.png\" alt=\"\" class=\"wp-image-5593\"\/><\/a><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;build_depend>rosidl_default_generators&lt;\/build_depend>\n&lt;exec_depend>rosidl_default_runtime&lt;\/exec_depend>\n&lt;member_of_group>rosidl_interface_packages&lt;\/member_of_group><\/code><\/pre>\n\n\n\n<p>\u6ce8\u610f\uff1a\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u305d\u308d\u3048\u308b\u3053\u3068\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">\u30fbcp_mbed_io_stab_node.py<\/mark>\u306e\u8a18\u8f09\u3001\u7de8\u96c6<\/p>\n\n\n\n<p>\u3061\u3087\u3063\u3068\u3053\u3053\u3067\u89e3\u8aac\u3059\u308b\u3068\u5927\u5909\u306a\u306e\u3067\u3001\u307e\u305a\u306f\u63b2\u793a\u306e\u307f\u3002<\/p>\n\n\n\n<p>\u4eca\u56de\u4f7f\u3046\u306e\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30e1\u30c3\u30bb\u30fc\u30b8\u5b9a\u7fa9\u306e\u30ad\u30e2\u306b\u306a\u3063\u3066\u3044\u308b\u90e8\u5206\u306f\u8272\u3092\u5909\u3048\u3066\u304a\u304d\u307e\u3059\u3002\u6539\u9020\u6642\u306e\u53c2\u8003\u306b\u3069\u3046\u305e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\r\nimport rclpy\r\nfrom rclpy.node import Node\r\nfrom rclpy.qos import QoSProfile,ReliabilityPolicy,DurabilityPolicy\r\nfrom <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">mbed2rasppi_msgs.<\/mark>msg import <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Mbed2rasppi<\/mark>\r\nfrom <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">rasppi2mbed_msgs<\/mark>.msg import <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Rasppi2mbed<\/mark>\r\n\r\nimport time\r\n\r\n#----------\u30af\u30e9\u30b9\u5b9a\u7fa9-----------\r\nclass Central_Controller(Node):\r\n    \r\n    #\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf(\u521d\u671f\u5b9a\u7fa9)\r\n    def __init__(self):\r\n        \r\n        super().__init__(\"input_control\")\r\n        \r\n        self.v_rx_cntr:int = 0\r\n        self.v_bluestat1:int = 0\r\n        self.v_bluestat2:float = 0.0\r\n        self.v_bluestat_rpi1:int = 0\r\n        self.v_bluestat_rpi2:float = 0.0\r\n        \r\n        #\u901a\u4fe1\u54c1\u8cea\r\n        profile = QoSProfile(depth=10, reliability=rclpy.qos.ReliabilityPolicy.BEST_EFFORT,\\\r\n                    durability=rclpy.qos.DurabilityPolicy.VOLATILE)\r\n        \r\n        #\u9001\u4fe1\u8a2d\u5b9a\r\n        self.pub = self.create_publisher(<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Rasppi2mbed,'rasppi2mbed'<\/mark>,profile)\r\n        \r\n        #\u53d7\u4fe1\u8a2d\u5b9a\r\n        self.sub = self.create_subscription(<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Mbed2rasppi,'mbed2rasppi'<\/mark>,self.callback,profile) \r\n        \r\n    #\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\r\n    def callback(self,msg):\r\n       \r\n        msg_pub = Rasppi2mbed() \r\n        #----------------mbed2rasppi\u8cfc\u8aad\u5024\u306e\u8aad\u307f\u8fbc\u307f\r\n        self.v_bluestat1 = msg.v_bluestat1\r\n        self.v_bluestat2 = msg.v_bluestat2\r\n\r\n        #-------------------------\u6f14\u7b97\r\n        self.v_rx_cntr += 1\r\n        self.v_bluestat_rpi1 = self.v_bluestat1\r\n        self.v_bluestat_rpi2 = self.v_bluestat2\r\n\r\n        #-------------rasppi2mbed\u3078\u306e\u767a\u884c\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8---------------------------       \r\n        msg_pub.v_bluestat_rpi1 = self.v_bluestat_rpi1\r\n        msg_pub.v_bluestat_rpi2 = self.v_bluestat_rpi2\r\n\r\n        #----------------\u30b3\u30f3\u30bd\u30fc\u30eb\u3078\u306e\u30c7\u30fc\u30bf\u30e2\u30cb\u30bf------------------\r\n        print('rx_counter='+str(self.v_rx_cntr))\r\n        print('RX:v_bluestat1='+str(self.v_bluestat1),'v_bluestat2='+str(self.v_bluestat2))\r\n        print('TX:v_bluestat_rpi1='+str(self.v_bluestat_rpi1),'v_bluestat_rpi2='+str(self.v_bluestat_rpi2))\r\n        print('-------------------')\r\n                    \r\n        self.pub.publish(msg_pub)\r\n        \r\n# \u30e1\u30a4\u30f3\u95a2\u6570 \u3001\u3068\u3044\u3044\u3064\u3064\u901a\u4fe1\u5f85\u6a5f\u3055\u305b\u308b\u3060\u3051\u306a\u306e\u3067\u3001\u3053\u3053\u306f\u307b\u307c\u3044\u3058\u308b\u5fc5\u8981\u304c\u306a\u3044\u30cf\u30ba\u3002\r\ndef main():\r\n    \r\n    #RCL\u306e\u521d\u671f\u5316\u3092\u5b9f\u884c\r\n    rclpy.init()\r\n    \r\n    #\u30af\u30e9\u30b9\u3092\u30b3\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\r\n    node = Central_Controller()\r\n        \r\n    #\u30eb\u30fc\u30d7\u306b\u5165\u308anode\u306e\u51e6\u7406\u3092\u5b9f\u884c\u3055\u305b\u308b\r\n    rclpy.spin(node)\r\n    \r\n    #node\u3092\u7834\u58ca\r\n    node.destroy_node()\r\n    \r\n    #RCL\u3092\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\r\n    rclpy.shutdown()\r\n    \r\nif __name__ == '__main__':\r\n    main()\n\n<\/code><\/pre>\n\n\n\n<p>\u3053\u3093\u306a\u611f\u3058\u306b\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u3001\u2460\u306b\u3064\u3044\u3066\u306f\u3042\u3068\u306f\u30d3\u30eb\u30c9\u307e\u3061\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3053\u3053\u3067\u3001\u3053\u306e\u30ce\u30fc\u30c9\u306e\u5358\u4f53\u8a66\u9a13\u3063\u3066\u3067\u304d\u306a\u3044\u306e\u304b\u3063\u3066\u8a71\u306b\u306a\u308b\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u30ce\u30fc\u30c9\u306fmbed2raspppi\u3068\u3044\u3046\u30c8\u30d4\u30c3\u30af\u3092\u53d7\u3051\u308b\u3068\u4e00\u56de\u5b9f\u884c\u3057\u3066\u7d50\u679c\u3092rasppi2mbed\u3068\u3044\u3046\u30c8\u30d4\u30c3\u30af\u3068\u3057\u3066\u914d\u4fe1\u3059\u308b\u306e\u3067\u3001\u3053\u306e\u307e\u307e\u5358\u4f53\u3060\u3068\u305a\u3063\u3068\u5f85\u6a5f\u3057\u3066\u3057\u307e\u3046\u3002<\/p>\n\n\n\n<p>\u9006\u3092\u8a00\u3048\u3070\u3002mbed2rasppi\u3068\u3044\u3046\u30c8\u30d4\u30c3\u30af\u3092\u306f\u3044\u3066\u304f\u308c\u308b\u8ab0\u304b\u304c\u3044\u308c\u3070\u52d5\u304f\u3002<\/p>\n\n\n\n<p>\u306a\u306e\u3067\u3001\u4f8b\u3048\u3070\u3001\u300ctx_mbed2rasppi\u300d\u3068\u3044\u3046\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4e0a\u3068\u540c\u3058\u3088\u3046\u306b\u4f5c\u3063\u3066MBED2RASPPI\u30c8\u30d4\u30c3\u30af\u3092\u5b9a\u671f\u7684\u306b\u306f\u304b\u305b\u308c\u3070\u3088\u3044\u3002\u3053\u3093\u306a\u611f\u3058\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#cp_mbed_io_stab\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306e\u30b9\u30bf\u30d6\u3002\r\n\r\n#---------- include -----------\r\nimport rclpy\r\nfrom rclpy.node import Node\r\nfrom rclpy.qos import QoSProfile,ReliabilityPolicy,DurabilityPolicy\r\nfrom mbed2rasppi_msgs.msg import Mbed2rasppi\r\nfrom rasppi2mbed_msgs.msg import Rasppi2mbed\r\nimport time\r\n\r\n\r\n#----------\u30af\u30e9\u30b9\u5b9a\u7fa9-----------\r\nclass Data_Transmitter(Node):\r\n    \r\n    #\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\r\n    def __init__(self):\r\n        super().__init__(\"generator\")\r\n\r\n        self.v_tx_cntr:int = 0\r\n        self.v_bluestat1:int = 0\r\n        self.v_bluestat2:float = 0.0\r\n        self.v_bluestat_rpi1:int = 0\r\n        self.v_bluestat_rpi2:float = 0.0\r\n        \r\n        #\u901a\u4fe1\u54c1\u8cea\r\n        profile = QoSProfile(depth=10, reliability=rclpy.qos.ReliabilityPolicy.RELIABLE,\\\r\n                           durability=rclpy.qos.DurabilityPolicy.TRANSIENT_LOCAL)\r\n        \r\n        #\u9001\u4fe1\u8a2d\u5b9a\r\n        self.pub = self.create_publisher(Mbed2rasppi,'mbed2rasppi',profile) \r\n\r\n        #\u53d7\u4fe1\u8a2d\u5b9a\r\n        self.sub = self.create_subscription(Rasppi2mbed,'rasppi2mbed',self.sub_callback,profile)      \r\n        \r\n        #\u30bf\u30a4\u30de\u30fc\u8a2d\u5b9a\r\n        self.time_period = 0.1 #\u30bf\u30a4\u30de\u30fc\u5272\u308a\u8fbc\u307f\u5468\u671f&#91;sec]\r\n        self.tmr = self.create_timer(self.time_period, self.timer_callback) #\u30bf\u30a4\u30de\u30fc\u5272\u308a\u8fbc\u307f\u8a2d\u5b9a \r\n\r\n\r\n    #\u30bf\u30a4\u30de\u30fc\u7528\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\r\n    def timer_callback(self):\r\n        \r\n        msg_pub = Mbed2rasppi()\r\n             \r\n        self.v_tx_cntr += 1\r\n\r\n        #\u30c7\u30fc\u30bf\u9001\u4fe1\r\n        msg_pub.v_bluestat1 = 1\r\n        msg_pub.v_bluestat2 = 0.0\r\n\r\n\r\n        #\u6642\u523b\u53d6\u5f97&#91;ns]\r\n        #current_time = self.get_clock().now().nanoseconds\r\n        \r\n        #\u30b3\u30f3\u30bd\u30fc\u30eb\u4e0a\u306b\u6642\u9593\u3092\u8868\u793a\r\n        print('tx_counter='+str(self.v_tx_cntr))\r\n\r\n    \r\n        self.pub.publish(msg_pub)\r\n\r\n        \r\n    #\u53d7\u4fe1\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\r\n    def sub_callback(self,msg):\r\n        \r\n        self.v_bluestat_rpi1 = msg.v_bluestat_rpi1\r\n        self.v_bluestat_rpi2 = msg.v_bluestat_rpi2    \r\n\r\n        \r\n# \u30e1\u30a4\u30f3\u95a2\u6570 \u3001\u3068\u3044\u3044\u3064\u3064\u901a\u4fe1\u5f85\u6a5f\u3055\u305b\u308b\u3060\u3051\u306a\u306e\u3067\u3001\u3053\u3053\u306f\u307b\u307c\u3044\u3058\u308b\u5fc5\u8981\u304c\u306a\u3044\u30cf\u30ba\u3002\r\ndef main():\r\n    \r\n    #RCL\u306e\u521d\u671f\u5316\u3092\u5b9f\u884c\r\n    rclpy.init()\r\n    \r\n    #\u30af\u30e9\u30b9\u3092\u30b3\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\r\n    node = Data_Transmitter()\r\n    \r\n    #\u30eb\u30fc\u30d7\u306b\u5165\u308anode\u306e\u51e6\u7406\u3092\u5b9f\u884c\u3055\u305b\u308b\r\n    rclpy.spin(node)\r\n    \r\n    #node\u3092\u7834\u58ca\r\n    node.destroy_node()\r\n    \r\n    #RCL\u3092\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\r\n    rclpy.shutdown()\r\n    \r\nif __name__ == '__main__':\r\n    main()\r\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>\u25cf\u5358\u4f53\u30c6\u30b9\u30c8<\/p>\n\n\n\n<p>\u30d3\u30eb\u30c9\u3059\u308b\u3002<\/p>\n\n\n\n<p>\u3061\u3087\u3063\u3068\u3081\u3093\u3069\u3044\u3051\u3069\u3001\u3053\u3053\u304b\u3089\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u306f\u300c\uff08\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u8eab\u306f\u5225\u306b\u3044\u3044\u3051\u3069\uff09\u30d5\u30a1\u30a4\u30eb\u69cb\u6210\u3092\u5909\u3048\u305f\u3089\u300d\u30bf\u30fc\u30df\u30ca\u30eb\u518d\u8d77\u52d5\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>\u7406\u7531\u306f.\/bashrc\u306b\u57cb\u3081\u8fbc\u3093\u3060\u4ee5\u4e0b\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u8d70\u3089\u305b\u305f\u3044\u304b\u3089\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u304c\u30d5\u30a1\u30a4\u30eb\u69cb\u6210\u3092ROS2\u306b\u6559\u3048\u308b\u5f79\u76ee\u3092\u3057\u3066\u3044\u308b\u3063\u307d\u3044\u3002<\/p>\n\n\n\n<p>source \/opt\/ros\/foxy\/setup.bash<br \/>source ~\/colcon_ws\/install\/setup.bash<\/p>\n\n\n\n<p>(\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067\u6bce\u56de\u6253\u3064\u3068\u304b\u3001colcon build\u3068\u30bb\u30c3\u30c8\u306b\u3057\u305f\u30b9\u30af\u30ea\u30d7\u30c8\u4f5c\u3063\u3066\u3082\u69cb\u308f\u306a\u3044\u3067\u3059\u304c\uff01\uff09<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3068\u306b\u304b\u304f\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304f<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-13.png\"><img decoding=\"async\" loading=\"lazy\" width=\"858\" height=\"112\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-13.png\" alt=\"\" class=\"wp-image-5607\"\/><\/a><\/figure>\n\n\n\n<p>\u305d\u308a\u3083\u521d\u56de\u30d3\u30eb\u30c9\u3057\u3066\u3044\u306a\u3044\u304b\u3089\u3001\u305d\u3093\u306a\u30d5\u30a9\u30eb\u30c0\u306a\u3044\u3088\u306d\u3002\u3068\u3044\u3046\u308f\u3051\u3067\u3001\u4e00\u56de\u7121\u8996\u3057\u3066\u30d3\u30eb\u30c9<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-16.png\"><img decoding=\"async\" loading=\"lazy\" width=\"522\" height=\"264\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-16.png\" alt=\"\" class=\"wp-image-5610\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-14.png\"><img decoding=\"async\" loading=\"lazy\" width=\"805\" height=\"450\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-14.png\" alt=\"\" class=\"wp-image-5608\"\/><\/a><\/figure>\n\n\n\n<p>\u305f\u3044\u3066\u3044\u521d\u56de\u306f\u3053\u3093\u306a\u30ef\u30fc\u30cb\u30f3\u30b0\u306e\u5d50\u306b\u3042\u308b\u3093\u3067\u3059\u304c<\/p>\n\n\n\n<p>\u4e00\u56de\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u9589\u3058\u3066\u3082\u3046\u4e00\u56de\u3084\u308b\u3068<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-17.png\"><img decoding=\"async\" loading=\"lazy\" width=\"487\" height=\"313\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-17.png\" alt=\"\" class=\"wp-image-5611\"\/><\/a><\/figure>\n\n\n\n<p>\u3068\u3001\u30ef\u30fc\u30cb\u30f3\u30b0\u306a\u304f\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u4e00\u56de\u30d3\u30eb\u30c9\u304c\u8d70\u3063\u3066\u3001\u3042\u308b\u3079\u304d\u30d5\u30a1\u30a4\u30eb\u304c\u4f5c\u3089\u308c\u3066\u3001\u304b\u3064\u3001ros2\u304c\u305d\u306e\u5834\u6240\u3092\u899a\u3048\u305f\u304b\u3089\u3060\u3068\u601d\u3044\u307e\u3059\u304c\u3088\u304f\u308f\u304b\u3089\u3093\uff01<\/p>\n\n\n\n<p>\u30d3\u30eb\u30c9\u3057\u305f\u3089\u3001\u30b3\u30f3\u30bd\u30fc\u30eb\u3092\u3055\u3089\u306b\uff12\u3064\u958b\u3044\u3066\u305d\u308c\u305e\u308c\u3067\u4ee5\u4e0b\u5b9f\u884c<\/p>\n\n\n\n<p>ros2 run tx_mbed2rasppi tx_mbed2rasppi_node<\/p>\n\n\n\n<p>ros2 run cp_mbed_io_stab cp_mbed_io_stab_node<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-18.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1323\" height=\"492\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-18.png\" alt=\"\" class=\"wp-image-5612\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-19.png\"><img decoding=\"async\" loading=\"lazy\" width=\"1310\" height=\"769\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-19.png\" alt=\"\" class=\"wp-image-5613\"\/><\/a><\/figure>\n\n\n\n<p>\u5b9f\u884c\u3059\u308b\u3068\u3053\u3046\u306a\u308b\u3002<\/p>\n\n\n\n<p>\u3053\u3046\u306a\u308c\u3070\u3001\u5de6\uff08tx_mbed2rasppi_node\uff09\u304c\u767a\u884c\u3057\u305fMbed2rasppi\u306b\u3088\u308a\u3001\u53f3\uff08cp_mbed_io_stab_node\uff09\u304c\u52d5\u3044\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308b\u3002<\/p>\n\n\n\n<p>\u3064\u3044\u3067\u306b\u52d5\u3044\u3066\u3044\u308b\u30ce\u30fc\u30c9\u3068\u30c8\u30d4\u30c3\u30af\u3092\u898b\u3066\u307f\u3088\u3046<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-20.png\"><img decoding=\"async\" loading=\"lazy\" width=\"411\" height=\"225\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-20.png\" alt=\"\" class=\"wp-image-5614\"\/><\/a><\/figure>\n\n\n\n<p>\u3061\u3083\u3093\u3068\u52d5\u3044\u3066\u3044\u308b\u3068\u8a8d\u8b58\u3055\u308c\u3066\u3044\u308b\u3002<\/p>\n\n\n\n<p>\u3069\u3046\u305b\u306a\u3089\u3001\uff08cp_mbed_io_stab_node\uff09\u304c\u52d5\u3044\u305f\u7d50\u679c\u5410\u304d\u51fa\u3057\u3066\u3044\u308b\u306f\u305a\u306e\u30c8\u30d4\u30c3\u30af\u306e\u4e2d\u8eab\u3082\u898b\u3066\u307f\u3088\u3046<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ros2 topic echo rasppi2mbed<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-21.png\"><img decoding=\"async\" loading=\"lazy\" width=\"224\" height=\"327\" src=\"http:\/\/shinku.ddo.jp\/wordpress\/wp-content\/uploads\/2024\/03\/image-21.png\" alt=\"\" class=\"wp-image-5615\"\/><\/a><\/figure>\n\n\n\n<p>Rasppi2mbed.msg\u3067\u5b9a\u7fa9\u3057\u305f\u60c5\u5831\u304c\u3061\u3083\u3093\u3068\u5410\u304d\u51fa\u3055\u308c\u3066\u3044\u308b<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3053\u308c\u3067\u30e9\u30ba\u30d1\u30a4\u5074\u306e\u6e96\u5099\u306f\u5b8c\u4e86\u306e\u306f\u305a\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u203b\u3061\u306a\u307f\u306b\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u524a\u9664\u306f\u8a72\u5f53\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u6d88\u3057\u3066\u30bf\u30fc\u30df\u30ca\u30eb\u518d\u8d77\u52d5\uff08\u305d\u308c\u3092ROS\uff12\u306b\u899a\u3048\u3055\u305b\u3066\uff09\u3067OK<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u203b\u3042\u3068\u3001\u30ab\u30b9\u30bf\u30e0\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u5909\u66f4\u3057\u305f\u306e\u306b\u53cd\u6620\u3055\u308c\u306a\u3044\u3068\u304b\u3001\u5909\u306b\u306a\u3063\u305f\u3068\u304b\u3044\u3046\u5834\u5408\u306f<\/p>\n\n\n\n<p>colcon_ws\u5185\u306e<\/p>\n\n\n\n<p>install<\/p>\n\n\n\n<p>build<\/p>\n\n\n\n<p>log<\/p>\n\n\n\n<p>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6d88\u3057\u3066\u30bf\u30fc\u30df\u30ca\u30eb\u518d\u8d77\u52d5\u3059\u308b\u3068\u6848\u5916\u6b63\u5e38\u306b\u52d5\u304f\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p class=\"has-text-align-center\">\u3053\u3053\u304b\u3089\u4e0b\u306f\u904e\u53bb\u306e\u8a66\u884c\u932f\u8aa4\u306e\u8a18\u9332<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p>\u25cf\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u4f5c\u6210<br \/>\u74b0\u5883\u69cb\u7bc9\u306e\u4e00\u7dd2<br \/>\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u7686\u3067\u4f7f\u3046\u74b0\u5883\u306a\u3089\u3070\u306a\u308b\u3079\u304f\u53c2\u8003\u66f8\u901a\u308a\u306b\u3057\u305f\u65b9\u304c\u3044\u3044\u3068\u5b58\u3058\u307e\u3059<br \/>\u6700\u5f8c\u306esauce\u884c\u306f\u7aef\u672b\u3092\u958b\u304f\u305f\u3073\u306b\u5fc5\u8981\u306b\u306a\u308b\u306e\u3067\u3001.\/.bashrc\u306b\u767b\u9332\u3057\u3066\u304a\u304f\u3068\u4fbf\u5229\u304b\u306a\u3002<\/p>\n\n\n\n<p>mkdir -p ~\/colcon_ws\/src<br \/>cd ~\/colcon_ws<br \/>source ~\/colcon_ws\/install\/setup.bash<\/p>\n\n\n\n<p>\u25cf\u30d1\u30c3\u30b1\u30fc\u30b8\uff08\u7ba1\u7406\u5358\u4f4d\u3001\u7ba1\u7406\u30d5\u30a9\u30eb\u30c0\u30fc\u3068\u8a00\u3063\u3066\u3082\u3044\u3044\u304b\u3082\u3057\u308c\u306a\u3044\uff09\u306e\u4f5c\u6210<br \/>\u3082\u3061\u308d\u3093\uff12\u884c\u76ee\u304c\u30ad\u30e2\u3067\u3059<br \/>\u3053\u3053\u3067\u306fpythonw\u30e9\u30a4\u30d6\u30e9\u30ea\u4f7f\u7528\u3057\u3066\u3001hello\u3068\u3044\u3046\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u308b\u3053\u3068\u3092\u6307\u5b9a\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3082\u3001ros\u30b5\u30dd\u30fc\u30c8\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059<\/p>\n\n\n\n<p>cd ~\/colcon_ws\/src<br \/>ros2 pkg create &#8211;build-type ament_python hello<\/p>\n\n\n\n<p>\u25cf\u300csetup.py\u300d\u3067\u5229\u7528\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u6307\u5b9a\u3057\u307e\u3059\uff08\u8aac\u660e\u306f\u5225\u9014\uff09<br \/>\u25cf\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u66f8\u304d\u307e\u3059\uff08\u8aac\u660e\u306f\u5225\u9014\uff09<\/p>\n\n\n\n<p>\u25cf\u30d3\u30eb\u30c9\u3057\u3057\u307e\u3059<br \/>\u30d3\u30eb\u30c9\u3057\u305f\u3089\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u518d\u8a2d\u5b9a\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059<\/p>\n\n\n\n<p>cd ~\/colcon_ws<br \/>colcon build<br \/>source ~\/colcon_ws\/install\/setup.bash<\/p>\n\n\n\n<p>\u25cf\u5b9f\u884c\u3057\u307e\u3059<br \/>\u3000Hello\u30d1\u30c3\u30b1\u30fc\u30b8\u306ehello_node\u3068\u3044\u3046\u30ce\u30fc\u30c9\u3092\u5b9f\u884c\u305b\u3088\u3063\u3066\u3053\u3068\u306b\u306a\u308a\u307e\u3059<\/p>\n\n\n\n<p>ros2 run hello hello_node<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u203bPython\u30d9\u30fc\u30b9\u306e\u8a71\u3067\u3059\u3002C\u306e\u60c5\u5831\u306f\u5c11\u306a\u3059\u304e\u3066\u8ae6\u3081\u307e\u3057\u305f\u3002 \u203b\u5fc5\u305a\u6587\u5b57\u30b3\u30fc\u30c9\u306fUTF-8\u3001\u6539\u884c\u306fLF\u3001\u3064\u307e\u308a\u6628\u4ecalinux\u306e\u6a19\u6e96\u7684\u306a\u30b3\u30fc\u30c9\u3067\u8a18\u8f09\u9858\u3044\u307e\u3059\u3002\u7279\u306b\u3001\u500b\u3005\u306e\u60c5\u5831\u3092\u30b3\u30d4\u30fc\u3057\u3066\u4f7f\u3046\u65b9\u3084\u3001Windows\u3084\u3092\u4f7f\u3063\u3066 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/shinku.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/5102"}],"collection":[{"href":"http:\/\/shinku.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/shinku.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/shinku.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/shinku.ddo.jp\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5102"}],"version-history":[{"count":9,"href":"http:\/\/shinku.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/5102\/revisions"}],"predecessor-version":[{"id":5619,"href":"http:\/\/shinku.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/5102\/revisions\/5619"}],"wp:attachment":[{"href":"http:\/\/shinku.ddo.jp\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}