前言
由于之前已经了 Ubuntu 22.04 LTS Jammy 双系统,想装 ros noetic,但发现 ros noetic 的 release 只支持到 20.04,所以就想自己从源码构建一个。但是,装完发现 autolabor 官方已经编译了一个 ros noetic ninjemys 安装包,按照以下步骤直接安装即可
使用 autolabor 官方的安装包
添加源
1 | echo "deb [trusted=yes arch=amd64] http://deb.repo.autolabor.com.cn jammy main" | sudo tee /etc/apt/sources.list.d/autolabor.list |
更新源
1 | sudo apt update |
安装
网不好可能需要多试几次
1 | sudo apt install ros-noetic-autolabor |
就这样,简简单单。
以下手动构建的内容权当娱乐>_<
从源码构建
基础准备
首先我们需要安装如下基础软件包来确保后面步骤的正常进行:
1 | sudo apt install git gnupg wget |
安装构建依赖的工具
首先添加 packages.ros.org 作为软件提供者
1 | sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros-latest.list' |
然后安装构建所需要的依赖工具
1 | sudo apt-get install python3-rosdep python3-rosinstall-generator python3-vcstools python3-vcstool build-essential |
安装完成后,我们就可以初始化 ros 的依赖管理工具了
1 | sudo rosdep init |
安装 hddtemp¿
虽然很神奇,但是我们确实需要为为 Ubuntu 22.04 安装 hddtemp。推测是 ros 需要 hddtemp 但是在 22.04 这个被移除了。
1 | cd ~/Downloads |
然后我们需要让 rosdeb 知道你本地已经有 hddtemp 了,为此,我们需要让 ros 读取本地修改过的 base.yaml 文件而不是让它直接从仓库拉取。
我们首先需要拉下来一个 base.yaml 来修改
1 | cd ~/Downloads |
然后打开下载的 base.yaml 文件,在 hddtemp 部分添加 jammy: [hddtemp]
。修改之后文件的 hddtemp 部分应如下所示(注意最后一行):
1 | hddtemp: |
最后只需要让 rosdep 读取本地的 base.yaml 文件就可以了
先下载 ros 的 default.list
1 | sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list |
修改本地的 default.list 文件
1 | vim /etc/ros/rosdep/sources.list.d/20-default.list |
只需修改你的用户名
为你的用户名(?),当然,如果你把 base.yaml 放在了别处就修改整个地址为你 base.yaml 的位置就行
1 | # os-specific listings first |
最后刷新 rosdep 即可
1 | rosdep update |
下载 ROS 包的依赖项
创建一个文件夹来临时存放源码
1 | mkdir ~/ros_catkin_ws |
下载 ros-noetic-desktop-full 的源代码
1 | rosinstall_generator desktop --rosdistro noetic --deps --tar > noetic-desktop.rosinstall |
然后安装所有这些 ROS 包的依赖项,大抵是需要等一会
1 | rosdep install --from-paths ./src --ignore-packages-from-source --rosdistro noetic -y |
小修一下原版的包
原版的 ros 有两个包(rosconsole 和 urdf)与 Ubuntu 22.04 不兼容
但是 github 上已经有解决方案了!感谢大佬们!
先备份一下原版的文件,免得修坏了
1 | cd ~/ros_catkin_ws/src |
拉取 github 上兼容的的 rosconsole 和 urdf 包
1 | git clone https://github.com/dreuter/rosconsole.git |
1 | git clone https://github.com/dreuter/urdf.git |
安装!
终于,可以安装了
以下命令是将其默认安装在~/ros_catkin_ws/install_isolated
这个位置。当然,你可以添加--install-space /opt/ros/noetic
参数来让 ros 安装在/opt/ros/noetic
位置,也就是其在 20.04 上的默认位置
ros 会构建它所需要的包,这大抵还是需要一些时间
1 | cd ~/ros_catkin_ws |
大功告成
如果一切顺利,ros 应该是被成功安装了,你可以使用如下命令启动 roscore 来验证
1 | source ~/ros_catkin_ws/install_isolated/setup.bash |
看到末尾有started core service [/rosout]
就是成功启动了
为了使你的 ros 命令添加在环境变量中,不用每次都 source,你可以
1 | vim ~/.bashrc |
在文件末尾加上
1 | source ~/ros_catkin_ws/install_isolated/setup.bash |
收工!