承接上篇,上篇讲到,SLAMWARE ROS SDK的发布,既能够让用户在机械人斥地中实现使用SLAMWARE供应的建图、定位和导航功能,又能保留原先基于ROS斥地的应用逻辑,一举两得。
今天,小岚就来践行上篇的承诺,带人人体验一下若何行使SLAMWARE ROS SDK进行买卖斥地。
我们先从机械人的移动起头说起。一、键盘掌握 (前后摆布移动)
然则,用户拿到我们基于SLAMWARE的机械人或许建图雷达产物,一起头在RViz中显露的只是一张地图信息,想要用键盘掌握机械人移动偏向,发现并不奏效?
这时候,参阅SLAMWARE ROS SDK斥地文档能够发现, slamware_ros_sdk_server_node订阅了【偏向移动】的尺度类型topic,也就是说,想要实现行使键盘掌握“机械人”,我们只需编一个节点领受键盘信息,当收到键盘信息后往该topic发对应的指令新闻即可。
响应的新闻参数如下:
在行使sdk进行键盘掌握的时候,斥地的首要重点有以下几个,小岚已经帮人人枚举好了:
1、界说键盘按钮
moveBindings = {
'w':(1.0, 0.0),
's':(-1.0, 0.0),
'a':(0.0, 1.0),
'd':(0.0, -1.0)
}
2、界说pub,制订新闻topic及新闻类型
pub = rospy.Publisher('/cmd_vel', Twist, queue_size = 1)
3、初始化节点
rospy.init_node('teleop_twist_keyboard')
这些都把持完成之后,当按下的按键在之前界说的案件keys中时,将对应的值赋给linearX,angularZ。
key = getKey()
if key in moveBindings.keys():
linearX = moveBindings[key][0]
angularZ = moveBindings[key]
else:
linearX = 0.0
angularZ = 0.0
if (key == '\x03'):
break
4、凭据topic所需类型组装发布新闻
twist = Twist()
twist.linear.x = linearX
twist.angular.z = angularZ
pub.publish(twist)
至此,行使键盘掌握机械人的布置已经完成,完成这一步的小伙伴能够离别启动slamware_ros_sdk_server_node与teleop_twist_keyboard节点试一下【前后摆布】移动 。
下面,我们进一步深入认识导航定位这个问题。人人都知道,思岚有一款可扩展的机械人治理与斥地软件 —— RoboStudio,里面集成了机械人活动及掌握斥地各项功能,能够对移念头器人发送指令,实现对机械人的可视化监控。
那,若何让ROS实现Robostudio同样的功能呢?二、导航定位
1、导航定位
SLAMWARE ROS SDK的发布,使得所有基于SLAMWARE的机械人的定位和地图信息都能够在RViz中显露。有了地图之后,我们能够点击随意位置,机械人会主动规整齐条最佳路线移动到目的地。具体的演示如下:
2、虚拟墙/虚拟轨道
对于思岚来说,除了自立定位导航手艺之外,还有一大特点功能就是基于纯软件设置的虚拟墙/虚拟轨道,不需任何实物铺设,天真掌握机械人运动局限。这个在实际应用场景中有很大的意义。
下面,我们就起头上手实验吧~
首先,先找到文档中的【virtual_walls】这个topic,发布的新闻类型是自界说类型,点击可查察类型构造信息。
同样的,小岚给人人画了一下重点:
(1)初始化节点、界说publisher与subscriber对象
ros::init(argc, argv, "display_virtual_lines");
ros::NodeHandle n;
ros::Publisher pub = n.advertise
("visualization_marker", 10);
ros::Subscriber sub = n.subscribe
("/slamware_ros_sdk_server_node/virtual_walls", 30, virtualWallCallback);
(2)全局界说了一个Marker类型,lines用以存储发布虚拟墙
visualization_msgs::Marker lines;
(3)领受到slamware_ros_sdk_server_node节点发来的虚拟墙新闻后,留存到lines中
void virtualWallCallback(const slamware_ros_sdk::Line2DFlt32Array::ConstPtr & msg)
{
lines.points.clear();
size_t cnt = msg->lines.size();
for (size_t i = 0; i
lines.size(); ++i)
{
geometry_msgs::Point p1;
p1.x = msg->lines[i].start.x;
p1.y = msg->lines[i].start.y;
p1.z = 0.2;
geometry_msgs::Point p2;
大家好,小豪今天来为大家解答肛门湿疹用什么药膏以下问题,肛门湿疹用什么药膏最有效还最便宜很多人还不知道,现在让我们一起来看看吧!1、
大家好,小豪今天来为大家解答期货是什么交易模式以下问题,期货交易是啥意思很多人还不知道,现在让我们一起来看看吧!1、是的。
2、一、什
大家好,小伟今天来为大家解答员工过节费要交个税吗以下问题,员工过节费要交个税吗很多人还不知道,现在让我们一起来看看吧!1、法律分析:
大家好,小美今天来为大家解答单位净值和年化收益率以下问题,单位净值和年化收益率换算很多人还不知道,现在让我们一起来看看吧!1、购买财
大家好,小乐今天来为大家解答股权转让协议印花税纳税时间以下问题,股权转让协议印花税优惠政策50很多人还不知道,现在让我们一起来看看吧!
大家好,小伟今天来为大家解答甲状腺疾病以下问题,甲状腺疾病都有哪些种类很多人还不知道,现在让我们一起来看看吧!1、甲状的全称是甲状腺
大家好,小豪今天来为大家解答我本将心向明月全诗译文以下问题,《我本将心向明月》很多人还不知道,现在让我们一起来看看吧!1、我本将心向
大家好,小娟今天来为大家解答坚持就是胜利的名言以下问题,坚持就是胜利的名言句子很多人还不知道,现在让我们一起来看看吧!1、人生恰恰像
Copyright 2024 看看网,让大家及时掌握各行各业第一手资讯新闻!