news 2026/4/20 23:48:22

保姆级教程:在Ubuntu 20.04上从零搭建ROS Noetic开发环境(含Realsense-ROS配置)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:在Ubuntu 20.04上从零搭建ROS Noetic开发环境(含Realsense-ROS配置)

保姆级教程:在Ubuntu 20.04上从零搭建ROS Noetic开发环境(含Realsense-ROS配置)

机器人开发正成为越来越多工程师和创客的必备技能,而ROS(Robot Operating System)作为机器人开发的"操作系统",其重要性不言而喻。本文将带你从零开始,在Ubuntu 20.04系统上搭建完整的ROS Noetic开发环境,并配置Realsense深度相机的ROS驱动,最终实现多机通信功能。无论你是刚接触机器人开发的在校学生,还是准备转行的工程师,这篇教程都能让你少走弯路。

1. 系统准备与ROS Noetic安装

在开始之前,请确保你有一台运行Ubuntu 20.04的电脑。如果是全新安装的系统,建议先完成系统更新:

sudo apt update && sudo apt upgrade -y

1.1 配置软件源

为了获得更快的下载速度,我们将使用清华大学的镜像源。首先备份原有的源列表:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

然后编辑源列表文件:

sudo nano /etc/apt/sources.list

将内容替换为以下清华源配置(Ubuntu 20.04 focal版本):

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

保存后更新软件包索引:

sudo apt update

1.2 安装ROS Noetic

ROS Noetic是最后一个支持Ubuntu 20.04的LTS版本,以下是详细安装步骤:

  1. 添加ROS软件源:

    sudo sh -c 'echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  2. 设置密钥:

    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  3. 安装完整版ROS桌面环境:

    sudo apt update sudo apt install ros-noetic-desktop-full

提示:安装过程可能需要较长时间,取决于你的网络速度。完整版桌面环境包含ROS、rqt、rviz和机器人通用库。

1.3 配置ROS环境

安装完成后,需要设置环境变量。为了让每次打开终端时自动加载ROS环境,执行:

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

验证安装是否成功:

roscore

如果看到类似下面的输出,说明ROS核心已成功启动:

... logging to /home/username/.ros/log/xxxxx-roslaunch-xxxxx.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://xxxxx:xxxxx/ ros_comm version 1.15.9

2. Realsense深度相机配置

Intel Realsense系列深度相机是机器人开发中常用的传感器,下面我们将配置其SDK和ROS驱动。

2.1 安装librealsense SDK

首先安装必要的依赖项:

sudo apt-get install -y libudev-dev pkg-config libgtk-3-dev \ libusb-1.0-0-dev libglfw3-dev libssl-dev

克隆librealsense源码并编译:

git clone https://github.com/IntelRealSense/librealsense.git cd librealsense mkdir build && cd build cmake ../ -DBUILD_EXAMPLES=true make -j$(nproc) sudo make install

配置udev规则:

sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules && sudo udevadm trigger

验证安装:

realsense-viewer

如果能看到相机图像,说明SDK安装成功。

2.2 配置Realsense-ROS驱动

创建一个ROS工作空间:

mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace

克隆Realsense-ROS包和依赖:

git clone https://github.com/IntelRealSense/realsense-ros.git git clone https://github.com/pal-robotics/ddynamic_reconfigure.git

编译工作空间:

cd ~/catkin_ws catkin_make -j$(nproc) source devel/setup.bash

测试相机节点:

roslaunch realsense2_camera rs_camera.launch

在另一个终端中查看发布的主题:

rostopic list

你应该能看到类似/camera/color/image_raw这样的主题。

3. 常见问题解决方案

在实际安装过程中,你可能会遇到以下问题:

  1. ROS安装后找不到命令

    • 确保已执行source /opt/ros/noetic/setup.bash
    • 检查.bashrc文件是否已添加source命令
  2. librealsense编译错误

    • 确保安装了所有依赖项
    • 尝试清理build目录重新编译
  3. Realsense相机无法识别

    • 检查USB连接(建议使用USB3.0接口)
    • 确认udev规则已正确配置
    • 运行lsusb查看是否检测到Intel设备
  4. ROS包编译失败

    • 确保工作空间结构正确
    • 检查是否缺少依赖:rosdep install --from-paths src --ignore-src -r -y

4. 多机ROS通信配置

在多机器人系统中,通常需要多台计算机协同工作。以下是配置步骤:

4.1 网络配置

确保所有机器在同一局域网内,并能互相ping通。在主节点上:

export ROS_MASTER_URI=http://<master_ip>:11311 export ROS_IP=<master_ip>

在从节点上:

export ROS_MASTER_URI=http://<master_ip>:11311 export ROS_IP=<slave_ip>

注意:将<master_ip><slave_ip>替换为实际的IP地址。

4.2 多相机配置

当多台Realsense相机同时工作时,需要修改节点名称避免冲突。编辑启动文件:

nano ~/catkin_ws/src/realsense-ros/realsense2_camera/launch/rs_camera.launch

找到<group ns="$(arg camera)">行,修改为:

<group ns="camera1"> <!-- 为每台相机设置唯一名称 -->

4.3 带宽优化

为减少网络负载,可以降低图像分辨率和帧率:

roslaunch realsense2_camera rs_camera.launch \ color_width:=640 color_height:=480 color_fps:=15 \ depth_width:=640 depth_height:=480 depth_fps:=15

5. 进阶调试技巧

掌握以下技巧可以提升开发效率:

  • Rviz可视化:使用ROS的3D可视化工具查看点云:

    roslaunch realsense2_camera rs_rgbd.launch rviz

    在Rviz中添加PointCloud2显示,选择/camera/depth/color/points主题。

  • TF树检查:查看坐标变换关系:

    rosrun tf view_frames evince frames.pdf
  • Bag文件录制:保存传感器数据供离线分析:

    rosbag record -O test.bag /camera/color/image_raw /camera/depth/image_rect_raw
  • 性能监控:使用rqt_graph查看节点关系,rostopic hz检查发布频率。

在实际项目中,我发现合理设置相机参数可以显著提升系统稳定性。例如,在光照条件较差的场景下,适当降低自动曝光优先级可以减少图像噪声。此外,定期校准相机也能保证测量精度。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 23:41:15

工业物联网实战:用STM32F407+FreeModbus RTU打造一个稳定的Modbus从站设备

工业物联网实战&#xff1a;用STM32F407FreeModbus RTU打造高可靠Modbus从站设备 在工业自动化领域&#xff0c;Modbus协议因其简单可靠的特点&#xff0c;已成为设备间通信的事实标准。本文将深入探讨如何基于STM32F407微控制器和FreeModbus开源库&#xff0c;构建一个适用于严…

作者头像 李华
网站建设 2026/4/20 23:39:23

水下视觉不止于去雾:Color Transfer如何成为深度估计的‘神助攻’?

水下视觉不止于去雾&#xff1a;Color Transfer如何成为深度估计的‘神助攻’&#xff1f; 在构建水下机器人视觉系统时&#xff0c;图像去雾只是第一步。真正的挑战在于如何从模糊的水下环境中提取可靠的深度信息——这是导航、避障和三维重建的基础。传统方法往往将去雾和深度…

作者头像 李华
网站建设 2026/4/20 23:39:16

文脉定序在低代码平台中的应用:组件文档与用户需求语义定序集成

文脉定序在低代码平台中的应用&#xff1a;组件文档与用户需求语义定序集成 1. 低代码平台的文档检索痛点 在低代码开发平台中&#xff0c;组件文档的检索效率直接影响开发者的工作效率。传统的关键词匹配方式虽然能够快速找到相关文档&#xff0c;但往往存在"搜得到但排…

作者头像 李华
网站建设 2026/4/20 23:36:27

2026年物理学论文降AI工具推荐:实验报告和理论分析部分降AI攻略

2026年物理学论文降AI工具推荐&#xff1a;实验报告和理论分析部分降AI攻略 试过五款工具之后&#xff0c;现在固定用嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;。 价格4.8元一篇&#xff0c;实测知网从61%降到5.3%。物理学论文降AI选工具不用纠结太久&#xff0c;…

作者头像 李华
网站建设 2026/4/20 23:34:18

Kaggle房价预测:用Pandas和Seaborn做数据分析,这10个坑新手最容易踩

Kaggle房价预测&#xff1a;数据分析新手避坑指南 第一次接触Kaggle的房价预测比赛时&#xff0c;我被数据里隐藏的陷阱绊倒了好几次。记得当时信心满满地提交了第一版预测结果&#xff0c;排名却惨不忍睹——问题就出在最基础的数据分析环节。这篇文章不是教你按部就班地做数据…

作者头像 李华
网站建设 2026/4/20 23:33:29

从HTML到PDF报表:手把手教你用Aspose.PDF for .NET 23.1.0搞定动态文档生成

动态PDF报表生成实战&#xff1a;Aspose.PDF for .NET高效开发指南 在当今数据驱动的业务环境中&#xff0c;动态生成专业PDF报表已成为企业级应用的标配需求。无论是电商平台的订单明细、金融系统的对账单&#xff0c;还是医疗机构的检验报告&#xff0c;都需要将实时数据转化…

作者头像 李华