本人研究生学习方向为激光雷达SLAM,但是实验室目前没人做这一块,所以一切只能靠自己摸索,好在老师大方,需要的设备都愿意买,提高了我学习激光雷达SLAM这方面的兴趣。 原本是打算以Windows平台学习激光雷达SLAM的,但是学习一段时间以后发现以我的水平不能够独立依靠自己在Windows平台上进行激光雷达SLAM方面的研究,于是转战Linux系统,网上的学习资源更多,上手更容易。小白安装Ubuntu以及配置ROS,在环境问题方面遇到的坑特别多,不是这里有问题就是那里有问题,只能通过上网查找解决方案一个个尝试。我将自己总结的内容写下来强化记忆,顺便帮助有缘人避坑,建议仔细阅读。以后也将发布相关方向的学习笔记,大家一起探讨共同进步!欢迎同道中人联系我相互学习,一起进步!
关于Ubuntu安装哪个版本的问题,这个可以参考一下网上的评价,每个人的使用感受都不一样,我经历了16.04、18.04、20.04、22.04这几个版本的折磨以后,最终选择了令我满意的20.04,个人感觉这个版本用起来最稳定。刚开始我是通过虚拟机安装的,但是后面需要安装显卡驱动的时候,搞了好久才发现虚拟机是无法安装显卡驱动的,于是我就改成了在电脑系统上安装Ubuntu,也就是双系统,启动的时候自己选择进去Windows系统还是Ubuntu系统,安装双系统以后的感觉只有一个字:爽!建议用Ubuntu多的伙伴都可以尝试安装双系统,而不是虚拟机,双系统安装步骤也不繁琐,准备一个启动U盘即可。下面是我用的Ubuntu20.04版本链接以及我装双系统参考的教程:
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/
https://www.cnblogs.com/masbay/p/10745170.html
不同版本的ubuntu对应的ros版本也不一样,如果版本不匹配,则后面安装依赖项的时候就会出现各种bug。下面是Ubuntu版本对应的ros:
Ubuntu16.04对应的是ROS Kinetic
Ubuntu18.04对应的是ROS Melodic
Ubuntu20.04对应的是ROS Noetic
首先换源,不换源的话下载更新什么的会特别慢,甚至下载到一半就停止了。常用的国内源都挺稳定的,像清华源、阿里源等。我这里用的是清华源。换源:
打开软件和更新,选择第二个,社区维护的自由和开源软件(universe),打钩以后,点击下载自,选择其他,寻找里面合适的源就行,但是好像没发现清华源,不过问题不大,其他的源也是可以的,最后选择关闭,等待它更新完毕。如下图:
两种方法,第一种是通过终端输入命令打开编辑器换源,但是对于小白来说不适用,什么vin打开以后保存退出啊,gedit打开编辑器没有保存权限的问题让小白很是头疼,所以建议找到相应的文件夹换源,若是想通过终端换源,csdn里有教程一搜即可,我这里就自己找到相应的文件夹换源了。首先打开文件,选择其他位置-计算机-etc-apt,你会发现里面有一个source.list文件,先别急打开,现在我们还没有修改权限,所以要先赋予权限。打开终端输入以下命令:
sudo chmod 777 sources.list
输入自己的密码以后权限就打开了,这个时候用编辑器打开sources.list文件,将原本的源注释掉(每一行前面加#)或者删掉,复制以下源代码:(不同版本的ubuntu对应的源版本也不一样!)
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
这里是Ubuntu20.04版本的,复制粘贴后保存即可。其他版本的点击下面链接:
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
打开终端输入以下:(不行再到网上搜以下,或者到自己github里面看一下)
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
成功以后会显示已导入。
终端输入:
sudo apt update
这时候能顺利更新下载最好了,不能的话就检查一下sources.list.d里面的ros.list,将里面内容删除,打开终端输入:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
这里是设置sources.list.d里面的文件,设置以后先别急更新,找到文件夹,跟sources.list在一个文件夹,上面有路径。进去以后看到ros.list或者是ros-lasted.list,赋予权限,将`lsb_release -cs`改成ubuntu的版本号,若已经是版本号则不用改,像我的:
这里建议安装桌面完全版的,很多依赖项和可用的包都附带在里面,不用我们另外安装,我记得里面有Python、PCL,没有也不要紧,后面再安装。打开终端输入以下安装桌面完全版:(以下所有操作需要选择Y/n的时候,一律输入y然后回车,不分大小写)
sudo apt install ros-noetic-desktop-full
成功安装以后再更新一下:
sudo apt update
我们要使用ROS就得让系统知道它在哪里,所以每次使用ROS的时候都要设置环境变量,注意是每次打开一个需要使用ROS的终端都要设置一次!
source /opt/ros/noetic/setup.bash
可以设置每次打开一个终端自动设置ROS环境,输入以下:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
但是我不推荐新手这样用,还是每次打开一个终端输入一次好,因为能够强化记忆,更加熟悉需环境变量,建议可以在桌面目录编辑一个文本文档,将环境地址存进去,需要的时候就打开复制粘贴,一直用捷径的话对我们前期学习其实是有害的,说不定过几天连环境变量是什么,为什么要设置都忘记了。
实现不同的功能需要很多不同的包和依赖项,先装上常用的,可能已经安装好了部分依赖包,如果有的话终端会显示的,不要怕会重复安装。
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
sudo apt install python3-rosdep
初始化安装的rosdp
sudo rosdep init
rosdep update
至此ROS-Noetic安装完毕
用一个小海龟案例测试一下新装的ROS-Noetic
1.打开一个终端启动ROS:
先配置环境变量
source /opt/ros/noetic/setup.bash
然后打开ROS:(如下图)
roscore
2.新开终端打开小乌龟
先配置环境变量
source /opt/ros/noetic/setup.bash
输入以下命令打开乌龟仿真器:(如下图,我移动过所以有显示路径)
rosrun turtlesim turtlesim_node
3.新开终端实现用键盘上下左右控制乌龟移动
依旧先配置环境
source /opt/ros/noetic/setup.bash
输入以下命令:
rosrun turtlesim turtle_teleop_key
然后按上下左右即可操纵乌龟移动,这里输入命令要在这个终端,如果移动到其他位置就不行了。
学习激光雷达有一段时间了,后续会坚持发布学习过程中的信息,和大家共勉!