Ubuntu22.04 编译 ROS1 Noetic
1. 安装清单生成和源码下载工具
Ubuntu 22.04:
sudo apt update sudo apt install -y \ python3-pip \ python3-rosdep \ python3-vcstool安装rosinstall_generator:
python3 -m pip install --user \ rosinstall_generator \ rosdistro确保用户命令目录在PATH中:
export PATH="${HOME}/.local/bin:${PATH}"检查:
rosinstall_generator --help vcs --help2. 创建工作区
mkdir -p ~/ros1_bridge_ws/ros1_noetic/src cd ~/ros1_bridge_ws3. 生成noetic-minimal.rosinstall
推荐命令:
rosinstall_generator ros_comm \ --rosdistro noetic \ --deps \ --tar \ > ~/ros1_bridge_ws/noetic-minimal.rosinstall参数解释:
ros_comm:ROS1 通信基础环境。--rosdistro noetic:使用 Noetic 软件包索引。--deps:递归加入所有依赖。--tar:使用ros-gbp的固定版本 release tarball。
生成时会读取:
https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml并进一步读取 Noetic 的 distribution 文件,从中解析每个软件包的 release 仓库和版本。
检查生成结果:
head -20 ~/ros1_bridge_ws/noetic-minimal.rosinstall grep -c '^- tar:' \ ~/ros1_bridge_ws/noetic-minimal.rosinstall结果:
Pasted image 20260717095353.png
4. 生成bridge专用精简清单
如果希望使用精简版,可以明确指定 bridge 需要的 ROS1 包:
rosinstall_generator \ catkin \ roscpp \ rospy \ rosmsg \ rosmaster \ roslaunch \ rosout \ rosparam \ actionlib_msgs \ diagnostic_msgs \ geometry_msgs \ nav_msgs \ sensor_msgs \ std_msgs \ std_srvs \ tf2_msgs \ --rosdistro noetic \ --deps \ --tar \ > ~/ros1_bridge_ws/noetic-bridge-fixed.rosinstall验证它包含rosmsg:
grep -A3 'local-name: ros_comm/rosmsg' \ ~/ros1_bridge_ws/noetic-bridge-fixed.rosinstall不过精简清单节约的空间并不多,推荐直接使用noetic-minimal.rosinstall。
5. 根据清单下载 ROS1 源码
使用推荐的完整清单:
cd ~/ros1_bridge_ws/ros1_noetic vcs import src \ < ~/ros1_bridge_ws/noetic-minimal.rosinstall或者使用精简清单:
cd ~/ros1_bridge_ws/ros1_noetic vcs import src \ < ~/ros1_bridge_ws/noetic-bridge-fixed.rosinstall下载完成后检查:
find ~/ros1_bridge_ws/ros1_noetic/src \ -name package.xml \ -print检查关键包:
test -f ~/ros1_bridge_ws/ros1_noetic/src/ros_comm/rosmsg/package.xml test -f ~/ros1_bridge_ws/ros1_noetic/src/ros_comm/roscpp/package.xml test -f ~/ros1_bridge_ws/ros1_noetic/src/common_msgs/nav_msgs/package.xml test -f ~/ros1_bridge_ws/ros1_noetic/src/common_msgs/sensor_msgs/package.xml6. 初始化 rosdep 并安装依赖
第一次使用:
sudo rosdep init如果提示已经初始化,可以忽略。
更新 Noetic 索引:
rosdep update --rosdistro noetic安装源码所需的系统依赖:
cd ~/ros1_bridge_ws/ros1_noetic rosdep install \ --from-paths src \ --ignore-src \ --rosdistro noetic \ -y7. 编译下载的 Noetic 源码
cd ~/ros1_bridge_ws/ros1_noetic ./src/catkin/bin/catkin_make_isolated \ --install \ -DCMAKE_BUILD_TYPE=Release验证:
source ~/ros1_bridge_ws/ros1_noetic/install_isolated/setup.bash python3 -c "import rosmsg; print(rosmsg.__file__)" rosmsg show nav_msgs/Odometry rosmsg show sensor_msgs/PointCloud2最短可复制版本
sudo apt update sudo apt install -y python3-pip python3-rosdep python3-vcstool python3 -m pip install --user rosinstall_generator rosdistro export PATH="${HOME}/.local/bin:${PATH}" mkdir -p ~/ros1_bridge_ws/ros1_noetic/src cd ~/ros1_bridge_ws rosinstall_generator ros_comm \ --rosdistro noetic \ --deps \ --tar \ > noetic-minimal.rosinstall cd ros1_noetic vcs import src < ../noetic-minimal.rosinstall rosdep install \ --from-paths src \ --ignore-src \ --rosdistro noetic \ -y ./src/catkin/bin/catkin_make_isolated \ --install \ -DCMAKE_BUILD_TYPE=Release