主要内容

开始使用TurtleBot支持包金宝app

简介

本示例演示如何与TurtleBot®机器人进行交互。你可以从机器人的传感器中获取传感器数据,并发送命令来控制机器人的运动。

所有功能都可以与Gazebo中的模拟机器人或物理TurtleBot一起工作。

  • 如果您使用的是真正的TurtleBot,请遵循硬件设置步骤开始一个真正的乌龟机器人

  • 或者,您也可以下载已经安装了ROS和Gazebo的虚拟机映像。此虚拟机基于Ubuntu®Linux®,并已预先配置以支持此示例。金宝app按照设置步骤进行操作开始凉亭和模拟乌龟机器人,并启动Gazebo TurtleBot World访问一个模拟TurtleBot。

连接到TurtleBot

将示例IP地址192.168.1.1替换为TurtleBot的IP地址,连接机器人。

ipaddress =“192.168.1.1”
Tbot = turtlebot(ipaddress)

此调用创建一个turtlebot可用于检索传感器数据和控制机器人运动的对象。

获取传感器数据

通过测程传感器获取机器人的位置和方向。

姿态= getOdometry(tbot)

中的capability属性表示每个TurtleBot传感器或控制命令turtlebot类。例如,测程法属性包含关于机器人的里程计传感器的信息。

tbot。测程法

每个能力属性有两个字段。的TopicName字段显示用于接收传感器数据或发送控制命令的ROS主题。的活跃的字段允许显式启用或禁用数据流。

显式启用彩色图像订阅者。注意,为方便起见,彩色图像订阅者在您第一次调用时自动启用getColorImage

tbot.ColorImage.Active = true;

相同的行为适用于以得到.每个功能属性都有一个相关联的getPROP记者函数,道具引用属性名。

从TurtleBot相机获取彩色图像并显示它。的getColorImage函数等待新图像的时间最长为5秒。

colorImg = getColorImage(tbot);图;imshow (colorImg);

您可以通过指定一个可选的超时值(以秒为单位)来更改函数应该等待彩色图像的最大时间。等待最多10秒,才会有新图像。

colorImg = getColorImage(tbot, 20);

禁用彩色图像订阅者。如果您想保存网络带宽或脱机处理传感器数据,这可能很有用。

tbot.ColorImage.Active = false;

控制机器人运动

你还可以发送命令来控制机器人的运动。以每秒0.3米的速度向前移动机器人。

setVelocity (tbot, 0.3);

现在等待机器人完成移动,然后得到一个新的里程表读数。

暂停(1)姿态= getOdometry(tbot)

您可以重置里程表,然后再次尝试运动。resetOdometry将机器人位置和机器人方向分别设置为[0,0,0]。

当你向前移动机器人时,你可以期望只有X位置值发生变化,而Y和Z值应该接近0。

setVelocity(tbot, 0.3);暂停(1)姿态= getOdometry(tbot)

你会注意到setVelocity只向机器人发送一个命令,它就会很快停止移动。要命令TurtleBot在指定的时间段内继续运动,可以使用另一种语法。

以圆周运动移动机器人5秒。

setVelocity(tbot, 0.3, 0.6,“时间”10);

在经过的时间结束时,速度0被发送给机器人。从机器人的深度传感器获取点云来验证机器人的位置。

[pcloud, pcloudmsg] = getPointCloud(tbot);图;scatter3 (pcloudmsg)

方法的第二个返回参数getPointCloud函数是可选的,它允许您访问接收到的ROS消息。看到使用专门的ROS消息获取更多信息。所有其他函数都以得到还将ROS消息作为第二个可选输出返回。

断开与机器人的连接

从机器人断开通过清除tbot变量。

明确tbot