树莓派3B新手入门 Raspbian Buster 安装ROSKinetic

目录

写在前面
一、无显示器配置树莓派
二、给树莓派更换软件源
三、安装ROS 准备工作
四、ROS Kinetic的安装
编译报错处理
五、参考资料

写在前面

在校大学生,想要入门ROS,踩了很多的坑整合了网上的一些教程,最后成功安装,在此记录,希望能帮到需要的人。祝大家不忘初心,砥砺前行。
——John 2020.12.28

前提:

  • 硬件版本:Raspberry Pi 3
  • 操作系统版本:Raspbian Buster
  • ROS版本:ROS Kinetic

一、无显示器配置树莓派

需要准备的工具:(我使用的是用网线连接笔记本和树莓派)
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

说明:用的是中科大的软件源。

三、安装ROS 准备工作

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

四、ROS Kinetic的安装

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

编译报错处理

可以参考[树莓派4B安装ROS(Kinetic版本)](https://blog.csdn.net/hua_lun_tong_xue/article/details/106930273?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160903129916780273381930%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=160903129916780273381930&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-1-106930273.pc_search_result_no_baidu_js&utm_term=ros_catkin_ws/src/opencv3/modules/python/src2/cv2.cpp:885:34error:%20invalid%20conversion%20from%20%E2%80%98const%20char*%E2%80%99%20to%20%E2%80%98char*%E2%80%99%20%5B-fpermissive%5D)

4.6 添加环境变量

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

5.成功

启动看看,测试一下小海龟
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
树莓派3B新手入门 Raspbian Buster 安装ROSKinetic

五、参考资料

树莓派3B+无显示器配置详细教程
树莓派4B日志(一) Raspbian Buster源码安装ROS Kinetic
树莓派4B安装ROS(Kinetic版本)
树莓派4B(8G)原生系统Raspbian Buster安装ROS Melodic

上一篇:Thymeleaf


下一篇:Oracle Database 19c 技术架构(三)