了解一下Ubuntu上搭建的ROS环境
ROS基本介绍
ROS 的全称是 Robot Operating System
,即机器人操作系统,它不是一个传统意义上的操作系统(如 Windows、Linux),而是一个用于编写机器人软件的框架。
它相当于机器人的中间件,处理了硬件抽象、底层设备控制、进程间消息传递、包管理等高重复性、低差异性的工作,让开发者可以专注于实现机器人的核心算法和功能。
Ubuntu上搭建ROS环境
为什么ROS主要在Ubuntu上运行
官方支持与同步发布
ROS的开发团队选择 Ubuntu 作为其主要和首选的支持平台,因此每一个 ROS 发行版都会与一个特定版本的 Ubuntu 进行官方绑定和测试,例如ROS melodic
与 Ubuntu 18.04
,ROS Noetic
与 Ubuntu 20.04 LTS
等版本。
依赖管理便利
ROS 本身依赖于大量开源库(如OpenCV等),而Ubuntu 拥有强大的软件包管理系统,可以非常方便地安装和管理这些依赖项,确保了环境的统一性和稳定性。
庞大的开发者社区
一般情况下,机器人领域的研发人员等广泛使用都是基于 Ubuntu 环境。
Ubuntu上ROS环境的核心概念
当在 Ubuntu 上安装 ROS 环境后,基本上系统上就具备了一个完整的机器人软件开发环境。
计算图级概念
这属于 ROS 的核心通信机制。
- 节点: 一个可执行文件是 ROS 进程中的一个独立单位,机器人系统通常由许多协同工作的节点组成。
- 主节点 : 必须运行的
roscore
命令,它为所有节点提供命名、注册和查找服务,帮助节点之间建立连接。 - 消息 : 消息传输的数据结构,有标准的(如
std_msgs/String
)或用户自定义的。 - 服务: 一种请求/响应模型的同步通信机制。
文件系统级概念
- 工作空间 : ROS 包开发的自定义目录,通常包含
src
(源代码)、build
(编译中间文件)、devel
(开发环境脚本)和install
(安装目录)等。 - 包: ROS 软件的基本单元,包含节点、库、配置文件等。
常用工具
命令行工具:
roscore
: 启动主节点。rosrun
: 运行一个包中的特定节点。roslaunch
: 通过启动文件一次性启动多个节点和配置参数。rostopic
: 查看和调试话题(如rostopic echo /topic_name
可以查看话题上的消息)。rosservice
: 调用服务。rosnode
: 查看节点信息。
Ubuntu上安装ROS的步骤
操作流程
详细流程可以参考ros官方文档。
注:每个系统和ROS版本是匹配的,Ubuntu18.04所匹配的版本是melodic。
- 设置 sources.list:
bash
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
- 设置密钥
bash
sudo apt install curl # 如果你还没有安装 curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
- 更新
bash
sudo apt update
sudo apt install ros-noetic-desktop-full # 推荐,包含ROS、Rviz、仿真工具等
-
环境设置
将ros环境添加到环境变量里。
bash
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
- 安装构建工具:
bash
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
sudo rosdep init
rosdep update
问题
- 当使用
sudo rosdep init
失败时,如何处理?
1.提示如图所示时,需要安装,执行命令:sudo apt install python3-rosdep2(注:命令行里提示什么就输什么)
2.安装后,rosdep init还是失败,如图所示:
3.需要打开/etc/hosts文件目录,终端输入:sudo gedit /etc/hosts 4.文件就会自动打开,在末端添加:
151.101.84.133 raw.githubusercontent.com
5.保存后关闭, 重新执行rosdep init命令。 6.执行成功后如图所示:

- 当遇到sudo rodep update失败时,如何处理?
1.错误提示如图所示:
2.输入命令:vi /etc/resolv.conf,改成如图所示:

3.保存后重新update,若还是失败,则将手机热点打开再update。
安全防范
一般来说,ROS环境中的程序通常是用C++或Python编写的,对于C++程序,它们会被编译成可执行文件,文件格式是ELF,对于Python程序,它们则是以脚本的形式运行,由Python解释器执行。
Virbox Protector
工具在对elf文件和py脚本文件上有着成熟的保护方案,对elf程序的函数级和整体保护,对py进行字节码级别保护,可以防止源码泄露。