Home
Products Products
Cases
News
Buy
Support
About Us
Partner
Contact Us
Home
Products Products
News
Buy
Support
About Us
Join US
Contact Us

news title separator 如何利用SLAMWARE ROS SDK进行机器人导航定位开发

 

承接上篇,上篇讲到,SLAMWARE ROS SDK的发布,既可以让用户在机器人开发中实现使用SLAMWARE提供的建图、定位和导航功能,又能保留原先基于ROS开发的应用逻辑,一举两得。

今天,小岚就来践行上篇的承诺,带大家体验一下如何利用SLAMWARE ROS SDK进行业务开发。

我们先从机器人的移动开始说起。

一、键盘控制 (前后左右移动)

还记得ROS中最经典的turtlesim(http://wiki.ros.org/turtlesim/)吗?案例中启动turtle_teleop_key节点就可以通过键盘方向键控制小海龟移动了。

但是,用户拿到我们基于SLAMWARE的机器人或者建图雷达产品,一开始在RViz中显示的只是一张地图信息,想要用键盘控制机器人移动方向,发现并不奏效?

这时候,参阅SLAMWARE ROS SDK开发文档可以发现, slamware_ros_sdk_server_node订阅了【方向移动】的标准类型topic,也就是说,想要实现利用键盘控制“机器人”,我们只需编一个节点接收键盘信息,当收到键盘信息后往该topic发对应的指令消息即可。

相应的消息参数如下:

在利用sdk进行键盘控制的时候,开发的主要重点有以下几个,小岚已经帮大家罗列好了:

1、定义键盘按钮

2、定义pub,制定消息topic及消息类型

3、初始化节点

这些都操作完成之后,当按下的按键在之前定义的案件keys中时,将对应的值赋给linearX,angularZ。

4、根据topic所需类型组装发布消息

至此,利用键盘控制机器人的部署已经完成,完成这一步的小伙伴可以分别启动slamware_ros_sdk_server_node与teleop_twist_keyboard节点试一下【前后左右】移动 。

下面,我们进一步深入了解导航定位这个问题。大家都知道,思岚有一款可扩展的机器人管理与开发软件 —— RoboStudio,里面集成了机器人运动及控制开发各项功能,可以对移动机器人发送指令,实现对机器人的可视化监控。

那,如何让ROS实现Robostudio同样的功能呢?

 

二、导航定位 

1、导航定位

SLAMWARE ROS SDK的发布,使得所有基于SLAMWARE的机器人的定位和地图信息都可以在RViz中显示。有了地图之后,我们可以点击任意位置,机器人会自动规划一条最佳路线移动到目的地。

 

2、虚拟墙/虚拟轨道

对于思岚来说,除了自主定位导航技术之外,还有一大特点功能就是基于纯软件设置的虚拟墙/虚拟轨道,不需任何实物铺设,灵活控制机器人活动范围。这个在实际应用场景中有很大的意义。

 

下面,我们就开始上手实验吧~

首先,先找到文档中的【virtual_walls】这个topic,发布的消息类型是自定义类型,点击可查看类型结构信息。

 

同样的,小岚给大家画了一下重点:

(1)初始化节点、定义publisher与subscriber对象

(2)全局定义了一个Marker类型,lines用以存储发布虚拟墙

(3)接收到slamware_ros_sdk_server_node节点发来的虚拟墙消息后,保存到lines中

(4)配置lines,如:类型、尺寸和颜色等

(5)将lines发布出去

 

部署完之后,我们分别启动slamware_ros_sdk_server_node, view_slamware_ros_sdk_server_node和display_virtual_lines节点。

此时,在RViz中需要配置添加Marker信息,先找到在RViz中点击左下角【Add】按钮。

选择添加【Marker】显示对象。

添加完成之后,我们继续在参考文档中找到【add_ lines】这个topic,然后我们就可以自定义。点进去查看自定义类型的组成与描述:线段类型、添加位置、以及相关定义

启动slamware_ros_sdk_server_node节点,连上机器人,然后在命令行中输入:

rostopic pub /slamware_ros_sdk_server_node/add_line slamware_ros_sdk/AddLineRequest -1 -- '[0]' '[1, [0.0, 0.0], [1.0, 1.0]]'

此时,我们就可以在Rviz中看见虚拟墙了。

那要如何删除呢?同理,我们找到clear_lines节点信息,在命令行输入相应代码即可:

rostopic pub /slamware_ros_sdk_server_node/clear_lines slamware_ros_sdk/ClearLinesRequest -1 '[0]'

虚拟轨道功能开发亦是如此。

……以上,仅为SLAMWARE ROS SDK中功能两个简单功能的演示。控制机器人运动状态、转向、旋转角度、地图同步、清空地图等topic的灵活使用,将可以更好的对机器人进行监测与控制。

那么,你准备好去探索了吗?

 

关键字:SLAM,使用指南

top
Contact us button
Support email button
WhatsApp button