怎么测试turtlebot安装仿真的kinect

turtlebot硬件安装手册_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
turtlebot硬件安装手册
上传于|0|0|文档简介
&&turtlebot硬件安装手册
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢SLAM(12)
写在前面的话
移动机器人是指那些通过传感器获取数据,本地处理数据或者云端处理数据,进而控制其在地面上移动的设备(狭义情况下)。在这里我们使用的移动机器人是turtlebot关于他的介绍请看。使用的传感器是kinect2,关于他的介绍大家可以去网上搜搜,很多的。有了传感器和机器人后,我们就得说说它使用的软件平台,turtlebot很好支持机器人操作系统(Robot Operating System 简称ROS)。关于ROS的介绍参看他的。我们使用ROS就可以比较方便的从kinect2中获取数据,向turtlebot的移动底座发送移动控制命令了。
好了,万事俱备只欠东风。这个东风是指我们要采取什么样的方法来处理数据,使得机器人将要移动的下一个位置是最有效。这个最有效是指什么意思呢?在机器人主动探索领域里,空间的覆盖率是一个指标,这个指标意思是机器人要尽可能快速而有效的探索整个环境。所以根据数据预测的下一个机器人的位置,就要有效的诱导机器人探索整个空间。如下图所示的二维栅格地图,蓝色的表示障碍物,红色的表示机器人移动的历史轨迹。当然这只是我们理想的机器人运动轨迹,实际当中往往不是这样的,当然研究的目的就是希望机器人的实际运动轨迹无限的逼近这个理想轨迹。这也正是我们研究的意思和目的。
下面我主要介绍其中的一种理论:基于信息论的主动探索。最后再简单介绍一下代码结构和核心代码。
基于信息论的主动探索
下面介绍的主要思想参照的是文献[1],主动探索理论研究的问题是:假设一个移动机器人没有环境的任何先验知识,但是其可以通过传感器收集环境数据,主动探索算法就要根据这些数据决定机器人向哪个方向移动和移动多少距离。如下图所示,蓝色的依然表示障碍物,紫红色表示机器人当前的位置,红色小圈表示传感器收集到的数据。下一步就是要决定机器人应该向那个方向移动,移动多少?
在开始介绍之前我们先了解两个概念:
1、信息熵:是平均而言一件事情发生时我们得到的信息量的大小,小概率事件的信息量大。H=-∑p(x)logp(x), H:信息熵,p(x):某个事件发生的概率。
2、互信息是一种信息的度量,他可以看成一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不确定性。上图中的绿色的星就表示互信息最大的数据。
基于信息论的主动探索理论的核心想法有二,其一是:长远来看我们探索周围环境是在降低地图的信息熵,即就是重构的环境模型更加确定。其二是:就目前来看,机器人要去的下一个位置(包括位置和姿态,位置:机器人在地图中的x,y坐标,和机器人的朝向,用一个和x坐标轴的夹角表示)的互信息要最大,也就是信息增益最大。
首先定义二维栅格地图 m 的信息熵:
H(m)=-∑i∑jp(mi,j)log&p(mi,j)
其中mi,j表示栅格地图m中的一个栅格,如果说这个栅格没有被观测到或者说是未知的,则:p(mi,j)=0.5 。如果说这个栅格已经被观测到了,不管是障碍物还是空地,都算是已知的区域,那么肯定对地图的信息熵是没有贡献的,则:p(mi,j)=1
有了地图的信息熵,我们就可以定义互信息或者说信息增益:
I(m,xi)=H(m)-H(m|xi)
其中H(m|xi)表示:如果机器人运动到xi位置地图的信息熵。
那么求下一个最有效的或者最能带来信息增益的位置就很好理解了。
x*=argmaxxi∈Laction&I(m,xi)
其中Laction表示机器人位置可行域的集合,这个式子表示的意思就是:机器人下一个最有效的位置是信息增益最大的位置。
代码结构和和核心代码介绍
代码在github上,,下图是代码的文件结构:
include:包含的头文件
launch:ROS的launch文件(如果不知道这是什么,请先看看ROS的)
src:源代码
CMakeLists.txt:是cmake的配置文件
package.xml:ROS工程的配置文件
首先来看launch/turtlebot_gmapping.launch
name="scan_topic"
default="scan_kinect" /&
name="base_frame"
default="base_footprint"/&
name="odom_frame"
default="odom"/&
file="$(find turtlebot_bringup)/launch/minimal.launch"/&
file="$(find turtlebot_exploration_3d)/launch/3dsensor.launch"&
name="scan_topic" value="$(arg scan_topic)"/&
pkg="tf" type="static_transform_publisher" name="base_footprint_to_laser" args="0 0 0.5 0 0 0 /base_footprint /laser 50" /&
pkg="tf" type="static_transform_publisher" name="base_footprint_to_kinect2laser" args="0 0 0.5 0 0 0 /base_footprint /kinect2_depth_frame 50" /&
pkg="tf" type="static_transform_publisher" name="base_footprint_to_kinect2_link" args="0 0 0.5 -1.57 0 -1.57 /base_footprint /kinect2_link 50" /&
pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen"&
name="scan_topic" value="$(arg scan_topic)"/&
name="base_frame" value="$(arg base_frame)"/&
name="odom_frame" value="$(arg odom_frame)"/&
name="map_update_interval" value="5.0"/&
name="maxUrange" value="7.9"/&
name="maxRange" value="8.0"/&
name="sigma" value="0.05"/&
name="kernelSize" value="1"/&
name="lstep" value="0.05"/&
name="astep" value="0.05"/&
name="iterations" value="5"/&
name="lsigma" value="0.075"/&
name="ogain" value="3.0"/&
name="lskip" value="0"/&
name="minimumScore" value="200"/&
name="srr" value="0.01"/&
name="srt" value="0.02"/&
name="str" value="0.01"/&
name="stt" value="0.02"/&
name="linearUpdate" value="0.5"/&
name="angularUpdate" value="0.436"/&
name="temporalUpdate" value="-1.0"/&
name="resampleThreshold" value="0.5"/&
name="particles" value="80"/&
name="xmin" value="-1.0"/&
name="ymin" value="-1.0"/&
name="xmax" value="1.0"/&
name="ymax" value="1.0"/&
name="delta" value="0.01"/&
name="llsamplerange" value="0.01"/&
name="llsamplestep" value="0.01"/&
name="lasamplerange" value="0.005"/&
name="lasamplestep" value="0.005"/&
from="scan" to="$(arg scan_topic)"/&
file="$(find turtlebot_exploration_3d)/launch/move/move_base.launch.xml"&
name="laser_topic" value="$(arg scan_topic)"/&
pkg="turtlebot_exploration_3d" type="scan_to_pcl" name="scan_to_pcl" /&
关于launch文件写法的详细介绍,下面分别介绍launch/turtlebot_gmapping.launch中各个部分代码的含义:
&arg name="scan_topic"
default="scan_kinect" /&
&arg name="base_frame"
default="base_footprint"/&
&arg name="odom_frame"
default="odom"/&
定义三个局部变量,这三个量有默认值也可以被改变,如下将“scan_topic”的值改为“scan”:
$ roslaunch turtlebot_k2_exploration_3d turtlebot_gmapping.launch scan_topic:=/scan
&include file="$(find turtlebot_bringup)/launch/minimal.launch"/&
启动turtlebot底盘的驱动,他订阅了发布geometry_msgs/Twist类型消息的topic,这个消息中包含了机器人运动的指令。
&include file="$(find turtlebot_exploration_3d)/launch/3dsensor.launch"&
&arg name="scan_topic" value="$(arg scan_topic)"/&
&/include&
启动kinect2的驱动,关于如何安装kinect2的驱动请,另外一片博客中介绍了如何使用kinect2驱动获取数据
&node pkg="tf" type="static_transform_publisher" name="base_footprint_to_laser" args="0 0 0.5 0 0 0 /base_footprint /laser 50" /&
&node pkg="tf" type="static_transform_publisher" name="base_footprint_to_kinect2laser" args="0 0 0.5 0 0 0 /base_footprint /kinect2_depth_frame 50" /&
&node pkg="tf" type="static_transform_publisher" name="base_footprint_to_kinect2_link" args="0 0 0.5 -1.57 0 -1.57 /base_footprint /kinect2_link 50" /&
相关坐标的转换,详细资料请参考, 坐标转换的意义就是可以将所有的位置转换到同一坐标参考系,而且不同坐标系之间可以自由的转换。tf包就是帮助我们做这个事情的。
&node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen"&
&param name="scan_topic" value="$(arg scan_topic)"/&
&param name="base_frame" value="$(arg base_frame)"/&
&param name="odom_frame" value="$(arg odom_frame)"/&
&param name="map_update_interval" value="5.0"/&
&param name="maxUrange" value="7.9"/&
&param name="maxRange" value="8.0"/&
&param name="sigma" value="0.05"/&
&param name="kernelSize" value="1"/&
&param name="lstep" value="0.05"/&
&param name="astep" value="0.05"/&
&param name="iterations" value="5"/&
&param name="lsigma" value="0.075"/&
&param name="ogain" value="3.0"/&
&param name="lskip" value="0"/&
&param name="minimumScore" value="200"/&
&param name="srr" value="0.01"/&
&param name="srt" value="0.02"/&
&param name="str" value="0.01"/&
&param name="stt" value="0.02"/&
&param name="linearUpdate" value="0.5"/&
&param name="angularUpdate" value="0.436"/&
&param name="temporalUpdate" value="-1.0"/&
&param name="resampleThreshold" value="0.5"/&
&param name="particles" value="80"/&
&param name="xmin" value="-50.0"/&
&param name="ymin" value="-50.0"/&
&param name="xmax" value="50.0"/&
&param name="ymax" value="50.0"/&
make the starting size small for the benefit of the Android client's memory...
&param name="xmin" value="-1.0"/&
&param name="ymin" value="-1.0"/&
&param name="xmax" value="1.0"/&
&param name="ymax" value="1.0"/&
&param name="delta" value="0.01"/&
&param name="llsamplerange" value="0.01"/&
&param name="llsamplestep" value="0.01"/&
&param name="lasamplerange" value="0.005"/&
&param name="lasamplestep" value="0.005"/&
&remap from="scan" to="$(arg scan_topic)"/&
这里启动了一个slam程序,,这个程序主要是根据激光数据实时的重建二维栅格地图,为计算地图的信息熵提供最基本的依据。
&include file="$(find turtlebot_exploration_3d)/launch/move/move_base.launch.xml"&
&arg name="laser_topic" value="$(arg scan_topic)"/&
&/include&
这里启动了movebase,, 这个主要是根据传感器获得的数据构建costmap,costmap指的是二维栅格地图中哪里有障碍物,障碍物周围多大范围机器人不能靠近等等信息,然后根据costmap规划全局路径和局部路径。
&node pkg="turtlebot_exploration_3d" type="scan_to_pcl" name="scan_to_pcl" /&
这里主要是将kinect2获得的激光数据,从sensor_msgs::LaserScan类型转换为pcl::PointCloud类型。
src/turtlebot_exploration_3d.cpp是核心的程序文件,希望感兴趣的同学直接阅读源码,我在其中关键的地方已经做了注释!
tf链接问题,我使用的是turtlebot,使用tf链接的时候曾经出现了机器人抖动的问题(在rviz中看到模拟机器人一直在转来转去,其实此时真实机器人已经不动了)。最后将相机和激光的数据从链接base_link转到了链接base_footprint,问题就解决了。
在使用move_base时其中需要配置局部路径规划,源程序使用默认的dwa_local_planner,程序经常报错:“DWA planner failed to produce path”。我发现原因是,我使用的是kinect2,而不是360度的激光,dwa_local_planner 默认使用的是360度激光。
程序报错:“The origion for the sensor at(0,0,0.5) is out of map bounds so the costmap cannot raytrace for it”。出现这个问题原因可能是costmap配置文件中z_voxels参数设置可能不合适,这个参数的设置也与垂直方向的分辨率有关。
[1] S. Bai, J. Wang, K. Doherty, and B. Englot, “Inference-Enabled Information-Theoretic Exploration of Continuous Action Spaces,”Proceedings of the 17th International Symposium on Robotics Research, 16 pp., September 2015.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:24734次
排名:千里之外
原创:44篇
评论:22条
(4)(1)(1)(2)(6)(1)(2)(1)(3)(2)(3)(5)(6)(3)(2)(1)(1)(1)(1)1648人阅读
ROS(hydro)学习总结(6)
一、将Hokuyo&Laser添加到Turtlebot
1、udev配置
(1)进入/etc/udev/rules.d目录,新建一个50-laser.rules文件,添加以下内容到该文件:KERNEL==&ttyACM[0-9]*&,&MODE=&0777&
(2)重启udev以使之前添加的.rules文件生效:
$sudo&&/etc/init.d/udev&&restart
(3)插入激光扫描仪,并检测设备权限:
$&ls&-al&/dev/ttyACM0&,如果显示&crw-rw--&--&1&root&dialout…….
则输入$&sudo&chmod&a+rw&/dev/ttyACM0,再查看权限应该如下:
crw-rw-rw-&1&root&dialout&166……
2、新建一个catkin空间并添加turtlebot程序包
(1)回到home目录下,新建一个hydro空间:
$mkdir&hydro&
$mkdir&src
(2)下载turtlebot程序包到src目录
$&git&clone&/turtlebot/turtlebot.git
(3)编译程序包
$cd&..&&&回到hydro目录才能执行catkin_make
$catkin_make
$source&&~/hydro/devel/setup.bash
(4)修改&.bashrc文件【.bashrc文件在home目录下】
$gedit&.bashrc
&用#符号注释掉文件末尾&source&/opt/ros/hydro/setup.bash
并添加另一条&source&&~/hydro/devel/setup.bash
修改好过后执行:&$source &~/.bashrc
3、修改turtlebot_description目录下的内容
$roscd&turtlebot_description
$gedit&./urdf/turtlebot_library.urdf.xacro
在文件末尾处&/robot&标签前面添加以下内容:
&joint&name=&laser&&type=&fixed&&
&&&&&origin&xyz=&-0.005&0.00&0.360&&rpy=&3.&&/&
&&&&&parent&link=&base_link&&/&
&&&&&child&link=&base_laser_link&&/&
&&&/joint&
&&&link&name=&base_laser_link&&
&&&&&visual&
&&&&&&&geometry&
&&&&&&&&&box&size=&0.00&0.05&0.06&&/&
&&&&&&&/geometry&
&&&&&&&material&name=&Green&&/&
&&&&&/visual&
&&&&&inertial&
&&&&&&&mass&value=&0.000001&&/&
&&&&&&&origin&xyz=&0&0&0&&/&
&&&&&&&inertia&ixx=&0.0001&&ixy=&0.0&&ixz=&0.0&
&&&&&&&&iyy=&0.0001&&iyz=&0.0&
&&&&&&&&izz=&0.0001&&/&
&&&&&/inertial&
4、修改turtlebot_bringup下面的launch文件
(1)3dsenser.launch中,将&arg&name=&scan_topic&&default=&scan&&/&修改为
&arg&name=&scan_topic&&default=&kinect_scan&&/&&
注:经过对比实验,我们也测试过不修改这一步,实验结论:这个修改对我们第二步用laser做地图创建应该没有影响。
(2)minimal.launch中,在文件末尾&/launch&标签之前添加以下内容:
&node&name=&laser_driver&&pkg=&hokuyo_node&&type=&hokuyo_node&&
&&&&param&name=&frame_id&&value=&base_laser_link&&/&
5、安装hokuyo运行节点
sudo&apt-get&install&ros-hydro-hokuyo-node
二、利用hokuyo&laser创建地图步骤
【接下来步骤跟之前的地图创建步骤一样,只是对minimal.launch文件的修改,是我们可以利用hokuyo&laser来创建地图】
1、$roslaunch&turtlebot_bringup&minimal.launch
2、$roslaunch&turtlebot_navigation&gmapping_demo.launch
3、$roslaunch&turtlebot_rviz_launchers&view_navigation.launch
4、$roslaunch&turtlebot_teleop&keyboard_teleop.launch
5、地图构建完成之后保存&:
$rosrun&map_server&map_saver&-f&/tmp/my_map&&
注意:在地图保存完之前不要关闭gmapping.launch
三、已知地图下的自动导航
1、运行上一步中已经保存好的地图
$roslaunch&&turtlebot_navigation&amcl_demo.launch&map_file:=/tmp/my_map.ymal
2、$roslaunch&turtlebot_rviz_launchers&view_navigation.launch
开始的时候turtlebot&不知道他自己在地图的什么位置,所以我们要指示给他他的初始位置和面向
2.1&点击“2D&Pose&Estimate”按钮
2.2&点击地图上turtlebot所在的位置然后拉箭头到turtlebot面向的方向。你将看到很多绿色箭头的集合表明了turtlebot&所在的位置。绿色的激光扫描直线代表turtlebot&看到的墙。如果上诉特征没有出现请重复这一步骤。
2.3&发送目标
2.3.1&点击“2D&Nav&Goal”按钮
2.3.2&点击地图上任意一点你想让turtlebot&去的地方然后选择箭头的朝向来确定turtlebot的面向
如果你想在turtlebot&到达目标停止turtlebot,可以将他当前所在
的位置发送给他。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:10943次
排名:千里之外
原创:14篇
(1)(1)(1)(1)(1)(1)(2)(2)(2)(1)(4)0、什么是TurtleBot?
我自己的理解就是:TurtleBot是一款移动机器人,就是主要研究让机器人自主决定应该想那个方向走,怎么绕过障碍物,最终到达目的地。与之对应还有很多机器人,比如google的机器人(主要是仿生,且不容易摔倒,摔倒了也能自己爬起来)。我喜欢的方向是机器视觉,主要目标是让TurtleBot去感知环境,不会撞到障碍物,而且可以辨识目标。所以在TurtleBot上采用vSLAM技术,后面主要讲的也是主要与之相关的。
1、本篇目标
TurtleBot实现简单的目标跟踪
TurtleBot主要由3部分组成(从上到下):Kinect2,笔记本,移动底座,最后加支架。
硬件不多说,这边博客主要是讲解中间重点部分软件的安装和测试。图中标记的1,2,3,是后面讲解的大致顺序。
2、硬件,软件环境
TurtleBot2(其实主要指的是kobuki移动底座和其支架)
Microsoft Kinect2(注意我这使用的是Kinect2)
笔记本(根据需求自己选购)
操作系统:Ubuntu
机器人操作系统:ROS
软件库:libfreenect2,iai_kinect2
3、系统、ROS安装
在说安装软件之前简单的说说TurtleBot机器人,这是TurtleBot的官网,里面有代理商,你可以去找。
下来当然是要安装操作系统和ROS(机器人操作系统)。在这里需要注意的是:
建议安装Ubuntu,因为ROS对它支持的比较好
要注意ROS的版本和Ubuntu的版本是有对应的,不是随意的组合(我刚开始就在这吃亏了)
这两东东的安装,有两种方式:
先安装Ubuntu,在安装ROS。至于怎么安装Ubuntu,网上的资料很多(建议直接装到真机上,不要用虚拟机,不是很好用)。
ROS安装,ROS有很多版本供您选择。但是要注意,只有ROS Indigo之后的才支持Kinect2。这是ROS的官网。在这里有详细的安装教程。
简单方式,直接使用别人封装好的Ubuntu镜像,因为这样在Ubuntu上已经安装好了ROS。(我采用的就是这种方式,Ubuntu14.04,ROS_Indigo)。镜像的地址:
好了,经过这个步奏你应该已经装好了这两个软件。你可以在终端中运行下面命令试试,看有没有报错:
如果没有表示,你已经安装好了。在这个基础之上,你应该按照ROS官网教程配置自己的工作空间,我建议使用catkin方式。
4、Kinect2驱动安装
需要做的事情有两件:编译安装libfreenect2和iai_kinect2。幸运的是这两个作者都在的github中写了详细的安装过程。
libfreenect2
iai_kinect2
其实上面说的不是非常的准确,libfreenect2是驱动Kinect2让他工作的,我们只要编译安装好之后就不用管了。iai_kinect2其实是一个工具集,主要包括:1、相机标定工具;2、深度数据配准工具;3、libfreenect2和ROS之间的转换工具,确切的说就是将Kinect2的数据流转换给ROS,这样我们就可以借助ROS上的工具对数据流进行处理了;4、查看数据流的工具
因为Kinect是RGBD相机,我们需要知道怎么将深度信息和彩色信息对应,知道这个对应的过程就叫做相机标定。在
中有详细的标定过程。下面简单说说刚才说的那个“对应”的形式化表示:
\begin{matrix}
\end{matrix}
\begin{matrix}
\end{matrix}
其中$u,v$表示对应的RGB图像中的点,$x,y,z$表示与之对应的空间中的点,这个坐标原点在相机的镜头处。$R$是旋转矩阵,$33$,$T$是平移向量,$31$。$R,T$就是我们求的对应关系。
在这一步你应该可以通过测试程序看到Kinect前的图像,表示你已经安装好Kinect2的驱动了,并且可以通过iai_kinect2将Kinect2的数据转给ROS了。
若果有错误,请重新按照步奏再做一遍
5、测试ROS和TurtleBot底座通信是否正常
这里主要是硬件连接和终端命令执行。保证硬件连接正确后就以在在终端中执行命令了:
然后打开底座的电源。
ctrl+alt+t新打开一个终端,执行下面命令:
& roslaunch turtlebot_bringup minimal.launch
再打开一个终端,执行下面命令:
& roslaunch turtlebot_teleop keyboard_teleop.launch
下来你就可以按照提示信息按相应的键遥控溜达你的机器人了(i:前进;,:后退;j:左转;l:右转;k:刹车)
注意:确保你机器人的电池有足够的电量。
5.1、roslaunch turtlebot_bringup minimal.launch 异常处理
解决办法如下:
如果出现异常情况,首先确认TurtleBot的移动底座的开关是否打开,笔记本和底座的连线是否连接完好
如果确认上面的没有问题,还时出现下面的问题:
提示找不到设备,分析原因就可能是驱动不对。修改的beg的办法就是查看源码修改相应的参数:
我们执行的命令是:“roslaunch turtlebot_bringup minimal.launch”,那么我们就
& roscd turtlebot_bringup
进入“turtlebot_bringup”,然后
& cd launch
找到minimal.launch文件复制一份,并将其命名为“my_minimal.launch”。使用编辑将其打开
& gedit my_minimal.launch
可以看到代码的第二行就是设置TurtleBot移动底座的类型,在代码中提供了“create,roomba”两种类型。但是我的是“kobuki”,我只在这里修改运行后报错(改为)。然后我就找这个参数最后传给了谁,发现只有两个文件用到这个参数:robot.launch.xml和mobile_base.launch.xml。直接将包含有mobile_base.launch.xml的代码修改为:
&include file=&$(find turtlebot_bringup)/launch/includes/my_mobile_base.launch.xml&&
具体怎么改,继续往下看:
关闭当前文件,执行命令:
& cd includes
你就会发现mobile_base.launch.xml就在这里,打开mobile_base.launch.xml:
& cat mobile_base.launch.xml
查看源码,发现在第四行,我们传进来的base参数原来别加入到了路径当中。路径指的就是当前的路径,你执行“ls”命令后就会发现有create和roomba文件夹,同时你也会看见有kobuki文件夹,进入kobuki文件夹,你会发现有“mobile_base.launch.xml”文件,将这个文件复制一份,并命名为“my_mobile_base.launch.xml”,然后将
&remap from=&mobile_base/commands/velocity& to=&cmd_vel&/&
的注释去掉。要不然你用他的驱动底座后收不到“cmd_vel”话题下的消息。然后回退到上层目录,将mobile_base.launch.xml复制一份,并且命名为:“my_mobile_base.launch.xml”。然后打开它,直接将
&include file=&$(find turtlebot_bringup)/launch/includes/$(arg base)/mobile_base.launch.xml&&
&include file=&$(find turtlebot_bringup)/launch/includes/kobuki/mobile_base.launch.xml&&
然后打开底座电源,链接好线,执行(注意使用的是my_minimal.launch):
& roslaunch turtlebot_bringup my_minimal.launch
& roslaunch turtlebot_teleop keyboard_teleop.launch
现在你就可以溜达你的机器人了~~~
++++++++++++++++++++++++++++基本的环境已经配置好了++++++++++++++++++++++++++++
在基本的环境配置好了基础之上,我们将处理从kinec2拿到的数据,然后向底座发命令,让其执行响应的移动操作。
刚开始,我们当然不是从头写程序,而是先看别人的代码然后进行响应的修改。首先推荐一本书(ros_by_example ),我们这里用的代码都是这本书上的。先安装必要的工具:
& sudo apt-get install ros-indigo-turtlebot-bringup \
ros-indigo-turtlebot-create-desktop ros-indigo-openni-* \
ros-indigo-openni2-* ros-indigo-freenect-* ros-indigo-usb-cam \
ros-indigo-laser-* ros-indigo-hokuyo-node \
ros-indigo-audio-common gstreamer0.10-pocketsphinx \
ros-indigo-pocketsphinx ros-indigo-slam-gmapping \
ros-indigo-joystick-drivers python-rosinstall \
ros-indigo-orocos-kdl ros-indigo-python-orocos-kdl \
python-setuptools ros-indigo-dynamixel-motor-* \
libopencv-dev python-opencv ros-indigo-vision-opencv \
ros-indigo-depthimage-to-laserscan ros-indigo-arbotix-* \
ros-indigo-turtlebot-teleop ros-indigo-move-base \
ros-indigo-map-server ros-indigo-fake-localization \
ros-indigo-amcl git subversion mercurial
然后克隆代码:
& cd ~/catkin_ws/src
& git clone /pirobot/rbx1.git
& git checkout indigo-devel
& cd ~/catkin_ws
& catkin_make
& source ~/catkin_ws/devel/setup.bash
& rospack profile
下面我们就是将一些launch文件进行修改,我们修改的时候并不是在原文件上修改而是同名复制一份前面加“my_”的,例如原文件叫:“minimal.launch”,我们复制的就叫:“my_minimal.launch”。修改的主要内容是:修改数据流输入的话题;下面我们只是说在复制后的文件中怎么改,去掉“my_”就是原文件名了。
& roscd rbx1_vision
& cd launch
& gedit my_face_tracker2.launch
&remap from=&input_rgb_image& to=&/camera/rgb/image_raw&/&
&remap from=&input_depth_image& to=&/camera/depth_registered/image_raw&/&
&remap from=&input_rgb_image& to=&/kinect2/qhd/image_color&/&
&remap from=&input_depth_image& to=&/kinect2/sd/image_depth&/&
& roscd rbx1_apps
& cd launch
& gedit my_object_tracker.launch
&remap from=&camera_info& to=&/camera/rgb/camera_info&/&
&remap from=&camera_info& to=&/kinect2/qhd/camera_info&/&
7、启动主程序
启动的时候每一句话一个终端,我在这就一块给出了:
& roslaunch turtlebot_bringup minimal.launch 或者 roslaunch turtlebot_bringup my_minimal.launch
& roslaunch kinect2_bridge kinect2_bridge.launch
& roslaunch rbx1_vision my_face_tracker2.launch
& roslaunch rbx1_apps my_object_tracker.launch
尽可能让你的脸出现在视频监视窗口中,并且让程序找到你的脸,然后你左右移动,就会看到TurtleBot发生响应的转动,因为这个程序尽可能的将你的脸放在画面的中间。
阅读(...) 评论()

我要回帖

更多关于 turtlebot2 的文章

 

随机推荐