Ubuntu22.04 下 ROS2 humble 和 ROS1 Noetic兼容安装

本文将详细介绍在已安装 ROS2 humble 的 Ubuntu22.04 系统下,安装 ROS1 Noetic 并实现二者共存的具体步骤。

1.更新系统

sudo apt update && sudo apt upgrade -y

2.安装依赖

sudo apt install -y git build-essential cmake python3-pip python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool libboost-all-dev

3.创建 ROS1 工作空间

mkdir -p ~/ros_catkin_ws
cd ~/ros_catkin_ws

4.下载 ROS1 源码

rosinstall_generator desktop --rosdistro noetic --deps --tar > noetic-desktop.rosinstall
wstool init src noetic-desktop.rosinstall
wstool update -t src

第二行代码安装卡顿后,另开端口运行第三行代码会补充安装

5.解决依赖问题

部分依赖在 Ubuntu22.04 环境下存在冲突,需要手动调整。进入下面指定目录,打开package.xml文件,删除<run_depend>hddtemp</run_depend>这一行,以解决冲突问题:

cd ~/ros_catkin_ws/src/diagnostics/diagnostic_commin_diagnostics

6.解决兼容问题

由于 ROS1 部分组件与 Ubuntu22.04 存在兼容性问题,需替换相关组件。先删除原有冲突组件,再从特定分支下载兼容版本:

cd ~/ros_catkin_ws/src
rm -r rosconsole urdf
git clone https://github.com/dreuter/rosconsole.git -b noetic-jammy
git clone https://github.com/dreuter/urdf.git -b set-cxx-version

7.安装依赖

sudo pip install rosdepc
sudo rosdepc init
rosdepc update
rosdepc install --from-paths src --ignore-src --rosdistro noetic -y

8.设置 ROS1 环境变量

因为系统中已安装 ROS2,为避免环境变量冲突,在编译 ROS1 前需指定当前使用的 ROS 版本为 Noetic,在终端输入:

export ROS_DISTRO=noetic

9.编译 ROS1

cd ~/ros_catkin_ws
./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release

10.配置环境变量

为方便在 ROS1 和 ROS2 之间切换,需配置环境变量。打开用户主目录下的.bashrc文件,在末尾添加以下代码:

echo "ros noetic(1) or ros2 humble(2)?"
read edition

# 清除所有 ROS 相关环境变量
function clean_ros_env() {
    # 清除标准 ROS 变量
    unset ROS_DISTRO ROS_VERSION ROS_PACKAGE_PATH ROS_ETC_DIR
    unset ROS_MASTER_URI ROS_HOSTNAME ROS_IP
    
    # 清除 ROS2 特有变量
    unset ROS_DOMAIN_ID RMW_IMPLEMENTATION AMENT_PREFIX_PATH
    unset COLCON_PREFIX_PATH ROS_LOCALHOST_ONLY
    
    # 清除 CMAKE 相关变量
    unset CMAKE_PREFIX_PATH
    
    # 重置 PYTHONPATH
    export PYTHONPATH=$(echo $PYTHONPATH | tr ':' '\n' | grep -v '/opt/ros' | grep -v '/home/bg/ros_catkin_ws' | paste -sd: -)
    
    # 重置 PATH
    export PATH=$(echo $PATH | tr ':' '\n' | grep -v '/opt/ros' | grep -v '/home/bg/ros_catkin_ws' | grep -v '/opt/ros/humble' | paste -sd: -)
    
    # 重置 LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | tr ':' '\n' | grep -v '/opt/ros' | grep -v '/home/bg/ros_catkin_ws' | paste -sd: -)
}

# 清理环境
clean_ros_env

# 根据选择加载环境
if [ "$edition" -eq "1" ]; then
    echo "Loading ROS Noetic environment"
    source ~/ros_catkin_ws/install_isolated/setup.bash
    export ROS_MASTER_URI=http://localhost:11311
    export ROS_HOSTNAME=localhost
else
    echo "Loading ROS2 Humble environment"
    source /opt/ros/humble/setup.bash
    export ROS_DOMAIN_ID=42
    export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
fi

11.测试环境

分别使用命令启动ros1和ros2的rviz,运行正常

12.参考网址

千万不要下载python3.8,否则会出现各种bug,大写离谱

Ubuntu22.04下如何ROS2 humble和 ROS1 共存? | 鱼香ROS

(31 封私信 / 58 条消息) Ubuntu 22.04中编译ROS1 Noetic - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JMFS1119

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值