按一下顺序打开网页,按教程来。
http://wiki.ros.org/hydro/Installation/Ubuntu
turtlebot:
http://wiki.ros.org/turtlebot/Tutorials/ 选hydro
http://wiki.ros.org/turtlebot/Tutorials/hydro/Installation
ROS的卸载
由于我是用apt-get方式安装ROS的,卸载使用如下命令:
$ sudo apt-get remove ros-*
从源码安装
1、安装前的准备
$ sudo apt-get install python-rosdep python-wstool ros-indigo-ros
$ sudo rosdep init
$ rosdep update
2、安装rocon、kobuki、turtlebot
这三个是组合空间的关系,必须按照顺序安装
$ mkdir ~/rocon
$ cd ~/rocon
$ wstool init -j5 src https://raw.github.com/robotics-in-concert/rocon/indigo/rocon.rosinstall
$ source /opt/ros/indigo/setup.bash
$ rosdep install --from-paths src -i -y
$ catkin_make
$ mkdir ~/kobuki
$ cd ~/kobuki
$ wstool init src -j5 https://raw.github.com/yujinrobot/yujin_tools/master/rosinstalls/indigo/kobuki.rosinstall
$ 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
从上面的安装顺序以及依次source的setup.bash文件可以看出他们三个工作空间的层级关系。
3、环境设置
【kobuki平台】
# 设置udev规则使得电脑自动识别kobuki串口,无需每次用chmod赋权限
$ . ~/turtlebot/devel/setup.bash
$ rosrun kobuki_ftdi create_udev_rules
# 如果你使用Kinect作为3D传感器就设置一下TURTLEBOT_3D_SENSOR
$ echo "export TURTLEBOT_3D_SENSOR=kinect" >> ~/turtlebot/devel/setup.sh
$ source ~/turtlebot/devel/setup.bash
#将Turtlebot空间设置为默认空间,以后可以不用每次运行source命令
$ echo "source ~/turtlebot/devel/setup.bash" >> ~/.bashrc
接下来说一下电池变量
# 运行turtlebot_dashboard查看Turtlebot运行状态
$ roslaunch turtlebot_bringup minimal.launch
$ roslaunch turtlebot_dashboard turtlebot_dashboard.launch
# 如果看到上面面板上的笔记本电池能够显示电量就不用专门设置下面的电池环境变量了,如果无法正常显示电量的话需要设置以下变量
$ echo "export TURTLEBOT_BATTERY=/proc/acpi/battery/BAT1" >> ~/turtlebot/devel/setup.sh
$ source ~/turtlebot/devel/setup.bash
如果显示找不到/proc/acpi/battery/BAT1
说明电池文件不在这个位置
Linux内核版本<= kernel 2.6的系统电池文件位置应该在/proc/acpi/battery/
名字有可能是BAT0
或者BAT1
Linux内核版本是kernels 3.0+的系统,电池文件在/sys/class/power_supply/
文件夹下,名字有可能是BAT0
或者BAT1
所以TURTLEBOT_BATTERY=/sys/class/power_supply/BAT0
或者TURTLEBOT_BATTERY=/sys/class/power_supply/BAT1
最简单办法是在系统/
目录下搜索BAT0
或者BAT1
文件,从而确认TURTLEBOT_BATTERY
的值
【create平台】
修改~/.bashrc文件,这样每次启动都将自动设置这些环境变量,否则每次都要用export命令逐个添加这些环境变量。
先打开.bashrc文件:
$ gedit ~/.bashrc
再在文件末尾添加如下语句:
(我的移动机器人平台是turtlebot一代:IRobot Create+Kinect)
# For a source installation
source ~/turtlebot/devel/setup.bash
# Export the turtlebot variables
export TURTLEBOT_BASE=create
export TURTLEBOT_STACKS=circles
export TURTLEBOT_3D_SENSOR=kinect
export TURTLEBOT_SERIAL_PORT=/dev/ttyUSB0
到这里就安装完成了。
可以以最小模式运行turtlebot机器人测试一下是否安装成功,如果环境变量配置正确,下面命令中的单词输入一部分之后按下Tab键是可以自动补全该单词的。
$ roslaunch turtlebot_bringup minimal.launch
4、另一种安装方式
前面讲了从源码安装turtlebot包的过程,这种安装方式使得包里的源码都在用户目录(~/)下,运行节点的文件就在~/rocon、~/kobuki、~/turtlebot相应的文件夹里,这样在运行中要修改参数或者修改某个节点就可以直接在这些文件夹下找到对应的文件进行修改了。基于这点考虑,博主推荐使用前面介绍的从源码安装的方式。
下面要介绍deb方式安装的方法,这种方法很简单,运行apt-get命令就可以了,但是问题就来了,这种方式安装会导致turtlebot工作空间中的许多包单独在/opt/ros/indigo/share里面,根本看不出这些包之间的关系,有的时候想单独运行一个节点而不记得名字也没办法根据代码来找这个节点,因为在/opt/ros/indigo/share文件夹下有无数个包,你根本找不过来。
所以对于想理解ROS的工作空间中的包之间的关系、launch文件启动哪些节点、如何编写自己的节点和launch文件的初学者博主不建议以deb方式安装turtlebot包!!!
说了半天,deb安装方式就是apt-get的安装方式,一句话搞定:
$ sudo apt-get install ros-indigo-turtlebot ros-indigo-turtlebot-apps ros-indigo-turtlebot-interactions ros-indigo-turtlebot-simulator ros-indigo-kobuki-ftdi ros-indigo-rocon-remocon ros-indigo-rocon-qt-library ros-indigo-ar-track-alvar-msgs
如果你只是想用一下turtlebot里的某些包而不关心代码,运行上面这行命令就行了。
然后是环境设置:
还是打开.bashrc文件:
$ gedit ~/.bashrc
再在文件末尾添加如下语句:
(我的移动机器人平台是turtlebot一代:IRobot Create+Kinect)
# For a deb installation
source /opt/ros/indigo/setup.bash
# Export the turtlebot variables
export TURTLEBOT_BASE=create
export TURTLEBOT_STACKS=circles
export TURTLEBOT_3D_SENSOR=kinect
export TURTLEBOT_SERIAL_PORT=/dev/ttyUSB0
和前面源码安装不一样的地方就是source的文件不同。
还记得安装这三个工作空间的时候运行的命令里面有三句source命令,他们直接恰好是前后衔接的么:
$ source /opt/ros/indigo/setup.bash
$ source ~/rocon/devel/setup.bash
$ source ~/kobuki/devel/setup.bash
这样思路就很清晰了,刚打开终端的时候默认是运行在turtlebot工作空间的,由于组合空间的层次关系(请看上面三句source命令),最顶层的/opt/ros/indigo/share也可以被rospack找到,这样不管你是想运行turtlebot里面的节点还是/opt/ros/indigo/share下面的节点系统都能找到,不信你用 roscd [package]或者rospack find [package]命令试试看。这也有助于理解工作空间覆盖的问题。