暑期学校用turltebot做了diy项目,在配置环境时碰到了不少坑,在这里记录一下自己的辛酸历程。
安装Ubuntu14.04双系统
注意Ubuntu的版本跟ROS的版本是相对应的,每一版ROS都有对应的Ubuntu版本,不要装错了,我这里装的是Ubuntu14.04+indigo
这个双系统安装过程就没什么好说的了,网上安装博客一大堆,我遇到的问题就是开机时会在logo处卡死,是NVIDIA显卡的问题,开机摁e进入设置模式,将splash quiet后面加上nomodeset就好了,开机后再修改grub文件
sudo gedit /etc/default/grub 打开grub文件
将 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
修改为: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
然后保存关闭,再在终端中输入sudo update-grub就ok了。
还有,如果开机没有开机项的话可以用easyBCD试一下
安装ROS-indigo
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release-sc) main" >> /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 0xB01FA116
$ sudo apt-get update
$ sudo apt-get install ros-indigo-desktop-full
$ sudo rosdep init
$ rosdep update
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ sudo apt-get install python-rosinstall
安装turtlebot相关的包
$ sudo apt-get install ros-indigo-turtlebot-*
安装完成后可以用
$ roscore
检测一下安装是否成功,成功的话会显示started core service [/rosout]
网络配置
turtlebot的操作一般是用一台电脑连接turtlebot,这台电脑需要跟着turtlebot动,称为turtlebot端,用另一台电脑远程登录turtlebot端,负责遥控,称为workstation。
turtlebot端配置
$ ifconfig
获取 IP_OF_TURTLEBOT
$ echo export ROS_MASTER_URI=http://IP_OF_TURTLEBOT:11311 >> ~/.bashrc
$ echo export ROS_HOSTNAME=IP_OF_TURTLEBOT >> ~/.bashrc
$ source ~/.bashrc
workstation配置
$ ifconfig
获取 IP_OF_PC
$ echo export ROS_MASTER_URI=http://IP_OF_TURTLEBOT:11311 >> ~/.bashrc
$ echo export ROS_HOSTNAME=IP_OF_PC >> ~/.bashrc
$ source ~/.bashrc
测试网络配置
在workstation端登录turtlebot端,-Y用于显示图形界面
$ ssh -Y turtlebot端主机名@IP_OF_TURTLEBOT
启动 Turtlebot
$ roslaunch turtlebot_bringup minimal.launch
新开一个终端登录turtlebot后,运行下面命令
$ roslaunch turtlebot_teleop keyboard_teleop.launch
如果能用终端提示的信息遥控turtlebot,则证明成功。
这一部分作者是在实验室的局域网下实现的,使用校园网发现无法连接。
demo运行篇
这一部分主要介绍使用kinect显示图像,使用rviz显示图像、交互控制turtlebot,使用turtlebot机器人follower,创建室内地图。以下操作都是在workstation端执行。
作者一开始用的是实验室早就装好环境的电脑做的,在这一部分碰到了十分多的坑,基本执行哪个命令都是报no device is connected,网上的教程大多都说是驱动错误,需要重装驱动,或者就是要设置~/.bashrc里的相机型号。但是我却发现实验室的电脑无法重装驱动,无论是用apt安装还是源码安装都装不上,只好去修改相机型号,也没能解决问题。所以只能弃用实验室的电脑,换上自己的电脑,从双系统开始装,实验室的电脑重新装一下ros和turtlebot应该也是可以用的,但不是自己的电脑也不好随便搞。如果在重新装了环境之后还是不能正常连接kinect的话,有可能是usb口的问题,把usb3.0换成usb2.0就好了。
获取kinect图像
登入turtlebot端,启动turtlebot
$ roslaunch turtlebot_bringup minimal.launch
新开一个终端登录turtlebot后,运行下面命令启动相机
$ roslaunch openni2_launch openni2.launch
再新开一个终端,运行下面命令显示 RGB 图像:
$ rosrun image_view image_view image:=/camera/rgb/image_raw
运行下面命令显示深度图像:
$ rosrun image_view image_view image:=/camera/depth/image
通过rviz显示图像
登入turtlebot端,启动turtlebot
$ roslaunch turtlebot_bringup minimal.launch
新开终端,运行下面命令:
$ roslaunch turtlebot_bringup 3dsensor.launch
新开终端,运行下面命令:
$ roslaunch turtlebot_rviz_launchers view_robot.launch
在界面中勾选 Registered DepthCloud 选项,显示深度图像和彩色图像。
通过rviz交互控制机器人
登入turtlebot端,启动turtlebot
$ roslaunch turtlebot_bringup minimal.launch
新开终端,运行 turtlebot_maker_server:
$ roslaunch turtlebot_interactive_markers interactive_markers.launch
新开终端,运行 rviz
roslaunch turtlebot_rviz_launchers view_robot.launch
交互操作:选中工具栏中的“interactive marker”并点击 interact 来操
作 turtlebot。红色箭头控制机器人前进后退,紫色圆环控制机器人旋转。
Turtlebot 机器人 Follower
turtle的小跟班功能,可以寻找其前方一定范围内的物体,并把物体的中心作为
他的视点,物体前进他就前进,物体后退他就后退。
登入turtlebot端,启动turtlebot
$ roslaunch turtlebot_bringup minimal.launch
打开另一终端,登入 Turtlebot 主机,运行下面命令启动 follower 程序:
$ roslaunch turtlebot_follower follower.launch
新开一个终端,运行以下命令,控制跟随的各项参数:
rosrun rqt_reconfigure rqt_reconfigure
使用 Turtlebot 机器人创建室内地图
登入turtlebot端,启动turtlebot
$ roslaunch turtlebot_bringup minimal.launch
打开另一终端,登入 Turtlebot 主机,运行下面命令启动建地图程序:
$ roslaunch turtlebot_navigation gmapping_demo.launch
新打开两个终端,登入 Turtlebot 主机,分别运行:
$ roslaunch turtlebot_rviz_launchers view_navigation.launch
$ roslaunch turtlebot_teleop keyboard_teleop.launch
通过键盘遥控 Turtlebot 机器人扫描房间,当地图建立完全后,新开终端运行下面命令保存地图:
$ rosrun map_server map_saver -f /tmp/my_map
运行下面命令:
$ ls /tmp/
我们能够看到/tmp 文件夹下有两个文件 my_map.pgm 和 my_map.yaml,表明地
图保存成功。
最后就可以用保存的地图让机器人自动导航啦,祝大家玩的愉快。