Ubuntu22.04 LTS 安装ROS2-Humble
Humble Hawksbill (2022-11-18)
针对LTS(长期支持)版本,支持时间为5年。
更加稳定且易于维护,包括许多新的质量等级1的软件包,以及对不同平台和体系结构的改进。
改进了安全性,引入了对DDS安全插件的支持。
支持Ubuntu 22.04 (Jammy Jellyfish)、macOS 12 (Monterey) 和 Windows 11。
1.添加ROS2 apt仓库
1.1第一种下载方式(需要Ubuntu科学上网)
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
1.2第二种下载方式
# 科学上网先下载好ros.key
https://raw.githubusercontent.com/ros/rosdistro/master/ros.key
# 放到ubuntu22.04/home/用户名路径下
sudo cp ./ros.key /usr/share/keyrings/ros-archive-keyring.gpg
2.添加ROS仓库
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
3.安装ROS2包
humble支持ubuntu20.04和ubuntu22.04,但是ubuntu20.04需要从源码编译,ubuntu22.04则不用,ubuntu20.04可以退而安装Galactic,但它不是LTS长期支持版
sudo apt update
sudo apt upgrade
# 有gui tools
sudo apt install ros-humble-desktop
# 无gui tools
sudo apt install ros-humble-base
安装ros-humble-desktop是如报下面这个错,先卸载包重新下载一个,版本冲突了
The following packages have unmet dependencies:
libusb-1.0-0-dev : Depends: libusb-1.0-0 (= 2:1.0.25-1ubuntu1) but 2:1.0.25-1ubuntu2 is to be installed
Recommends: libusb-1.0-doc but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
sudo apt remove libusb-1.0-0=2:1.0.25-1ubuntu2
sudo apt install libusb-1.0-0=2:1.0.25-1ubuntu1
然后再执行
sudo apt install ros-humble-desktop
4.环境设置
/opt/ros/humble/setup.bash
是底层工作空间
# 更新环境
source /opt/ros/humble/setup.bash
# 将更新环境语句写入.bashrc,每次启动终端都会加载环境
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
5.测试安装是否成功
终端1:发布者节点
ros2 run demo_nodes_cpp talker
终端2:订阅者节点
ros2 run demo_nodes_cpp listener
6.启动小海龟仿真
终端1:启动小海龟节点
ros2 run turtlesim turtlesim_node
终端2:启动键盘
ros2 run turtlesim turtle_teleop_key
会出现一个小海龟,按上下左右键操作一下。
7.下载依赖软件包
7.1下载编译所需包
sudo apt install python3-pip
sudo apt install python3-rosdep2
sudo apt install python3-colcon-common-extensions
7.2 下载rosdep的rosdepc
sudo pip install rosdepc
sudo rosdepc init
sudo rosdepc update
sudo rosdepc install -i --from-path src --rosdistro humble -y
8.创建项目空间
mkdir -p ~/dev_ws/src
git clone https://github.com/ros/ros_tutorials.git -b humble
# rosdep install -i --from-path src --rosdistro humble -y
cd ~/dev_ws
rosdepc install -i --from-path src --rosdistro humble -y
# 编译
colcon build
终端显示如下消息表示编译成功
Starting >>> turtlesim
Finished <<< turtlesim [5.49s]
Summary: 1 package finished [5.58s]
colcon build
- –packages-yp-to 编译指定的包及其所有依赖项而不是整个工作区
- –symlink-install 避免了每次更改Python脚本时需要重新编译
- –event-handlers console_direct+ 在编译时是否在控制台显示输出,不显示可在log文件查看
编译之后查看工作空间 dev_ws
ls ~/dev_ws
dev_ws
- build:
- install:存放当前工作空间的配置文件
- log:编译日志
- src:代码
9.加载工作空间(overlay)
我们首先来看工作空间的层叠
- /opt/ros/humble/setup.bash 第一层
- install/local_setup.bash 第二层
- install/setup.bash == 第一层+第二层
install
目录下有local_setup.bash和setup.bash两个文件。
local_setup.bash
只会把当前工作空间中的可用包添加到环境当中
setup.bash
会把新建该工作空间时的底层工作空间也加入到环境中,这样就有两个工作空间的软件包可以使用。这样的一个好处是你在使用底层工作空间的同时可以切换不同的工作空间,减少了多个工作空间的干扰。
一般的步骤就是:
source
底层工作空间source
自己创建的工作空间
这时,同样一个包,在底层工作空间存在,在自己的工作空间也存在,修改自己的工作空间的包,会覆盖掉在底层工作空间的包,但是不会修改底层工作的包。
参考资料
【ROS2】带你避坑安装ROS2最新版本Humble Hawksbill(本人一个坑一个坑踩过来的)(unable to locate package ros-humble-desktop问题解决):https://blog.csdn.net/weixin_44458490/article/details/125447703
Ubuntu 22.04 LTS安装ROS2 (ros-humble-desktop):https://blog.csdn.net/toopoo/article/details/127178416
ros2不同版本的差异 foxy galactic humble rolling:https://blog.csdn.net/zyh821351004/article/details/130180172
ROS2 基于humble版本机器人仿真教程:https://blog.csdn.net/qq_20492531/article/details/126913096
ROS2学习笔记之创建工作空间篇:https://blog.csdn.net/qq_38649880/article/details/104408383