树莓派+ROS_melodic+Ubuntu+meta桌面 安装大全

前提

​ 您首先是将ROS系统安装于Ubuntu对应的版本上,时常我们会因为不是统一版本,导致安装失败。其次是换源操作,但倘若你是在树莓派上安装对应的版本,这个时候要小心,因为树莓派4B属于Arm64位系统,所以换源一定是属于树莓派的源。

许多的电脑系统学习,时常会因为环境的安装,导致一半的人放弃;这里我要说,倘若你是真的爱,环境安装即使数十次,任不能阻挡你,那便是成功的一半了。

安装Ubuntu系统

这里我使用树莓派4B安装此操作系统,倘若你说虚拟机版本的ubuntu的话,基本上一模一样。(树莓派的问题和系统前的操作更加复杂。)

基础配置:树莓派4B一个内存16GB

软件下载:

[1] SD Memory Card formatter 格式化软件 https://www.sdcard.org/chs/downloads/formatter/index.html

[2] Raspberry Pi Imager for Windows https://www.raspberrypi.org/downloads/

[3] 系统(我用的是Ubuntu 18.04树莓派4下载64位) https://ubuntu.com/download/raspberry-pi

[4] MobaXterm https://moba.en.softonic.com/

安装前准备

第一次启动树莓派,要插入一个键盘,鼠标,HDMI线,连接网线

格式化SD卡

首先,下载好SD格式化软件,使用读卡器读取TF卡,然后打开SD格式化软件

【图片】

选择好要格式的卡,选择Quock format ,然后点击Format直接快速格式化SD卡

烧录ubuntu系统

选择下载好的 Raspberry Pi Imager直接安装,然后双击打开,OS选择下载好的Ubuntu 18.04系统,SD卡选择烧录的卡,然后写入。

写入完成后,将烧录好的SD卡插入树莓派背面的SD(TF)卡槽。

直接设置

连接好电源、网线,然后打开树莓派,(其实键盘,鼠标,HDMI线非必须,可以使用ssh连接),连接会提示修改ubuntu用户密码。第一次到第三次输入ubuntu,然后输入两次新密码。设置完成。

ssh连接(仅适用于命令行系统)

这里我们先使用ssh连接,用MobaXterm软件。首先连接好电源、网线,然后打开树莓派,要通过路由器的设置网站(一般会在路由器上能找到),找到一个叫pi名字的,记住pi的地址。

在MobaXterm中,打开找到ssh,输入ip地址。

然后会让我们输入用户名,这里输入ubuntu,然后输入密码便打开了。

更新软件源

这里如果想深入了解的话建议访问这个网址:https://blog.csdn.net/CharlesSimonyi/article/details/89346473

不要在网站上随便复制,对应的系统架构不同,导致库文件和包不相同,所以建议如下操作:

在命令行中输入cp /etc/apt/sources.list ./sources.list.backup先备份地址。

然后输入 sudo vim /etc/apt/sources.list打开软件源。这里使用Vim来进行编辑。附录中有简单的对Vim的使用。

将所有的http://ports.ubuntu.com/ubuntu-ports全部替换为你要的源,例如:

中国科技大学地址:http://mirrors.ustc.edu.cn/ubuntu-ports

阿里地址:https://mirrors.aliyun.com/ubuntu-ports/

然后:wq退出

最后输入sudo apt updatesudo apt upgrade这里时常会有些问题,可以在网络上查找,或者在评论区说出来,我会区看看帮帮忙。

安装桌面系统(耗时很长)

这里的任何几个桌面系统应该都是可以的

sudo apt-get install ubuntu-mate-desktop`

sudo apt-get install xubuntu-desktop

sudo apt-get install lubuntu-desktop

sudo apt-get install kubuntu-desktop

远程连接屏幕

方法一:

安装xrdp

sudo apt-get install xrdp

重启xrdp服务

sudo service xrdp restart

Javis123

方法二:

安装VNC服务

sudo apt-get install tightvncserver

设置密码(输入连接客户端密码两次)

vncpasswd

开启服务功能(其中一定要记住他给出来的一个端口)

vncserver

记住端口(New ‘X’ desktop is …. :2/3/4…)

在MobaXterm输入地址的时候,比如:192.162.169.2:2 <—这里一定加上:xx为输出端口

安装ROS

多说几句

几乎和官网的方法一致,但是总会有出现错误的地方.因为我们这里使用的是ubuntu 18.04系统,所以对应的ROS版本为Melodic;每个版本对应的不一样,一定要去官网查看好.这里我没有使用ubuntu20.04的原因是:树莓派可以安装好系统,但是无法找到ROS的完整软件包.但也有大神完成了树莓派官方系统的安装ROS…我这里不建议,因为官方系统没有对ros有较高的支持,而且 ROS的安装会出现一大堆意想不到的问题.这里我是经历过痛的,从树莓派官方系统到ubuntu的20.04版本,再到国外开发的ubuntu18.04桌面版本到现在的ubuntu mate18.04版本.只有少几次成功.

安装前的设置

打开Ubuntu的设置->软件与更新->Ubuntu软件->勾选关键字universe,restricted,multiverse三项。 如图所示:

[图片]

添加sources.list

$ sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

建议使用国内或镜像源,官网使用的是外国的网站,这里使用的是中国科技大学的源.

添加keys

$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

更新系统

$ sudo apt-get update

$ sudo apt-get upgrade

建议重启下树莓派 sudo reboot

安装完整工具箱

安装桌面完整版安装(包含ROS、rqt、rviz、通用机器人函数库、2D/3D仿真器、导航以及2D/3D感知功能)

$ sudo apt-get install ros-melodic-desktop-full

配置ROS

初始化rosdep

$ sudo apt install python-rosdep 避免后面出现sudo rosdep:找不到命令提示

$ sudo rosdep init

这里一般都会出现问题,rosdep init 或者rosdep update 连接错误的解决办法:

ERROR: unable to process source https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/xxxxx

则:

1
2
3
4
5
#打开hosts文件
sudo gedit /etc/hosts
#在文件末尾添加
151.101.84.133 raw.githubusercontent.com
#保存后退出再尝试

成功之后输入:

$ rosdep update

ROS环境配置

添加ros环境变量

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

$ source ~/.bashrc

安装rosinstall

ROS中一个独立分开的常用命令行工具,它可以方便让你通过一条命令就可以给某个ROS软件包下载很多源码树。

$ sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

安装完成+测试

ROS服务开启的第一的命令,一般使用ROS都要先执行这个:

$ roscore

启动乌龟的终端:

$ rosrun turtlesim turtlesim_node

连接键盘命令的节点:

$ rosrun turtlesim turtle_teleop_key

选择好键盘命令的节点终端窗口,通过键盘上的方向键,进行操作小海龟.

恭喜你,ROS已经成功的安装、配置并且运行!

下面就正式开启ROS精彩的旅程!

我个人已经成功,这是我对于成功后的总结,当然,其中我也面对了许多的问题,没有在文章中说明,是因为尝试前还不知是否可以,当写完这篇文章的时候,已经是安装完成的形态了.

但我相信还是有许多同学总是卡在安装的过程中,这里您们可以留言在讨论区,共同解决问题.倘若有问题已经在讨论区中出现,请先查找讨论区的问题是否有,进行相对应的调试.

尽量每一层都是新的问题.

参考地址:

[1] https://ismango.blog.csdn.net/article/details/106049992

[2] https://community.bwbot.org/topic/811/rosdep-init-%E6%88%96%E8%80%85rosdep-update-%E8%BF%9E%E6%8E%A5%E9%94%99%E8%AF%AF%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95

[3] https://wiki.ros.org/melodic/Installation/Ubuntu

[4] https://www.cnblogs.com/wjundong/p/10701160.html

[5] https://www.bilibili.com/video/BV1zt411G7Vn?t=7&p=5

[6] https://sychaichangkun.gitbooks.io/ros-tutorial-icourse163/content/chapter1/1.4.html

基础命令

启动小海龟:

$ roscore 运行节点管理器

$ rosrun turtlesim turtesim_node 打开仿真器节点

$ rosrun turtlesim turtle_teleop_key 键盘控制键

$ rqt_graph 显示图

$ rosnode 显示节点相关信息的指令

​ $ rosnode list 列出所有节点

​ $ rosnode info +上面列出的节点信息 查询某节点具体信息

​ 例如:$ rosnode info /rosout

$ rostopic 显示话题相关的指令

​ $ rostopic list 列出所有话题

$rostopic pub /turtle1/cmd_vel 后面的内容双击Tab键进行补齐

​ 解释:rostopic是使用话题的命令 pub 发布数据给某个topic /turtle1/cmd_vel控制海龟运动的话题

里面linear 为海龟的线速度 angular 为海龟的角速度 可修改

其中加了 -r 10 代表:重复发布,即一直执行 10 每秒10次

$ rosmsg 与消息有关

​ $ rosmsg show +要展示的消息

​ 例子:rosmsg show geometry_msgs/Twist

​ geometry_msgs/Twist 为海龟运动时补全的第一个命令

$ rosservice 服务有关

​ $ rosservice list 显示服务的相关功能

​ 其中/spawn 产生新的海龟

​ 操作:

​ $ rosservice call /spawn [2次Tab补全]

​ call 发布请求 x、y、theta为xy坐标,角度 name为名字,不要出现重复

$ rosbag record -a -O cmd_record 话题记录工具

record 记录功能 -a 也就是 -all记录所有 -O保存为压缩包 cmd_record压缩包名字

重启后:

$ roscore 运行节点管理器

$ rosrun turtlesim turtesim_node 打开仿真器节点

$ rosbag play cmd_record.bag 复现记入的路径数据 cmd_record.bag 为压缩包名字

创建工作空间与功能包

工程空间:workspace 存放工程发开发相关文件的文件夹

src : 代码空间 功能包

build : 编译空间 中间文件

devel : 开发空间 放置最后的文件

install : 安装空间 安装的位置

空间结构图

创建工作空间:

$ mkdir -p ~/project_name/src

$ cd ~/project_name/src

$ catkin_init_workspace

编译空间:

$ cd ~/project_name/

$ catkin_make

设置环境变量:

$ source devel/setup.bash

检查环境变量:

$ echo $ROS_PACKAGE_PATH