{"id":23997,"date":"2019-08-26T15:20:39","date_gmt":"2019-08-26T07:20:39","guid":{"rendered":"\/blog\/?p=23997"},"modified":"2019-08-26T15:22:58","modified_gmt":"2019-08-26T07:22:58","slug":"how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development","status":"publish","type":"post","link":"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/","title":{"rendered":"How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development"},"content":{"rendered":"\n<p>In the last article, we talked the <a href=\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/21\/slamware-ros-sdk-released-by-slamtec-full-support-for-ros\/\">release of the SLAMWARE ROS SDK allows users to implement the mapping, positioning and navigation functions <\/a>provided by SLAMWARE in robot development while retaining the application logic originally developed based on ROS.<\/p>\n\n\n\n<p>Today, we take everyone to experience how to use the SLAMWARE ROS SDK for development.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Let&#8217;s start with the movement of the robot.<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">1. Keyboard control (moving back and, left and right)<\/h2>\n\n\n\n<p>Remember the most classic <a href=\"http:\/\/wiki.ros.org\/turtlesim\/\">turtlesim in ROS<\/a> ?<br>In the case, the turtle movement can be controlled by the keyboard direction key by starting the turtle_teleop_key node.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/08\/image-81-986x1030.png\" alt=\"\" class=\"wp-image-23998\" width=\"345\" height=\"360\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-81-986x1030.png 986w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-81-287x300.png 287w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-81-768x803.png 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-81.png 1378w\" sizes=\"(max-width: 345px) 100vw, 345px\" \/><\/figure><\/div>\n\n\n\n<p>However, when users get our SLAMWARE-based robots or mapping radar products, the first thing that shows up in RViz is the map information. If you want to use the keyboard to control the robot&#8217;s moving direction, but it does not work. <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1030\" height=\"752\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/08\/image-82-1030x752.png\" alt=\"\" class=\"wp-image-23999\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-82-1030x752.png 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-82-300x219.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-82-768x561.png 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-82.png 1408w\" sizes=\"(max-width: 1030px) 100vw, 1030px\" \/><\/figure>\n\n\n\n<p>At this time, please refer to the SLAMWARE ROS SDK development document to find out that slamware_ros_sdk_server_node subscribes to the standard type topic of [direction movement], that is, if you want to use the keyboard to control &#8220;robot&#8221;, we only need to compile a node to receive keyboard information. After receiving the keyboard information, the corresponding command message can be sent to the topic.<\/p>\n\n\n\n<p>The corresponding message parameters will be like the following: <\/p>\n\n\n\n<table class=\"wp-block-table aligncenter\"><tbody><tr><td>Message Parameter<\/td><td>Description <\/td><\/tr><tr><td>liner.x &gt; 0.005f<\/td><td>Forward<\/td><\/tr><tr><td>liner.x &lt; -0.005f<\/td><td>Back<\/td><\/tr><tr><td>angular.z &gt; 0.001f<\/td><td>Turn left<\/td><\/tr><tr><td>angular.z &lt; -0.001f<\/td><td>Turn right<\/td><\/tr><\/tbody><\/table>\n\n\n\n<h3 class=\"wp-block-heading\">When using SDK for keyboard control, there are several main development points: <\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1. Define keyboard buttons<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>moveBindings = {\n    'w':(1.0, 0.0),\n    's':(-1.0, 0.0),\n    'a':(0.0, 1.0),\n    'd':(0.0, -1.0)\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2. Define pub, develop message topic and message type<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code> pub = rospy.Publisher('\/cmd_vel', Twist, queue_size = 1)<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">3. Initialize node<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>rospy.init_node('teleop_twist_keyboard')<\/code><\/pre>\n\n\n\n<p>After these operations are completed, when the pressed button is in the previously defined case keys, the corresponding value is assigned to linearX, angularZ.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> key = getKey()\n if key in moveBindings.keys():\n     linearX = moveBindings[key][0]\n     angularZ = moveBindings[key][1]\n else:\n     linearX = 0.0\n     angularZ = 0.0\n     if (key == '\\x03'):\n         break<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">4. Assemble the release message according to the type required by the topic<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>twist = Twist()\ntwist.linear.x = linearX\ntwist.angular.z = angularZ\npub.publish(twist)<\/code><\/pre>\n\n\n\n<p>At this point, the deployment of the robot using the keyboard has been completed. Users who have completed this step can start the slamware_ros_sdk_server_node and teleop_twist_keyboard nodes respectively to try [left and right] to move.<\/p>\n\n\n\n<p>Let&#8217;s take a closer look at the issue of navigation targeting. Everyone knows that SLAMTEC has an extensible robot management and development software, RoboStudio, which integrates robot motion and control development functions to send commands to mobile robots for visual monitoring of robots.<\/p>\n\n\n\n<p>So, how to make ROS realize the same function of Robostudio?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Navigation and positioning<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Navigation and Positioning<\/h3>\n\n\n\n<p>The release of the SLAMWARE ROS SDK enables the positioning and map information of all SLAMWARE-based robots to be displayed in RViz. Once we have the map, we can click anywhere and the robot will automatically plan an optimal route to move to the destination. The specific demonstration will show as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"599\" height=\"436\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/08\/slamware-sdk-.gif\" alt=\"\" class=\"wp-image-24000\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2. Virtual wall\/virtual track<\/h3>\n\n\n\n<p>For SLAMTEC, in addition to autonomous positioning navigation technology, there is also a feature that is based on pure software set virtual wall\/virtual track, without any physical laying, flexible control of robot range of motion. This has great significance in practical application scenarios.<\/p>\n\n\n\n<p>Below, let&#8217;s start experimenting<\/p>\n\n\n\n<p>First, find the topic of [virtual_walls] in the document. The published message type is a custom type. Click to view the type of structure information.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"slamware_ros_sdkline2dflt32array\">slamware_ros_sdk\/Line2DFlt32Array<\/h2>\n\n\n\n<p><strong>File<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/developer.slamtec.com\/docs\/slamware\/ros-sdk\/2.6.0_rtm\/msgs\/line_2d_flt32_array\/\">slamware_ros_sdk\/msg\/Line2DFlt32Array.msg<\/a><\/p>\n\n\n\n<p><strong>Definition<\/strong><\/p>\n\n\n\n<table class=\"wp-block-table aligncenter\"><thead><tr><th>Element <\/th><th><strong>Type<\/strong><\/th><th><strong>Description<\/strong><\/th><\/tr><\/thead><tbody><tr><td>lines<\/td><td><a href=\"https:\/\/developer.slamtec.com\/docs\/slamware\/ros-sdk\/2.6.0_rtm\/msgs\/line_2d_flt32\/\">slamware_ros_sdk\/Line2DFlt32<\/a>[]<\/td><td>multiple lines<\/td><\/tr><\/tbody><\/table>\n\n\n\n<p>(1) Initialize the node, define the publisher and subscriber objects<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> ros::init(argc, argv, \"display_virtual_lines\");\n ros::NodeHandle n;\n ros::Publisher pub = n.advertise&lt;visualization_msgs::Marker>(\"visualization_marker\", 10);\n ros::Subscriber sub = n.subscribe&lt;slamware_ros_sdk::Line2DFlt32Array>(\"\/slamware_ros_sdk_server_node\/virtual_walls\", 30, virtualWallCallback);<\/code><\/pre>\n\n\n\n<p>(2) Globally defines a Marker type, lines are used to store and publish virtual walls.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>visualization_msgs::Marker lines;<\/code><\/pre>\n\n\n\n<p>(3) After receiving the virtual wall message sent by the slamware_ros_sdk_server_node node, save it to lines<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void virtualWallCallback(const slamware_ros_sdk::Line2DFlt32Array::ConstPtr &amp; msg)\n{\n    lines.points.clear();\n    size_t cnt = msg->lines.size();\n    for (size_t i = 0; i &lt; msg->lines.size(); ++i)\n    {\n        geometry_msgs::Point p1;\n        p1.x = msg->lines[i].start.x;\n        p1.y = msg->lines[i].start.y;\n        p1.z = 0.2;\n\n        geometry_msgs::Point p2;\n        p2.x = msg->lines[i].end.x;\n        p2.y = msg->lines[i].end.y;\n        p2.z = 0.2;\n\n        lines.points.push_back(p1);\n        lines.points.push_back(p2);\n    }\n}<\/code><\/pre>\n\n\n\n<p>(4) Configure lines, such as type, size, and color, etc.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> lines.id = 1;\n lines.header.frame_id = \"slamware_map\";\n lines.type = visualization_msgs::Marker::LINE_LIST;\n lines.ns = \"lines\";\n lines.action = visualization_msgs::Marker::ADD;\n lines.pose.orientation.w = 1.0;\n\n lines.scale.x = 0.1;\n lines.color.r = 1.0;\n lines.color.a = 1.0;<\/code><\/pre>\n\n\n\n<p>(5) Publish the lines<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  ros::Rate r(30);\n  while(running)\n  {\n      size_t cnt = lines.points.size();\n\n      lines.header.stamp = ros::Time::now();\n      pub.publish(lines);\n\n      r.sleep();\n  }<\/code><\/pre>\n\n\n\n<p>After deployment, we start the slamware_ros_sdk_server_node, view_slamware_ros_sdk_server_node and display_virtual_lines nodes respectively.<\/p>\n\n\n\n<p>At this point, you need to configure the Add Marker information in RViz. First, find the [Add] button in the lower-left corner of RViz.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1030\" height=\"837\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/08\/image-83-1030x837.png\" alt=\"\" class=\"wp-image-24001\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-83-1030x837.png 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-83-300x244.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-83-768x624.png 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-83.png 1428w\" sizes=\"(max-width: 1030px) 100vw, 1030px\" \/><\/figure><\/div>\n\n\n\n<p>Select Add [Marker] to display the object.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"688\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/08\/image-84.png\" alt=\"\" class=\"wp-image-24002\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-84.png 500w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-84-218x300.png 218w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n\n<p>After the addition is complete, we continue to find the [add_ lines] topic in the reference documentation, and then we can customize it. Click to see the composition and description of the custom type: line type, add location, and related definitions<\/p>\n\n\n\n<p>Start the slamware_ros_sdk_server_node node, connect the robot, and type in the command line:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rostopic pub \/slamware_ros_sdk_server_node\/add_line slamware_ros_sdk\/AddLineRequest -1 -- '[0]' '[1, [0.0, 0.0], [1.0, 1.0]]'\n<\/code><\/pre>\n\n\n\n<p>At this point, we can see the virtual wall in Rviz.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1030\" height=\"856\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2019\/08\/image-85-1030x856.png\" alt=\"\" class=\"wp-image-24003\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85-1030x856.png 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85-300x249.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85-768x638.png 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png 1406w\" sizes=\"(max-width: 1030px) 100vw, 1030px\" \/><\/figure><\/div>\n\n\n\n<p>How do you delete it? Similarly, we find the clear_lines node information, enter the corresponding code on the command line:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rostopic pub \/slamware_ros_sdk_server_node\/clear_lines slamware_ros_sdk\/ClearLinesRequest -1 '[0]'<\/code><\/pre>\n\n\n\n<p>The development of virtual tracks will be the same as above. <\/p>\n\n\n\n<p>This tutorial is just a demonstration of the two simple features of the SLAMWARE ROS SDK. The flexible use of topics such as controlling robot motion state, steering, rotation angle, map synchronization, and clearing the map will enable better monitoring and control of the robot.<\/p>\n\n\n\n<p>So, are you ready to explore?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last article, we talked the release of the SLAMWARE ROS SDK allows users<\/p>\n","protected":false},"author":200,"featured_media":24003,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[1084,1083,1502,1555],"class_list":["post-23997","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-ros","tag-rplidar","tag-slamware","tag-slamware-ros-sdk"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development - Latest News from Seeed Studio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development - Latest News from Seeed Studio\" \/>\n<meta property=\"og:description\" content=\"In the last article, we talked the release of the SLAMWARE ROS SDK allows users\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/\" \/>\n<meta property=\"og:site_name\" content=\"Latest News from Seeed Studio\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-26T07:20:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-26T07:22:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1406\" \/>\n\t<meta property=\"og:image:height\" content=\"1168\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Elaine Wu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elaine Wu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/\",\"name\":\"How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development - Latest News from Seeed Studio\",\"isPartOf\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png\",\"datePublished\":\"2019-08-26T07:20:39+00:00\",\"dateModified\":\"2019-08-26T07:22:58+00:00\",\"author\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61c04bed5bbe2d098f04195c6e48fb11\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/#primaryimage\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png\",\"contentUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png\",\"width\":1406,\"height\":1168,\"caption\":\"How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.seeedstudio.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/\",\"name\":\"Latest News from Seeed Studio\",\"description\":\"Emerging IoT, AI and Autonomous Applications on the Edge\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61c04bed5bbe2d098f04195c6e48fb11\",\"name\":\"Elaine Wu\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/184af8ef71f0d6b64c276f9bb38b992e?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/184af8ef71f0d6b64c276f9bb38b992e?s=96&r=g\",\"caption\":\"Elaine Wu\"},\"description\":\"Head of AI Robotics @seeed Every day holds new magic \u2728 on ne sait jamais\u2601\ufe0f\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/elaine1994\/\"],\"url\":\"https:\/\/www.seeedstudio.com\/blog\/author\/elaine\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development - Latest News from Seeed Studio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/","og_locale":"en_US","og_type":"article","og_title":"How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development - Latest News from Seeed Studio","og_description":"In the last article, we talked the release of the SLAMWARE ROS SDK allows users","og_url":"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/","og_site_name":"Latest News from Seeed Studio","article_published_time":"2019-08-26T07:20:39+00:00","article_modified_time":"2019-08-26T07:22:58+00:00","og_image":[{"width":1406,"height":1168,"url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png","type":"image\/png"}],"author":"Elaine Wu","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Elaine Wu","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/","url":"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/","name":"How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development - Latest News from Seeed Studio","isPartOf":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/#primaryimage"},"image":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/#primaryimage"},"thumbnailUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png","datePublished":"2019-08-26T07:20:39+00:00","dateModified":"2019-08-26T07:22:58+00:00","author":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61c04bed5bbe2d098f04195c6e48fb11"},"breadcrumb":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/#primaryimage","url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png","contentUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png","width":1406,"height":1168,"caption":"How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development"},{"@type":"BreadcrumbList","@id":"https:\/\/www.seeedstudio.com\/blog\/2019\/08\/26\/how-to-use-slamware-ros-sdk-for-robot-navigation-positioning-development\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.seeedstudio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Use SLAMWARE ROS SDK for Robot Navigation Positioning Development"}]},{"@type":"WebSite","@id":"https:\/\/www.seeedstudio.com\/blog\/#website","url":"https:\/\/www.seeedstudio.com\/blog\/","name":"Latest News from Seeed Studio","description":"Emerging IoT, AI and Autonomous Applications on the Edge","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61c04bed5bbe2d098f04195c6e48fb11","name":"Elaine Wu","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/184af8ef71f0d6b64c276f9bb38b992e?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/184af8ef71f0d6b64c276f9bb38b992e?s=96&r=g","caption":"Elaine Wu"},"description":"Head of AI Robotics @seeed Every day holds new magic \u2728 on ne sait jamais\u2601\ufe0f","sameAs":["https:\/\/www.linkedin.com\/in\/elaine1994\/"],"url":"https:\/\/www.seeedstudio.com\/blog\/author\/elaine\/"}]}},"modified_by":"Elaine Wu","views":7705,"featured_image_urls":{"full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png",1406,1168,false],"thumbnail":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85-80x80.png",80,80,true],"medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85-300x249.png",300,249,true],"medium_large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85-768x638.png",640,532,true],"large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85-1030x856.png",640,532,true],"1536x1536":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png",1406,1168,false],"2048x2048":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png",1406,1168,false],"visody_icon":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png",32,27,false],"magazine-7-slider-full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png",1228,1020,false],"magazine-7-slider-center":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png",936,778,false],"magazine-7-featured":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png",1024,851,false],"magazine-7-medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png",457,380,false],"magazine-7-medium-square":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2019\/08\/image-85.png",542,450,false]},"author_info":{"display_name":"Elaine Wu","author_link":"https:\/\/www.seeedstudio.com\/blog\/author\/elaine\/"},"category_info":"<a href=\"https:\/\/www.seeedstudio.com\/blog\/category\/news\/\" rel=\"category tag\">News<\/a>","tag_info":"News","comment_count":"1","_links":{"self":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/23997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/users\/200"}],"replies":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/comments?post=23997"}],"version-history":[{"count":2,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/23997\/revisions"}],"predecessor-version":[{"id":24006,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/23997\/revisions\/24006"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media\/24003"}],"wp:attachment":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media?parent=23997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/categories?post=23997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/tags?post=23997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}