Hello_ROS¶
本章节将使用Python编写简单的 ROS 程序,在控制台输出文本: Hello ROS
ROS程序的实现流程大致分为以下几个步骤:
- 创建工作空间并初始化
- 创建功能包
- 编写源文件
- 编辑配置文件(可选)
- 执行
创建工作空间并初始化¶
打开终端,输入一下内容:
上述命令,首先会创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make命令编译。
创建功能包¶
进入 src 创建 ros 包并添加相关的依赖:
上述命令,会在工作空间下生成一个功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。
编写源文件¶
进入 ros 包添加 scripts 目录
新建一个 python 文件,hello_ros.py
:
为 python 文件添加可执行权限:
以下是对代码的解释:
1️⃣ #!/usr/bin/env python
- 作用:这是一行 Unix/Linux 下的环境声明(shebang) 。
- 含义:告诉系统使用当前环境下的 Python 解释器来运行这个脚本。
- ✅ 必须放在第一行,才能使该脚本被识别为一个“可执行”脚本。
2️⃣ import rospy
- 作用:导入 ROS 的 Python 客户端库
rospy
。 - 用途:它提供了编写 ROS 节点的全部 API,比如初始化节点、日志输出、发布/订阅话题等。
3️⃣ if __name__ == '__main__':
- 作用:这是 Python 的一个惯用写法,表示“程序入口”。
- 含义:只有当这个脚本被直接运行时(而不是作为模块被导入),才会执行后面的代码。
- ✅ 保证你把这个脚本当作主程序运行时才初始化 ROS 节点。
4️⃣ rospy.init_node('hello_ros_node', anonymous=True)
- 作用:初始化一个 ROS 节点,名字叫
hello_ros_node
。 -
参数解释:
-
'hello_ros_node'
:这是节点的基础名称。 anonymous=True
:自动给节点名加一串随机后缀,防止命名冲突,适合调试用。- ✅ 初始化节点是编写任何 ROS 程序的第一步。
5️⃣ rospy.loginfo("Hello ROS")
- 作用:使用 ROS 的日志系统在终端中输出一条“信息级别”的消息。
- 输出方式:它不会直接用
print()
,而是通过 ROS 的日志管理系统输出,消息会显示节点名、时间戳等信息。 - 终端效果示例:
执行¶
进入工作空间目录,先启动master节点:
在打开另一个终端,输入: