ubuntu22.04.1 LTS 安装ROS2 Humble Hawksbill
参考
主要步骤
设置场所(set locale)
语言环境设置,确保区域设置支持UTF-8。
locale # check for UTF-8
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
locale # verify settings
设置源(set sources)
您需要将ROS 2 apt存储库添加到您的系统中。首先,通过检查此命令的输出,确保Ubuntu Universe存储库已启用。
apt-cache policy | grep universe
得到的输出应该入下,
500 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
release v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
如果您没有看到像上面这样的输出行,那么使用这些说明启用Universe存储库。
接下来将ROS 2 apt 库的源加入到系统中,
sudo apt install software-properties-common
sudo add-apt-repository universe
首先使用apt授权我们的GPG密钥。
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
注:如遇报错“Failed to connect to raw.githubusercontent.com”,在终端命令行中输入:
sudo nano /etc/hosts
打开之后添加如下内容:
185.199.108.133 raw.githubusercontent.com
添加后的内容如下图所示,保存并退出即可。
然后将库源加入到库源列表中。
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 2 软件包
由于添加了新库源,有必要更新一下apt 库
sudo apt update
且ROS 2是最新的ROS系统,建立在很多包库的基础之上,所以更新一下软件包库。
sudo apt upgrade
- 正式安装,推荐安装:ROS, RViz, demos, tutorials。命令如下
sudo apt install ros-humble-desktop
- 或者只安装骨架
sudo apt install ros-humble-ros-base
环境变量设置
# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
source /opt/ros/humble/setup.bash
测试例子
如果安装成功,我们可以试着运行下面的例子。
打开命令窗口,source setup文件,并且运行C++ talker。
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker
打开另一个命令窗口,source setup文件,并且运行Python listener。
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener
你应该看到(如下图)说话者说这是发布消息,而听众说我听到了那些消息。这将验证C++和Python API是否正常工作。
talker listener
安装完成,oh yeah!