{"id":97,"date":"2015-08-06T18:05:17","date_gmt":"2015-08-06T09:05:17","guid":{"rendered":"http:\/\/masahiroshiomi.jp\/blog\/?p=97"},"modified":"2017-04-06T23:46:15","modified_gmt":"2017-04-06T14:46:15","slug":"python%e3%81%a7%e3%82%bd%e3%82%b1%e3%83%83%e3%83%88%e8%b6%8a%e3%81%97%e3%81%ab%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%82%92%e5%8f%97%e3%81%91%e5%8f%96%e3%81%a3%e3%81%a6roomba%e3%82%92ros%e3%81%a7-2","status":"publish","type":"post","link":"https:\/\/masahiroshiomi.jp\/blog\/ros\/97\/","title":{"rendered":"Python\u3067\u30bd\u30b1\u30c3\u30c8\u8d8a\u3057\u306b\u30b3\u30de\u30f3\u30c9\u3092\u53d7\u3051\u53d6\u3063\u3066Roomba\u3092ROS\u3067\u5236\u5fa1\u3059\u308b\uff08\u81ea\u5df1\u4f4d\u7f6e\u8a2d\u5b9a\u7de8"},"content":{"rendered":"<p>\u5f15\u304d\u7d9a\u304d\u3001\u81ea\u524d\u306e\u30b7\u30b9\u30c6\u30e0\u304b\u3089\u6307\u4ee4\u3092\u9001\u3063\u3066Roomba\u3092ROS\u8d8a\u3057\u306b\u5236\u5fa1\u3059\u308b\u305f\u3081\u306e\u6e96\u5099\u3002<\/p>\n<p><!--more--><\/p>\n<div class=\"my-ad-space\">\n<div class=\"my-ad-label\">\u30b9\u30dd\u30f3\u30b5\u30fc\u30ea\u30f3\u30af<\/div>\n<div>\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<!-- \u30ec\u30b9\u30dd\u30f3\u30b7\u30d6 -->\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-1956541408145992\"\n     data-ad-slot=\"6517671867\"\n     data-ad-format=\"auto\"><\/ins>\n<script>\n(adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n<\/div>\n<\/div>\n<br>\n<p>Rviz\u3092\u4f7f\u3048\u3070&#8221;&#8221;2D pose estimate&#8221;\u30dc\u30bf\u30f3\u3067\u81ea\u5df1\u4f4d\u7f6e\u3092\u8a2d\u5b9a\u3067\u304d\u308b\u3051\u3069\u3001<br \/>\n\u305d\u308c\u3082\u30d7\u30ed\u30b0\u30e9\u30e0\u8d8a\u3057\u306b\u884c\u3044\u305f\u3044\u306e\u3067\u3069\u3046\u3044\u3046\u51e6\u7406\u304c\u884c\u308f\u308c\u3066\u3044\u308b\u304b\u3092\u8abf\u3079\u3066\u5b9f\u88c5\u30c6\u30b9\u30c8\u3002<br \/>\n\u53c2\u8003\u306b\u3057\u305f\u306e\u306f<a href=\"http:\/\/answers.ros.org\/question\/9686\/how-to-programatically-set-the-2d-pose-on-a-map\/\">\u3053\u3053<\/a>\u3068\u304b<a href=\"http:\/\/docs.ros.org\/api\/geometry_msgs\/html\/msg\/PoseWithCovarianceStamped.html\">\u3053\u3053<\/a>\u3068\u304b<a href=\"http:\/\/answers.ros.org\/question\/30227\/turtlebot-autonomous-navigation-without-rviz\/\">\u3053\u3053<\/a>\u3002<\/p>\n<p>\u8981\u306f\u3001initialpose\uff08PoseWithCovarianceStamped\uff09\u3092Publish\u3059\u308c\u3070\u3088\u3044\u3002<br \/>\n\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u901a\u3058\u3066\u3001<a href=\"https:\/\/masahiroshiomi.jp\/blog\/ros\/63\/\">ros-navigation2d-example<\/a>\u3067\u5236\u5fa1\u3057\u3066\u3044\u308bRoomba\u306e\u4f4d\u7f6e\u3092\u5909\u66f4\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u3002<br \/>\n\u30c6\u30b9\u30c8\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u4f55\u304b\u6587\u5b57\u5217\u3092\u53d7\u3051\u53d6\u3063\u305f\u3089\u7279\u5b9a\u306e\u5834\u6240\u306b\u81ea\u5df1\u4f4d\u7f6e\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u308b\u304c\u3001\u6587\u5b57\u5217\u3092\u5206\u89e3\u3057\u3066\u51e6\u7406\u3059\u308c\u3070\u4efb\u610f\u306e\u4f4d\u7f6e\u306b\u8a2d\u5b9a\u3067\u304d\u308b\u306f\u305a\u3002<br \/>\n\u305f\u3060\u3001\u901a\u4fe1\u3057\u3066\u6700\u521d\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u306f\u3046\u307e\u304f\u8a2d\u5b9a\u3067\u304d\u305a\u30012\u56de\u76ee\u4ee5\u964d\u304b\u3089\u6b63\u3057\u304f\u52d5\u304f\u3002\u304a\u305d\u3089\u304f\u521d\u671f\u5316\u5468\u308a\u306b\u554f\u984c\u304c\u3042\u308b\u3093\u3060\u308d\u3046\u3051\u3069\u3001\u3068\u308a\u3042\u3048\u305a\u52d5\u3044\u305f\u306e\u3067\u3072\u3068\u307e\u305a\u30e1\u30e2\u3057\u3066\u304a\u304f\u3002<\/p>\n<pre class=\"lang:default decode:true \" >#!\/usr\/bin\/env python\r\n\r\nfrom __future__ import print_function\r\n\r\nimport rospy\r\nimport roslib\r\nfrom std_msgs.msg import String\r\nfrom geometry_msgs.msg import PoseWithCovarianceStamped,Twist\r\nimport socket\r\nimport select\r\n\r\nrospy.init_node('talker')\r\npub=rospy.Publisher('chatter',String, queue_size=10)\r\nrate = rospy.Rate(10)\r\n\r\nhost = 'localhost'\r\nport = 12000\r\nbacklog = 10\r\nbufsize = 4096\r\n\r\nserver_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\r\nreadfds = set([server_sock])\r\ntry:\r\n    server_sock.bind((host, port))\r\n    server_sock.listen(backlog)\r\n\r\n    while True:\r\n        rready, wready, xready = select.select(readfds, [], [])\r\n        for sock in rready:\r\n            if sock is server_sock:\r\n                conn, address = server_sock.accept()\r\n                readfds.add(conn)\r\n            else:\r\n                msg = sock.recv(bufsize)\r\n                if len(msg) == 0:\r\n                    sock.close()\r\n                    readfds.remove(sock)\r\n                else:\r\n                    print(msg)\r\n                    #sock.send(msg)\r\n                    #\u4f55\u304b\u3092\u53d7\u3051\u53d6\u3063\u305f\u3089\u3001\u81ea\u5df1\u4f4d\u7f6e\u3092\u8a2d\u5b9a\r\n                    if not rospy.is_shutdown():\r\n                        pose=rospy.Publisher('initialpose', PoseWithCovarianceStamped, queue_size=100)\r\n                        initial_pose = PoseWithCovarianceStamped()\r\n                        initial_pose.header.stamp=rospy.Time.now()\r\n                        initial_pose.header.frame_id=\"map\"\r\n                        initial_pose.pose.pose.position.x = 5.0\r\n                        initial_pose.pose.pose.position.y = 5.0\r\n                        initial_pose.pose.pose.orientation.z = 1.0\r\n                        initial_pose.pose.covariance = [0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06853891945200942]\r\n                        pose.publish(initial_pose)\r\n                        rospy.sleep(2)\r\n\r\nfinally:\r\n    for sock in readfds:\r\n            sock.close()\r\n<\/pre>\n<p><div class=\"my-ad-space\">\n<div class=\"my-ad-label\">\u30b9\u30dd\u30f3\u30b5\u30fc\u30ea\u30f3\u30af<\/div>\n<div>\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<!-- \u30ec\u30b9\u30dd\u30f3\u30b7\u30d6 -->\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-1956541408145992\"\n     data-ad-slot=\"6517671867\"\n     data-ad-format=\"auto\"><\/ins>\n<script>\n(adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n<\/div>\n<\/div>\n<br><br \/>\n<div class=\"ad-space-bottom\">\n      <div class=\"ad-label\">\u30b9\u30dd\u30f3\u30b5\u30fc\u30ea\u30f3\u30af<\/div>\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<!-- \u30ec\u30b9\u30dd\u30f3\u30b7\u30d6 -->\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-1956541408145992\"\n     data-ad-slot=\"6517671867\"\n     data-ad-format=\"auto\"><\/ins>\n<script>\n(adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n<\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5f15\u304d\u7d9a\u304d\u3001\u81ea\u524d\u306e\u30b7\u30b9\u30c6\u30e0\u304b\u3089\u6307\u4ee4\u3092\u9001\u3063\u3066Roomba\u3092ROS\u8d8a\u3057\u306b\u5236\u5fa1\u3059\u308b\u305f\u3081\u306e\u6e96\u5099\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[27,4],"class_list":["post-97","post","type-post","status-publish","format-standard","hentry","category-ros","tag-python","tag-ros"],"_links":{"self":[{"href":"https:\/\/masahiroshiomi.jp\/blog\/wp-json\/wp\/v2\/posts\/97","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/masahiroshiomi.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/masahiroshiomi.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/masahiroshiomi.jp\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/masahiroshiomi.jp\/blog\/wp-json\/wp\/v2\/comments?post=97"}],"version-history":[{"count":2,"href":"https:\/\/masahiroshiomi.jp\/blog\/wp-json\/wp\/v2\/posts\/97\/revisions"}],"predecessor-version":[{"id":397,"href":"https:\/\/masahiroshiomi.jp\/blog\/wp-json\/wp\/v2\/posts\/97\/revisions\/397"}],"wp:attachment":[{"href":"https:\/\/masahiroshiomi.jp\/blog\/wp-json\/wp\/v2\/media?parent=97"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/masahiroshiomi.jp\/blog\/wp-json\/wp\/v2\/categories?post=97"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/masahiroshiomi.jp\/blog\/wp-json\/wp\/v2\/tags?post=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}