欢迎光临
我们一直在努力

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_common_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
cd ~/ros_catkin_ws
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 – 知乎

赞(0)
未经允许不得转载:171主机测评 » Ubuntu22.04 下 ROS2 humble 和 ROS1 Noetic兼容安装
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址