树莓派系统
树莓派+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 update
和sudo 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 <—这里一定加上:x
x为输出端口
安装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 | #打开hosts文件 |
成功之后输入:
$ 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
[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