写在前面
一、无显示器配置树莓派
二、给树莓派更换软件源
三、安装ROS 准备工作
四、ROS Kinetic的安装
编译报错处理
五、参考资料
在校大学生,想要入门ROS,踩了很多的坑整合了网上的一些教程,最后成功安装,在此记录,希望能帮到需要的人。祝大家不忘初心,砥砺前行。
——John 2020.12.28
前提:
需要准备的工具:(我使用的是用网线连接笔记本和树莓派)
16G 以上的SD卡
读卡器
镜像写入软件Win32DiskImager
注:重写SD卡软件SD Card Formatter
软件putty
一根网线
树莓派的电源充电器(手机安卓充电器)
笔记本电脑
1.下载镜像文件image.
打开清华开源镜像网站
下载raspbian-2020-02-14/
2.用Win32DiskImager写入文件
3.在初始目录创建ssh(空文本文件)
4.插上网线
打开cmd输入arp-a找到树莓派的id
5.putty连接树莓派并用putty初始化
登入用户:pi
密码:respberry
enable VNC功能
连接wifi
绑定id
6.配置完成
推荐参考:树莓派3B+无显示器配置详细教程
1.一、首先更换好国内源
1.备份文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak
2.打开编辑器添加以下内容,原内容用#注释
sudo nano /etc/apt/sources.list
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
sudo nano /etc/apt/sources.list.d/raspi.list
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ buster main ui
sudo apt-get update
说明:用的是中科大的软件源。
3.1添加ROS仓库
$ 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://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
更新软件包
$ sudo apt-get update
$ sudo apt-get upgrade
3.2安装Bootstrap依赖
$ sudo apt-get install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake
3.3初始化rosdep
$ sudo rosdep init
$ rosdep update
注:sudo rosdep init可能会遇到website maybe down,网上大部分说换成手机热点,但是不一定,WiFi也是可以的。一般来说是网络的问题可以多试几次
解决办法
sudo gedit /etc/hosts
*#在文件末尾添加*
199.232.96.133 raw.githubusercontent.com
rosdep update:可能因为网络原因报错
可能IP被墙了
需要重新查找
在IPAddress.com 查询raw.githubusercontent.com
找到真实的IP地址
2020.12.16
这里也要多试几次
3.4安装gcc和g++
$ sudo apt-get install gcc-5 g++-5
$ gcc -v
更改gcc版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 60
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 70
注:最后的数字为优先级,可不管,更改时修改最后的数字优先级即可。
特别说明:我们前面执行的这条命令rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:buster会安装libboost1.67,ROS Kinetic中使用的rospack版本依赖于libboost1.58。
我们不能简单的将1.58版本替换成1.67版本,因为libboost1.58与gcc-8不兼容,所以我们现在有两种方案,一种是使用gcc-8从源码构建libboost1.58,另外一种是使用早期的gcc版本编译整个ROS。整个的意思是说,如果你使用了gcc-8编译过一部分ROS,则需要把build_isolated和devel_isolated文件夹删掉,重新从头编译ROS。
ROS官网教程使用的是第二种方法,使用gcc-5与g+±5构建整个ROS。
我们使用的是gcc-8从源码构建libboost1.58,所以安装gcc5和g++5,可能是不必要的,我安装的时候遇到gcc和g++5不行就换成8。
3.5源码编译安装libboost1.58
下载并解压代码
wget -O boost_1_58_0.tar.bz2 http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.bz2/download
tar --bzip2 -xvf boost_1_58_0.tar.bz2
安装
cd boost_1_58_0
./bootstrap.sh --with-libraries=all --with-toolset=gcc
./b2 toolset=gcc
sudo ./b2 install --prefix=/usr
sudo ldconfig
添加路径
由于libboost默认将动态链接库装在/usr/lib路径下,而系统的查找路径在/usr/lib/arm-linux-gnueabihf下,故需要将新的路径写入/etc/ld.so.conf.d目录下的配置文件中
cd /etc/ld.so.conf.d && sudo touch mylib.conf && echo '/usr/lib' | sudo tee mylib.conf
sudo ldconfig
4.1创建catkin工作空间
$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws
4.2 下载ROS包源码
ROS精简版(官方推荐)
包含二十多个核心包,不含可视化工具
$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
$ wstool init src kinetic-ros_comm-wet.rosinstall
ROS桌面版
包含一百九十多个常用包,含rqt、rviz等可视化工具以及OpenCV3,编译过程虽然长了些,但是个人认为是比安装ROS精简版好的,精简版会遇到无法定位包的情况,需要用到官网的安装包的方法。ROS桌面版不会遇到这种情况。
4.3安装Assimp依赖
编译collada_urdf 包的时候会需要
mkdir -p ~/ros_catkin_ws/external_src
cd ~/ros_catkin_ws/external_src
wget http://sourceforge.net/projects/assimp/files/assimp-3.1/assimp-3.1.1_no_test_models.zip/download -O assimp-3.1.1_no_test_models.zip
unzip assimp-3.1.1_no_test_models.zip
cd assimp-3.1.1
cmake .
make
sudo make install
4.4 使用rosdep安装所需依赖
cd ~/ros_catkin_ws
rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:buster
4.5编译工作空间
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic
若树莓派4的内存为1G或2G,则在编译时可能造成内存耗尽,此时可以使用-j2进行编译,指令如下:
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j2
4.6 添加环境变量
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
5.成功
启动看看,测试一下小海龟
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
树莓派3B+无显示器配置详细教程
树莓派4B日志(一) Raspbian Buster源码安装ROS Kinetic
树莓派4B安装ROS(Kinetic版本)
树莓派4B(8G)原生系统Raspbian Buster安装ROS Melodic