设为首页收藏本站

ROS中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2448|回复: 23

Turtlebot教程(最全的ROS运行编程)//入门必看

[复制链接]
发表于 2016-12-5 15:56:17 | 显示全部楼层 |阅读模式


         Turtlebot是以ROS为基础的移动机器人,以及使用开源的系统的机器人套件
         TurtleBot的目的是给入门级的机器人爱好者或或从事移动机器人编程开发者提供一个基础开发平台,让他们直接使用TurtleBot自带的软硬件,能专注于应用程序的开发。避免了设计草图,购买、加工材料、设计电路、编写程序、组装等一系列工作。借助该机器人平台,可以节省很多前期工作,只要根据平台的软硬件接口,就能开发出所需的功能。
         下面是使用ROS对Turtlebot进行开发工作的教程:
           (注:初学者需要两台电脑作为控制端和接收端,具体使用方法和改进方法会在接下来的教程中一一讲述)
回复

使用道具 举报

 楼主| 发表于 2016-12-5 16:41:52 | 显示全部楼层
1 安装ROS
1)安装ROS(工作站和Turtlebot)

分别在工作站和Turtlebot上按照以下步骤安装ROS。

目前ROS已经有多个版本,但它们的安装过程类似。这里以Indigo版本为例,介绍ROS的安装方法。Ubuntu的版本为64位的14.04 LTS(假设已安装)。

1)配置Ubuntu系统

打开ubuntu系统的软件中心,并在菜单栏中选择Edit-Software Sources。在Ubuntu Software一栏选中“restricted”“universe” “multiverse”

2)配置sources.list

配置sources.list使得计算机能够从packages.ros.org接收软件。

对于Ubuntu 14.04

$ sudo sh -c 'echo "debhttp://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" >/etc/apt/sources.list.d/ros-latest.list'

3)安装keys

$ sudo apt-key adv --keyserverhkp://pool.sks-keyservers.net --recv-key 0xB01FA116

4)安装

重新定向ROS服务器:

$ sudo apt-get update

根据不同的功能,ROS有如下四种安装:

(A)桌面完整版安装(推荐):ROS、rqt、rviz、robot_generic库、2D/3D仿真器、导航以及2D/3D感知。

$ sudo apt-get installros-indigo-desktop-full

(B) 桌面安装:ROS、rqt、rviz、robot_generic库。

$ sudo apt-get installros-indigo-desktop

(C) ROS-Base:ROS的主要功能包、build和communication库。

$ sudo apt-get installros-indigo-ros-base

(D) 独立的功能包:安装特定的ROS功能包。

$ sudo apt-get installros-indigo-PACKAGE

安装完成以后,可以使用以下命令来查看已安装的功能包:

$ apt-cache search ros-groovy

(5)初始化rosdep

使用 ROS之前,需要初始化rosdep。

$ sudo rosdepinit

$ rosdepupdate

(6)环境设置

环境设置对操作ROS功能包有重要作用。运行下面的命令,为Indigo版本设置环境:

$ source /opt/ros/indigo/setup.bash

需要说明的是:每打开一个新的终端窗口都需运行上面的命令。为了实现环境的自动设置,可以将上面的命令写入.bashrc文件。运行下面的命令:

$ echo"source /opt/ros/indigo/setup.bash" >> ~/.bashrc

$ source~/.bashrc

(7)安装rosinstall

rosinstall是ROS中一个经常使用的命令行工具,它可以很容易地为ROS功能包下载source树。运行下面的命令:

$ sudo apt-get installpython-rosinstall

2)安装Turtlebot功能包(工作站和Turtlebot)

建立工作空间,跟建立catkin工作空间有点像。注意要一个一个都做到。

>mkdir ~/rocon

>cd ~/rocon


>source /opt/ros/indigo/setup.bash

>rosdep install --from-paths src -i –y

> catkin_make


>mkdir ~/kobuki

>cd ~/kobuki


>source ~/rocon/devel/setup.bash

>rosdep install --from-paths src -i -y

> catkin_make


>mkdir ~/turtlebot

>cd ~/turtlebot

>wstool init src -j5 https://raw.github.com/yujinrobot/yujin_tools/master/rosinstalls/indigo/turtlebot.rosinstall

>source ~/kobuki/devel/setup.bash

>rosdep install --from-paths src -i -y

> catkin_make

    完成上面的过程后会多出kuboki,rocon,turtlebot三个文件夹,每个文件夹下有是src,devel,build三个文件夹。

3)安装Kinect驱动(仅Turtlebot)

Turtlebot使用的是微软的Kinect。要使用Kinect,首先需要安装驱动。

打开一个终端窗口,运行下面的代码:

mkdir~/kinectdriver

cd~/kinectdriver


cdSensorKinect/Bin/

tar xvjfSensorKinect093-Bin-Linux-x64-v5.1.2.1.tar.bz2

cdSensor-Bin-Linux-x64-v5.1.2.1/
sudo ./install.sh
回复

使用道具 举报

 楼主| 发表于 2016-12-6 09:42:41 | 显示全部楼层

2测试TurtleBot安装
注意:在本教程中,请把上网本放到TurtleBot的顶部并保持显示屏打开状态,而不要将合着的上网本放到Kobuki基座的架子上。

(1)测试ROS安装(TurtleBot和工作站)

关闭所有打开的终端,打开一个新的终端窗口(组合键Ctrl+Alt+t)并运行:

roscore

如果你看到

started core service[/rosout]

表明ROS已正确安装。

如果你没有看到started coreservice [/rosout],说明你的ROS安装存在问题。

(2)遥控操作控制TurtleBot前进(仅TurtleBot)

首先确保TurtleBot的Kobuki基座电源已打开(on/off开关处在on的位置)。

如果电池电量充足,Kobuki基座电池状态指示灯变绿。

关闭所有打开的终端,打开一个新的终端窗口并运行:

roslaunch turtlebot_bringup minimal.launch

TurtleBot将发出一串铃声,表明它已启动。

当我们测试时我们会看到许多警告信息:

"Rapp Manager: Nopreferred rapp for  'roconapps/talker'" warnings.

它们不好看,但不会影响该教程的运行结果。

打开另一终端窗口输入并运行如下指令:

roslaunch turtlebot_teleopkeyboard_teleop.launch

该脚本完全启动后,控制TurtleBot的指令将会显示在屏幕上。按下“i”键使TurtleBot前进。
注意:要使这些命令工作,该终端窗口必须为当前窗口或活动窗口(相对于其他终端窗口或程序)。
回复

使用道具 举报

 楼主| 发表于 2016-12-7 14:30:36 | 显示全部楼层

3设置网络连接
   为了避免按着上网本上的按键跟着TurtleBot四处跑,我们可以使用远程工作站。远程工作站可以使你坐在舒适的椅子上控制TurtleBot。

1)时钟同步(TurtleBot和远程工作站)

安装Ubuntu后,进入设置页面,遵照“网络时间协议”指示进行设置。跳过特殊情况说明。同时确保TurtleBot和远程工作站都连接至同一路由器。为了避免后面产生问题,禁用防火墙或其他任何阻塞端口的软件。

2)设置网络(TurtleBot和远程工作站)

ROS要求连接到网络的所有计算机之间都能双向连通。TurtleBot的上网本和远程工作站可以使用它们的IP地址进行配置,也可以使用名称服务器或/etc/hosts来完成。

最终你需要正确配置ROS_MASTER_URI和ROS_HOSTNAME以确保ROS通信通道能互相找到对方。

(1)连接确认

使用ifconfig获取TurtleBot和远程工作站的IP地址。

在TurtleBot上安装ssh服务器:

sudo apt-get install openssh-server

    确保你能从远程工作站远程登录到TurtleBot:

ssh turtle@<TURTLEBOTP_IP>

用你安装turtlebot软件时创建的用户名替换上面命令中的turtle,用主机名或TurtleBot的IP地址替换<TURTLEBOTP_IP>。

(2)TurtleBot设置

    根据自己的喜好选择以下两种安装方式中的一种:

Deb安装:

将以下变量输出到你的工作空间设置脚本:

echoexport ROS_MASTER_URI=http://localhost:11311 >> ~/.bashrc

echoexport ROS_HOSTNAME=IP_OF_TURTLEBOT >> ~/.bashrc

    最后,如果你已启动TurtleBot,关掉它并重新启动。

Source安装:

将以下变量输出到你的工作空间设置脚本:

echo exportROS_MASTER_URI=http://IP_OF_TURTLEBOT:11311 >> ~/turtlebot/devel/setup.sh

echo exportROS_HOSTNAME=IP_OF_TURTLEBOT >> ~/turtlebot/devel/setup.

最后,如果你已启动TurtleBot,关掉它并重新启动。

(3)远程工作站设置

将以下变量输出到你的工作空间设置脚本。注意这里ROS_MASTER_URI的意思发生了变化——master是TurtleBot。

echo exportROS_MASTER_URI=http://IP_OF_TURTLEBOT:11311 >> ~/.bashrc

echo exportROS_HOSTNAME=IP_OF_PC >> ~/.bashrc

3)验证网络连接

    如果你是手动设置这些变量,重新启动TurtleBot。

(1)从远程工作站到TurtleBot的验证:

在远程工作站上打开一个新的终端窗口并运行:

rostopic list

如果看不到主题列表,检查ROS_MASTER_URI的设置是否正确。

在远程工作站上运行:

rostopic echo /diagnostics

如果没有看到“Topic has not been published”的警告信息,说明TurtleBot笔记本上ROS_HOSTNAME的设置正确。

(2)从TurtleBot到远程工作站的验证:

最后,检查TurtleBot笔记本能够从远程工作站上运行的ROS节点获取数据。

在远程工作站上运行:

rostopic pub -r10 /hello std_msgs/String"hello"

在TurtleBot上运行:

    rostopic echo /hello

    消息“hello”开始以每秒10次的频率显示在屏幕上。如果没有看到该消息,请检查远程工作站上ROS_HOSTNAME的设置。

4)远程进入TurtleBot

你可以一直跟着TurtleBot并直接输入命令,但这样做很不方便。较为方便的做法是SSH到TurtleBot的笔记本并从远程控制它。

检查SSH服务是否已安装。在TurtleBot上运行:

sudo service ssh status

如果看到ssh:unrecognized service,用下面的语句安装SSH服务器:

sudo apt-get install openssh-server

然后运行:

sudoiptables -A INPUT -p tcp --dport ssh -j ACCEPT

sudo ufwallow ssh

sudo/etc/init.d/ssh restart

在TurtleBot笔记本上运行ifconfig查看TurtleBot的IP地址。

在远程工作站上,打开一个终端窗口并运行:

ssh turtlebot@[ip_of_turtlebot]

注意:用TurtleBot的IP地址替代上面的[ip_of_turtlebot],用你为TurtleBot笔记本设置的用户名替代turtlebot。

现在你就可以SSH进TurtleBot来运行包括启动脚本在内的脚本:

roslaunch turtlebot_bringup minimal.launch

现在不用再走到TurtleBot跟前输入指令了。

提示:密码和你登陆TurtleBot笔记本的密码相同。

5)方便地控制TurtleBot

    在TurtleBot笔记本上,关掉所有的终端窗口,合上笔记本,将它放到第二层架上(如我们在硬件设置教程里的做法一样)。现在你已知道了如何从你的工作站SSH进入TurtleBot,因此你可以通过工作站运行任何你想要运行的指令。

在工作站上SSH进TurtleBot并运行:

roslaunch turtlebot_bringup minimal.launch

在工作站上运行:

roslaunch turtlebot_teleopkeyboard_teleop.launch
现在你就可以通过工作站上的按键控制TurtleBot运动了。
回复

使用道具 举报

 楼主| 发表于 2016-12-9 13:58:39 | 显示全部楼层

4测试Kinect
除了悬崖传感器和保险杠,Kinect是TurtleBot感知周围环境的另一种方式。我们已经安装了Kinect的驱动,现在我们测试它能否正常工作。

1)测试Kinect连接(仅TurtleBot)

在测试之前,打印环境变量并查看输出以确定TurtleBot默认的3D传感器:

echo$TURTLEBOT_3D_SENSOR

#Output: kinect

如果你看到的是其他3D传感器,比如asus_xtion_pro,你需要在.bashrc文件中设置默认的环境变量值并重启终端:

echo "export TURTLEBOT_3D_SENSOR=kinect">> .bashrc

在TurtleBot上,关闭所有终端,打开一个新的终端窗口并运行:

roslaunch turtlebot_bringup minimal.launch

打开另一个终端窗口并运行:

roslaunch openni_launch openni.launch

如果你看到许多行以process[camera...开始的语句,表明一切正常。

保持这两个终端窗口打开状态。

2)观察图像(远程工作站)

关闭所有终端窗口,打开一个新的并运行:

    rosrun image_view image_viewimage:=/camera/rgb/image_color

你会看到来自Kinect的一个实时视频流。按‘q’退出。

我们看到的视频图像并不比网络摄像头好多少。接着看一下距离的视频表示,运行:

rosrun image_view image_viewimage:=/camera/depth/image

你将看到一幅灰度视频流,其中越接近Kinect的物体颜色越深。

提示:如果你仅看到纯灰色,检查你是否仍在TurtleBot上运行着openni.launch。按下‘q’退出深度图像。

3)停止Openni(TurtleBot)

打开TurtleBot上openni正在运行的终端。按下“Ctrl+C”停止它。使minimal.launch保持运行状态。接着运行:

roslaunch turtlebot_bringup 3dsensor.launch

4)RViz(工作站)

关闭所有的终端窗口,打开一个新的终端并运行:

roslaunch turtlebot_rviz_launchersview_robot.launch

    检查“Displays”下的“Registered DepthCloud”和“Image”。按下鼠标左键旋转摄像机,或者按下鼠标中键移动摄像机。
注意:如果你看不到显示面板,滚动你的鼠标到屏幕的顶部并单击“Panels”。选中挨着“Display Panel”的复选框启用它。
回复

使用道具 举报

 楼主| 发表于 2016-12-11 17:16:15 | 显示全部楼层

5远程操作
远程操作允许你手动控制TurtleBot。键盘和操纵杆是两种主要方式。在测试这两种方式之前,我们需要设置TurtleBot以便能够接收命令。

在TurtleBot上运行:

roslaunch turtlebot_bringup minimal.launch

现在就可以从远程工作站接收命令了。

1)键盘

要使用键盘进行远程控制,在工作站上运行下面的指令:

roslaunch turtlebot_teleopkeyboard_teleop.launch

    终端上将打印出手动控制TurtleBot移动、旋转等操作的命令。

2)操纵杆

TurtleBot默认使用罗技操纵杆。但存在一个问题,它们使用一个“deadman”按钮,在使用操纵杆的整个过程中该按钮必须一直按下,否则什么也做不了。

当我们第一次设置操纵杆时,默认按键是#5,这可能不是我们期望的。因为完全有可能你的操纵杆根本没有#5这个按钮,因此我们需要更改它。

首先需要确定的是哪个按键与哪个数字相对应。在终端窗口运行:

jstest /dev/input/js0

注意,左边是坐标轴右边是按钮。当你按下每一按钮时,相应的数字将从“开”变成“关”。多次实验,直到你找到最适合你的操纵杆按钮。在这里我们选择#0,它是我们操纵杆上的主触发按钮。

现在你已选定用哪个按钮作为你的“deadman”坐标轴。现在让我们新建一个自定义启动文件:

roscdturtlebot_teleop/launch/

cplogitech.launch myjoystick.launch

geditmyjoystick.launch

在文本编辑器上找到下面这一行代码:

<param name="scale_linear"value="0.5" />

如果axis_deadman不存在,那么在其后面添加一行代码:

<param name="axis_deadman"value="0" />

这行语句将把我们的deadman坐标轴设置成#0,你需要输入你选定的按钮值。保存并退出编辑器。

打开一个新的终端窗口,运行新的启动文件进行远程操作:

roslaunch turtlebot_teleopmyjoystick.launch
你可以在“joystick ROS wiki”页面看到这些值。
回复

使用道具 举报

 楼主| 发表于 2016-12-12 16:45:56 | 显示全部楼层

6 编写你的第一个脚本
现在让我们编写第一个ROS脚本。如果你不明白每一行代码的含义,没有关系,以后你会明白的。

关掉TurtleBot上所有的终端窗口。打开一个新的终端并运行:

roslaunch turtlebot_bringup minimal.launch

    现在转至工作站,克隆这些文章的github库并运行以下简单的脚本:

mkdir ~/helloworld

cd ~/helloworld/


cd turtlebot

python goforward.py

TurtleBot现在应该会向前移动了。按下“CTRL+C”组合键停止它。

现在让我们看一下goforward.py中的代码,运行下面的命令打开它:

gedit goforward.py

在该脚本的最下面你会看到:

if__name__ ==  '__main__':

try:

GoForward()

这些代码表示,当我们运行该脚本时,首先运行GoForward的初始化函数。从这可以看出,程序文档简单明了,而非包罗万象。

让我们做一个有趣的实验——更改命令使TurtleBot转圈。在一个终端窗口运行:

cd~/helloworld/

cp goforward.pygoincircles.py

geditgoincircles.py

将“linear.x=0.2”改成“linear.x=0”,将“angular=0”改成“angular=0.5”。保存并退出,

注意:TurtleBot仅使用linear.x和linear.y这两个值,因为它工作在二维世界。对于无人机,海洋机器人和其他工作在三维环境中的机器人来说,linear.y,angular.x和angular.y值都会用到。

回复

使用道具 举报

 楼主| 发表于 2016-12-15 14:23:22 | 显示全部楼层

7 创建地图与自主导航
1)通过远程控制创建地图

在本示例中,首先远程控制TurtleBot环绕办公室运行一周创建一幅地图。这将为我们提供一幅在其他脚本中可以参考的地图,使TurtleBot能够自主导航。

在TurtleBot上,打开一个终端窗口并运行:

roslaunchturtlebot_bringup minimal.launch

roslaunchturtlebot_navigation gmapping_demo.launch

在工作站上,打开一个终端窗口并运行:

roslaunch turtlebot_rviz_launchers view_navigation.launch

roslaunch turtlebot_teleop keyboard_teleop.launch

提示:使用操纵杆比使用键盘更便利。

现在通过远程控制,操纵TurtleBot围绕你希望创建地图的整个区域环绕一周。

在TurtleBot上,打开一个终端窗口并运行:

rosrun map_server map_saver -f /tmp/my_map

ls /tmp/

现在你会在/tmp/目录下看到两个文件:my_map.pgm和my_map.yaml。将来你创建新的地图时,可以将它们保存成不同的文件名(例如:/tmp/my_office)。

提示:Ubuntu的/tmp/目录在每次重启时自动清除(删除)。如果需要保存这些地图,你可以使用一个不同的目录。

2)自主导航

现在让我们深入了解ROS的力量。使用ROS我们可以采用几行代码控制TurtleBot(或者其他机器人)从一个地方移动到另一个地方,同时避免静态或动态的障碍。

注释:在运行该实例前确保你已创建了地图。

关掉TurtleBot和工作站上所有的终端。在TurtleBot上运行:

roslaunchturtlebot_bringup minimal.launch

roslaunchturtlebot_navigation amcl_demo.launch map_file:=/tmp/my_map.yaml

如果看到“odom received”,你就可以开始工作了。

当TurtleBot上的一切运行成功时,在工作站上运行:

roslaunch turtlebot_rviz_launchersview_navigation.launch –screen

打开RViz显示地图。TurtleBot启动时无法估计自己的位姿,只有当你初始化其位姿后它才能做到这一点。

单击“2D Pose Estimate”确定TurtleBot在地图上的位置。当你按住鼠标键的时候在鼠标指针下面将出现一个箭头——使用该箭头估计TurtleBot的方位。

设置好估计位姿后,选择“2D Nav Goal”并点击你希望TurtleBot去的位置。你还可以采用和“2D Pose Estimate”中相同的方法指定目标方位。

    TurtleBot现在就可以根据你确定的目标方位自主四处运行了。试着指定一个目标位置,并走到TurtleBot前面,看它如何做出反应。

3)TurtleBot充电站:自动充电

这一点可能并不奇怪,TurtleBot知道电量什么时候变低。有了充电站,它就可以自动充电。

确保充电站已插入靠近墙壁的电源(红色指示灯亮)插座,否则的话TurtleBot试图充电时会把充电站推来推去。关闭TurtleBot和工作站上的所有终端窗口。

将TurtleBot放在视线可以看到的距离充电站3米内的任何位置。在那里它就可以利用它的三个红外接收器自动充电。

在TurtleBot上运行:

roslaunch turtlebot_bringup minimal.launch

在工作站上运行:

roslaunch kobuki_auto_dockingminimal.launch –screen

在另一个终端窗口,运行:

roslaunch kobuki_auto_dockingactivate.launch --screen

注意,TurtleBot可能旋转360度以确定距离充电站的理想路径。通常,它首先会沿垂直于充电站的方向运动以便能够计算出理想的路径。

回复

使用道具 举报

 楼主| 发表于 2016-12-17 09:53:51 | 显示全部楼层

8 使用代码控制TurtleBot前进与躲避障碍
假设到目前为止你已克隆了本示例所需的github库并且成功创建了你当前位置的一幅地图(保存在/tmp/mymap)。如果你改变了位置,则需创建一幅新地图。

1)不具有避障功能的TurtleBot

重新运行第一个脚本。在TurtleBot上运行:

roslaunch turtlebot_bringup minimal.launch

在工作站上运行:

python ~/helloworld/goforward.py

你的TurtleBot将会向前行走。故意站在它前面,TurtleBot将会撞到你的脚。按下CTRL+C组合键停止它。

2)具有避障功能的TurtleBot

TurtleBot放置在一个空旷的位置,保证它前进3米不会碰撞到任何东西。在TurtleBot上运行:

roslaunch turtlebot_bringup minimal.launch

roslaunch turtlebot_navigation amcl_demo.launchmap_file:=/tmp/my_map.yaml

在工作站上运行:

roslaunch turtlebot_rviz_launchers view_navigation.launch --screen

TurtleBot无法可靠地确定其初始位姿(它在哪里),因此我们需要使用“2D Pose Estimate”图标给它一个提示。选择“2DPose Estimate”确定TurtleBot的位置。使RViz保持打开以便我们能够监测其路径规划。


提示:你选择“2D Pose Estimate”后TurtleBot能准确地知道自己的位置,即使在行进过程中。

在另一个终端,运行:

python ~/helloworld/goforward_and_avoid_obstacle.py

尝试走到正在行进的TurtleBot路径前面,看它如何响应。

3)TurtleBot为什么转圈?

TurtleBot在四处张望寻找特征,将其与地图上的特征进行对比以确定其所处位置。该过程称作定位。

现在看一下代码:

gedit~/helloworld/goforward_and_avoid_obstacle.py
注意,我们不说“前进几秒”,而说“我们想使其在3米外停止,不管它采取哪条路径”。TurtleBot能够花费60秒的时间进行尝试,并且寻找一条通向该位置的路径,这些都可以通过一些代码来实现。
回复

使用道具 举报

 楼主| 发表于 2016-12-18 13:25:53 | 显示全部楼层

9 使用代码控制TurtleBot运行到地图上指定位置
TurtleBot能够走到一个指定的相对位姿(位姿=位置+方向),它还能够走到一幅地图上的指定位置。

让我们试一下,让TurtleBot走到充电站附近。

在进行该实验之前,确保你已克隆了github库并创建了一幅地图(保存在/tmp/mymap)。如果没有的话,请先按照6.7中的步骤创建地图,然后再返回到这里。

首先,我们需要加载地图,然后用一个接近充电站的位姿更新脚本。距离充电站一米左右的距离较为合适。

在TurtleBot上,打开一个终端窗口并运行:

roslaunchturtlebot_bringup minimal.launch

roslaunchturtlebot_navigation amcl_demo.launchmap_file:=/tmp/my_map.yaml

在工作站上,打开一个终端窗口并运行:

roslaunchturtlebot_rviz_launchers view_navigation.launch --screen

在RViz中,选择“2D PoseEstimate”并点击地图上TurtleBot所在的位置,对齐指示方向的箭头。

接着,运行你的脚本,选择“Publish Point”,在你想让TurtleBot到达的地方旋转(而非单击)你的地图。在屏幕左下角挨着“selectthis point”的地方你会看到三个随着鼠标的移动而变化的数字。记下这些数字。

提示:第三个数字是高度。你看到的可能是一个非0的数字,不用管它,用0就行了。

在一个新的终端窗口,运行:

gedit ~/helloworld/go_to_specific_point_on_map.py

    找到下面这一行代码(第30行):

goal.target_pose.pose = Pose((Point(2.18, -1.7,0.000),Quaternion(0.000, 0.000, 0.892, -1.500)).

用你刚才进行“publish point”操作时记下的数字覆盖Point()中的前两个值。保存并退出。

然后运行:

python~/helloworld/go_to_specific_point_on_map.py

注:如前所示,在rospy.duration运行期内,TurtleBot将会躲避障碍并且试图计算出一条合理的路径。
提示:观察你运行amcl_demo.launch的终端窗口,当TurtleBot试图放弃要到达的目标时,它将以报告的形式显示给你。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|ROS中国论坛    

GMT+8, 2017-4-25 16:41 , Processed in 0.221041 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表