{"id":3989,"date":"2026-05-22T10:48:08","date_gmt":"2026-05-22T01:48:08","guid":{"rendered":"https:\/\/www.kdel.org\/wp\/?p=3989"},"modified":"2026-05-22T18:34:08","modified_gmt":"2026-05-22T09:34:08","slug":"myagv%ef%bc%8cros2%e5%8c%96%ef%bc%8c-cmd_vel","status":"publish","type":"post","link":"https:\/\/www.kdel.org\/wp\/?p=3989","title":{"rendered":"myAGV\uff0cROS2\u5316\uff0c\/cmd_vel"},"content":{"rendered":"<p>teleop\u3092\u5b9f\u884c\u3057\u305f\u5f8c\u306btopic list\u3092\u898b\u3066\u3044\u305f\u305f\u3081\/cmd_vel\u304c\u3042\u308b\u3088\u3046\u306b\u898b\u3048\u3066\u3044\u307e\u3057\u305f\uff0e<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n(myenv) wataru@NucBoxG5:~$ docker run -it --rm \\\r\n  --net=host \\\r\n  --env RMW_IMPLEMENTATION=rmw_cyclonedds_cpp \\\r\n  osrf\/ros:galactic-desktop\r\nroot@NucBoxG5:\/# ros2 topic list\r\n\/accel\/filtered\r\n\/diagnostics\r\n\/imu\r\n\/joint_states\r\n\/odom\r\n\/odometry\/filtered\r\n\/parameter_events\r\n\/robot_description\r\n\/rosout\r\n\/scan\r\n\/set_pose\r\n\/tf\r\n\/tf_static\r\n\/voltage\r\n\/voltage_backup\r\n\/ydlidar_ros2_driver_node\/transition_event\r\n<\/pre>\n<p>\u3044\u306a\u3044\u3067\u3059\u306d\u2026\uff0e<br \/>\n\u8d77\u52d5\u30ed\u30b0\u3092\u8ffd\u3044\u304b\u3051\u3066\u307f\u305f\u6240\uff0c<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n(ros2 galactic py3)er@er:~\/myagv_ros2$ ros2 launch myagv_odometry myagv_active.launch.py\r\n&#x5B;INFO] &#x5B;launch]: All log files can be found below \/home\/er\/.ros\/log\/2026-05-22-09-40-24-525547-er-32658\r\n&#x5B;INFO] &#x5B;launch]: Default logging verbosity is set to INFO\r\n&#x5B;INFO] &#x5B;ydlidar_ros2_driver_node-7]: process started with pid &#x5B;32698]\r\n&#x5B;INFO] &#x5B;myagv_odometry_node-1]: process started with pid &#x5B;32677]\r\n...\r\n&#x5B;myagv_odometry_node-1] Serial buffer cleared successfully\r\n...\r\n&#x5B;ERROR] &#x5B;myagv_odometry_node-1]: process has died &#x5B;pid 32893, exit code -6, cmd &#039;\/home\/er\/myagv_ros2\/install\/myagv_odometry\/lib\/myagv_odometry\/myagv_odometry_node --ros-args -r __node:=myagv_odometry_node&#039;].\r\n...\r\n&#x5B;myagv_odometry_node-1] &#x5B;INFO] &#x5B;1779414400.608016034] &#x5B;rclcpp]: signal_handler(signal_value=2)\r\n&#x5B;myagv_odometry_node-1] terminate called after throwing an instance of &#039;boost::wrapexcept&lt;boost::system::system_error&gt;&#039;\r\n&#x5B;myagv_odometry_node-1]   what():  read: Interrupted system call\r\n...\r\n<\/pre>\n<p>\u30b3\u30b1\u3066\u307e\u3059\u306d\u2026\uff0e<\/p>\n<hr>\n<p>\u539f\u56e0\u5224\u660e\uff0e<br \/>\n\u5927\u304d\u306a\u539f\u56e0\u306f\uff0cROS2\u306e\u30bd\u30fc\u30b9\u306fjetson nano\u7528\u3067\u3057\u305f\u306e\u3067\uff0c\u63a5\u7d9a\u30dd\u30fc\u30c8\u304c\u9055\u3046\u306e\u3068\u901a\u4fe1\u30b3\u30de\u30f3\u30c9\u304c\u7570\u306a\u3063\u3066\u3044\u305f\u3000\u3068\u3044\u3046\u90e8\u5206\u3067\u3059\uff0e<br \/>\n\u5dee\u5206\u306f\u4ee5\u4e0b\u3067\u3059\uff0e<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\ndiff --git a\/myagv_odometry\/src\/myAGV.cpp b\/myagv_odometry\/src\/myAGV.cpp\r\nindex d513bea..3f5d431 100755\r\n--- a\/myagv_odometry\/src\/myAGV.cpp\r\n+++ b\/myagv_odometry\/src\/myAGV.cpp\r\n@@ -8,7 +8,7 @@\r\n const unsigned char header&#x5B;2] = { 0xfe, 0xfe };\r\n \r\n boost::asio::io_service iosev;\r\n-boost::asio::serial_port sp(iosev, &quot;\/dev\/ttyS0&quot;);\r\n+boost::asio::serial_port sp(iosev, &quot;\/dev\/ttyAMA2&quot;);\r\n \r\n std::array&lt;double, 36&gt; odom_pose_covariance = {\r\n     {1e-9, 0, 0, 0, 0, 0,\r\n@@ -179,6 +179,7 @@ bool MyAGV::readSpeed()\r\n     imu_data.angular_velocity.y = ((buf&#x5B;index + 11] + buf&#x5B;index + 12] * 256 ) - 10000) * 0.1;\r\n     imu_data.angular_velocity.z = ((buf&#x5B;index + 13] + buf&#x5B;index + 14] * 256 ) - 10000) * 0.1;\r\n \r\n+    \/*\r\n     uint8_t highNibble = (buf&#x5B;index + 15] &gt;&gt; 4) &amp; 0x0F;  \r\n \r\n     Battery_voltage = (float)buf&#x5B;index + 16] \/ 10.0f;\r\n@@ -212,6 +213,7 @@ bool MyAGV::readSpeed()\r\n                                         \/\/  &lt;&lt; imu_data.linear_acceleration.x &lt;&lt; &quot;,&quot; &lt;&lt; imu_data.linear_acceleration.y &lt;&lt; &quot;,&quot; &lt;&lt; imu_data.linear_acceleration.z &lt;&lt; &quot;|&quot;\r\n                                     \/\/  &lt;&lt; imu_data.angular_velocity.x &lt;&lt; &quot;,&quot; &lt;&lt; imu_data.angular_velocity.y &lt;&lt; &quot;,&quot; &lt;&lt; imu_data.angular_velocity.z &lt;&lt; std::endl;\r\n     \/\/std::cout &lt;&lt; &quot;current pos is: &quot; &lt;&lt; x &lt;&lt; &quot;,&quot; &lt;&lt; y &lt;&lt; &quot;,&quot; &lt;&lt; theta &lt;&lt; std::endl;\r\n+    *\/\r\n \r\n     return true;\r\n }\r\n@@ -233,13 +235,13 @@ void MyAGV::writeSpeed(double movex, double movey, double rot)\r\n     char buf&#x5B;8] = { 0 };\r\n     buf&#x5B;0] = header&#x5B;0];\r\n     buf&#x5B;1] = header&#x5B;1];\r\n-    buf&#x5B;2] = move_cmd &gt;&gt; 8;\r\n-    buf&#x5B;3] = move_cmd &amp; 0xff;\r\n-    buf&#x5B;4] = x_send;\r\n-    buf&#x5B;5] = y_send;\r\n-    buf&#x5B;6] = rot_send;\r\n-    check = (buf&#x5B;2] + buf&#x5B;3] + buf&#x5B;4] + buf&#x5B;5] + buf&#x5B;6]) &amp; 0xff;\r\n-    buf&#x5B;7] = check;\r\n+    \/\/ buf&#x5B;2] = move_cmd &gt;&gt; 8;\r\n+    \/\/ buf&#x5B;3] = move_cmd &amp; 0xff;\r\n+    buf&#x5B;2] = x_send;\r\n+    buf&#x5B;3] = y_send;\r\n+    buf&#x5B;4] = rot_send;\r\n+    \/\/ check = (buf&#x5B;2] + buf&#x5B;3] + buf&#x5B;4] + buf&#x5B;5] + buf&#x5B;6]) &amp; 0xff;\r\n+    buf&#x5B;5] = check;\r\n \r\n     boost::asio::write(sp, boost::asio::buffer(buf));\r\n }\r\n@@ -341,7 +343,7 @@ void MyAGV::execute(double linearX, double linearY, double angularZ)\r\n {   \r\n     currentTime = this-&gt;get_clock()-&gt;now();   \r\n     double dt = (currentTime - lastTime).seconds();\r\n-    if (true ==  readSpeed()) \r\n+    \/\/ if (true ==  readSpeed()) \r\n     {    \r\n         writeSpeed(linearX, linearY, angularZ);\r\n         publisherOdom(dt);\r\n@@ -358,6 +360,7 @@ void MyAGV::execute(double linearX, double linearY, double angularZ)\r\n  *\/\r\n void MyAGV::setAutoReportState(bool state)\r\n {\r\n+    return;\r\n     \/\/ Motor auto report\r\n     unsigned char cmd&#x5B;6] = {0xfe, 0xfe, 0x01, 0x0c, state, 0x0e};\r\n     short cmd_sum = 0;\r\n@@ -378,4 +381,4 @@ void MyAGV::setAutoReportState(bool state)\r\n     boost::asio::write(sp, boost::asio::buffer(cmd));\r\n     std::this_thread::sleep_for(std::chrono::milliseconds(50));\r\n     return;\r\n-}\r\n\\ No newline at end of file\r\n+}\r\ndiff --git a\/myagv_odometry\/src\/myAGVSub.cpp b\/myagv_odometry\/src\/myAGVSub.cpp\r\nindex 832cc4a..803cadb 100755\r\n--- a\/myagv_odometry\/src\/myAGVSub.cpp\r\n+++ b\/myagv_odometry\/src\/myAGVSub.cpp\r\n@@ -41,4 +41,4 @@ int main(int argc, char* argv&#x5B;])\r\n \r\n     rclcpp::shutdown();\r\n     return 0;\r\n-}\r\n\\ No newline at end of file\r\n+}\r\ndiff --git a\/ydlidar_ros2_driver\/params\/X2.yaml b\/ydlidar_ros2_driver\/params\/X2.yaml\r\nindex f36565a..38987b4 100644\r\n--- a\/ydlidar_ros2_driver\/params\/X2.yaml\r\n+++ b\/ydlidar_ros2_driver\/params\/X2.yaml\r\n@@ -1,6 +1,7 @@\r\n ydlidar_ros2_driver_node:\r\n   ros__parameters:\r\n-    port: \/dev\/ttyTHS1\r\n+    # port: \/dev\/ttyTHS1\r\n+    port: \/dev\/ttyAMA0\r\n     frame_id: laser_frame\r\n     ignore_array: &quot;-50,50&quot;\r\n     baudrate: 115200\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>teleop\u3092\u5b9f\u884c\u3057\u305f\u5f8c\u306btopic list\u3092\u898b\u3066\u3044\u305f\u305f\u3081\/cmd_vel\u304c\u3042 &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"more-link\" href=\"https:\/\/www.kdel.org\/wp\/?p=3989\"> <span class=\"screen-reader-text\">myAGV\uff0cROS2\u5316\uff0c\/cmd_vel<\/span> \u7d9a\u304d\u3092\u8aad\u3080 &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[3,42,2,27,6],"tags":[],"class_list":["post-3989","post","type-post","status-publish","format-standard","hentry","category-logistics-league","category-myagv","category-robocup","category-ros","category-setting"],"_links":{"self":[{"href":"https:\/\/www.kdel.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/3989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kdel.org\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kdel.org\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kdel.org\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kdel.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3989"}],"version-history":[{"count":4,"href":"https:\/\/www.kdel.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/3989\/revisions"}],"predecessor-version":[{"id":3993,"href":"https:\/\/www.kdel.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/3989\/revisions\/3993"}],"wp:attachment":[{"href":"https:\/\/www.kdel.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kdel.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kdel.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}