官方教程:http://turtlebot3.robotis.com/en/latest/sbc_software.html
所谓SBC是single-board computer的缩写,也就是单板机。我们这里分别指的就是waffle上的intel joule和burger上的raspberry pi 3.
1. 在Burger(Raspberry Pi 3)上安装Linux
你需要:读卡器一个,SD卡一张(至少8G),HDMI线一条,支持HDMI的显示器(注意看显示器支持的接口以及公母,有的是VGA,需要VGA转HDMI的线)一个,键盘,鼠标。
接下来的操作是在你的PC上进行的:
(1)下载ubuntu系统:https://ubuntu-mate.org/download/ (找Raspberry Pi)
(2)SD卡插入读卡器,插上电脑,使用Win32DiskImager(官网在这:https://sourceforge.net/projects/win32diskimager/ 网上找一个能用的就行):
1)格式化SD卡为FAT32位,在我的电脑/我的计算机中选中U盘右键格式化,格式为FAT32;
2)启动Win32DiskImager;
3)Image File处选择上面(1)中下载的镜像文件(点击后面的那个像文件夹的图标),后面的Device选择SD卡(注意别选错了);
4)点write,然后Yes,开始写入;
5)写入完成,会提示Write Successful!点击Ok,系统准备完成。
(3)(接下来的操作是在树莓派上)SD卡插入树莓派,给树莓派连接显示器、鼠标、键盘,最后上电(要么是使用OpenCR(就是下面那块板子)供上来的电,要么使用普通USB(就是普通安卓手机充电线)供电,推荐后者,因为后面的操作很多,要是电池没电(OpenCR会以一秒频率通过蜂鸣器报警),场面就会变得非常尴尬)。一切正常的话,系统会开始安装,安装过程没什么好说的,注意看屏幕选择就行了(如果有问题可以看看上一篇博客,这个系统虽然不一样,但是安装过程基本都差不多),密码不要设得太复杂,这不是个人设备也不会长期接入互联网,没人会来hack it。
如果一切顺利的话,系统就会进入到桌面,跟上一篇博客一样,快捷键Ctrl+Alt+T,将会弹出终端(对,就是那个“Dos”一样的界面(当然这么说是不准确的!)!)。
2.在Waffle(Intel Joule)上安装Linux
你需要:U盘一个,USB hub一个,Micro HDMI线一条,支持HDMI的显示一个,键盘,鼠标
接下来的操作是在你的PC上进行的:
(1)下载Ubuntu image:http://people.canonical.com/~platform/snappy/tuchuck/desktop-final/tuchuck-xenial-desktop-iso-20170317-0.iso
(2)如果需要更新BIOS,请按照此教程:https://software.intel.com/en-us/flashing-the-bios-on-joule,在开始之前请注意Intel joule的散热问题,至少要有散热片或者其他散热措施,纸质说明书上没有散热片的安装,请拉到最后。
(3)使用UltraISO工具制作启动盘,intel joule本身是有一个预装的系统的,所以正常开机是没有问题的,同时它上面也有一个SD卡,试了下把系统装到SD卡上面并不能启动安装,所以还是使用U盘安装吧,UltraISO制作启动盘的教程在此:http://jingyan.baidu.com/article/a378c960630e61b329283045.html。
(4)启动盘做好,就可以把鼠标键盘插到joule上,显示屏也接上,u盘也插上,准备工作就做好了,下面开始转到joule上操作了,先不要供电,先看这个:供电和树莓派一样,可以从opencr供电,但是出于相同的原因,最好还是使用DC供电,就是给电池充电的那个DC圆形接头,直接插到intel joule上,注意这个是12v供电,不要随意看接口相同就往上插,5v供给joule板小灯会闪烁,但是无法开机。
(5)好了,现在供电开机,屏幕可能会闪烁,没关系,等出现intel标的时候,按F7进入Boot manager,选择EFI USB Device,确定。开始进入到ubuntu安装,随后会让选择installation type,选择erase disk and install ubuntu,然后continue,选择MMC/SD card #2 (mmcblk1) - 15.7 GB MMC 016G32,然后continue,接下来的安装过程就没什么好说的了,上面的过程,在官方教程(最顶上)有步骤图,可以看看,拔掉u盘,重启电脑,安装完成。
3.安装Ros
在burger和waffle的流程都一样,跟在PC端安装也差不多,以下的操作都是在SBC上操作的,不要再在PC上操作一遍了,注意在burger(树莓派)上的操作前面会有[burger],在waffle(intel joule)上的操作前面是[waffle]。
跟PC上一样,两种方式:
自动化版:
[burger]:
sudo apt-get update sudo apt-get upgrade wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic_rp3.sh && chmod 755 ./install_ros_kinetic_rp3.sh && bash ./install_ros_kinetic_rp3.sh[waffle]:
sudo apt-get update sudo apt-get upgrade wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh && chmod 755 ./install_ros_kinetic.sh && bash ./install_ros_kinetic.sh
半自动化版:
你可以从后面的连接中的“1.2 Setup yours sources.list”一直看到“1.7 Getting ros install”:http://wiki.ros.org/kinetic/Installation/Ubuntu
安装完成之后请重启SBC,否则在后面的过程中会出现catkin_make无法找到之类的错误!
后面的操作在waffle和burger上都一样。
4.安装TurtleBot3的依赖包
sudo apt-get install ros-kinetic-joy ros-kinetic-teleop-twist-joy ros-kinetic-teleop-twist-keyboard ros-kinetic-laser-proc ros-kinetic-rgbd-launch ros-kinetic-depthimage-to-laserscan ros-kinetic-rosserial-arduino ros-kinetic-rosserial-python ros-kinetic-rosserial-server ros-kinetic-rosserial-client ros-kinetic-rosserial-msgs ros-kinetic-amcl ros-kinetic-map-server ros-kinetic-move-base ros-kinetic-urdf ros-kinetic-xacro ros-kinetic-compressed-image-transport ros-kinetic-rqt-image-view ros-kinetic-gmapping ros-kinetic-navigation
请逐句运行下面的内容,并注意看是否有fatal/error/cannot/fail出现
cd ~/catkin_ws/src
git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
cd ~/catkin_ws && catkin_make
如果catkin_make命令完成且没有什么错误出现,TurtleBot3的准备工作就做好了。
5. USB设置
以下允许将USB端口用于没有root权限的OpenCR板,因此可能需要输入密码(装系统设置的那个):
cd ~/catkin_ws/src/turtlebot3
sudo cp ./99-turtlebot3-cdc.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
6.网络配置
树莓派和joule都打开wifi连接到和PC相同的网络下
在终端中输入
ifconfig
下图中的红色矩形框的内容就是PC的ip地址(就是wlan0中的inet addr):
然后输入下面这条命令:
gedit ~/.bashrc
用上一篇博客中提到的最后的PC的ip地址代替ROS_MASTER_URI的localhost,用上面的ip代替ROS_HOSTNAME的ip地址,这两句是这样的:
如下图所示:export ROS_MASTER_URI = http://192.168.0.206:11311 export ROS_HOSTNAME=192.168.0.131
最后用下面这句使之生效:
source ~/.bashrc
散热片安装示意图