背景:
最近想要学习ROS,所以在自己电脑上安装了虚拟机,我所安装的VMware版本是17.5,Ubuntu版本是22.04,在虚拟机中安装ROS的过程中遇到了比较大的麻烦,花费了将近两天的时间才弄好,所以想着将自己安装的过程记录下来,一方面可以加深自己的印象,另一方面,可以为遇到相似问题的你提供一些思路!
安装流程
1、设置环境
ctrl + alt + t
打开终端,依次输入下列命令:
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
运行结果如下图:
2、添加镜像源
在终端中输入下列命令:
sudo apt install software-properties-common
sudo add-apt-repository universe
之后可以运行下面命令检查是否安装成功:
apt-cache policy | grep universe
运行结果如下图:
3、添加ROS源
在终端中输入下列命令:
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
运行结果如下图:
运行会报错说:curl: (35) OpenSSL SSL_connect: 连接被对方重设 in connection to sh.rustup.rs:443
解决方案是安装git
在终端中输入下面命令:
sudo apt -get install git
之后会问你说:这些包将会被安装,是否继续,输入y
即可
运行结果如下图:
git
安装成功后,再次执行安装ROS源指令
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
ROS源就安装成功啦!运行结果如下图:
至此,准备工作已经全部完成,可以开始安装ROS系统啦!
4、安装ROS
在终端中执行下列命令:
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop
这里需要注意,不同的Ubuntun版本所支持的ROS是不一样的,对应关系参考下图:
这里会报错说:E:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
,如下图所示:
解决方法是:单独安装有冲突的包,将他们的版本降低到不冲突的版本,需要用到aptitude
,先安装它,安装命令是:
sudo apt-get install aptitude
执行结果如下图:
安装完成后就可以用sudo aptitude install xxx
代替 sudo apt-get install xxx
,但是注意,一般aptitude
安装时候第一次推荐给你的方案都是没有改变原有依赖关系的,所以第一次提示你输入 y
还是 n
的时候,需要你输入 n
,第二次才会给你具体处理依赖的方法,如降级等,这时候可以输入 y
,之后会列出需要安装的软件包,你可以选择 y
,然后依次安装冲突的包,我这里主要安装冲突的5个包(上面报错时会提示那些包有冲突)。
首先安装 libgbm-dev
,安装命令是:
sudo aptitude install libgbm-dev
运行结果如下图:
下面安装 libicu-dev
,安装命令是:
sudo aptitude install libicu-dev
运行结果如下图:
之后安装libmount-dev
,安装命令是:
sudo aptitude install libmount-dev
运行结果:
接下来安装libudev-dev
,安装命令是:
sudo aptitude install libudev-dev
运行结果:
最后安装libxft-dev
,安装命令:
sudo aptitude install libxft-dev
运行结果:
安装完毕之后,就可以再次安装ROS啦,在终端执行:
sudo apt install ros-hunble-desktop
不出意外的话,ROS就可以被成功安装啦,这个过程可能需要一段时间,具体需要多久跟你的网速有关系,(如果报错,可以尝试再执行一次这条命令)执行结果如下图:
在过程中,还会询问你下面这些安装包将会被安装,输入y
即可,执行结果如下图:
5、添加环境变量
安装到这一步,就快要成功了!下面我们需要添加环境变量(类似于Windows系统的环境变量)。在终端中输入下面命令:
source /opt/ros/humble/setup.bash echo " source /opt/ros/humble/setup.bash" >> ~/.bashrc
执行结果如下图:
6、检查是否安装成功
在终端中输入下面命令:
ros2 run turtlesim turtlesim_node
就可以看到心心念念的小海龟了。如下图:
之后,ctrl + alt + t
打开一个新的终端,这时就可以用键盘上的上下左右键控制小海龟的移动啦!
总结:
以上是我再安装过程中所遇到的问题,如果有描述错误或者不准确的地方,还请各位及时指出!