ROS Indigo beginner_Tutorials-10 编写 ROS 话题版的 Hello World 程序(Python版)
我使用的虚拟机软件:VMware Workstation 11
使用的Ubuntu系统:Ubuntu 14.04.4 LTS
ROS 版本:ROS Indigo
1. 前言 :
Hello world 程序,在我们编程界,代表学习某种语言编写的第一个程序。对于 ROS 机器人操作系统来说,这个 Hello World 程序就是 : 写一个简单的消息发布器(发送) 和 订阅器(接收)。
2. 准备工作 :
C++ 的程序都会存放在每个程序包的 src 文件夹里。 Python 不同,Python 程序都存放在 scripts 文件夹中, 反正意思都是 源文件 包。
Step 1 . 所以,先在 beginner_tutorials 软件包中创建一个 scripts 文件夹:
$ roscd beginner_tutorials$ mkdir scripts$ cd scripts123
3. 编写消息发布器节点程序:
如果你懒得去写的话,你可以使用 wget 命令, 在 github 上获取一个 talker.py 源代码。如何获取呢 ?
Step 2 . 开一个终端,输入下面的命令就可以获取 talker.py :
$ wget
-devel/rospy_tutorials/001_talker_listener/talker.py$ ls
talker.py123
但是我建议你亲自动手,写一写:手动创建一个 talker.py 文件在 /scripys 文件夹里:
$ roscd beginner_tutorials/scripts$ gedit talker.py12
将这上面链接里的代码手动输入到 talker.py 文件中。(我就不将代码贴上来了)
下面我来讲解一下代码:
Step 3 . 最后一步,给这个 talker.py 文件加上可执行权限:
$ chmod +x talker.py1
这样,一个发布器就编写完了。我们不要急着去运行它,现在我们编写一个订阅器,来接收这个发布器发布的话题:
4. 编写消息订阅器节点程序:
Step 4 . 和发布器一样,我们使用wget命令获取订阅器的源代码 listener.py:
$ roscd beginner_tutorials/scripts/$ wget
ials/indigo-devel/rospy_tutorials/001_talker_listener/listener.py$ ls
listener.py talker.py1234
但是,我还是建议你自己动手写一下。
好吧,下面我们开始讲解 listener.py 里面的代码,这个listener.py程序的代码简单:
Step 5 . 最后不要忘了给这个listener.py 加可执行权限:
$ chmod +x listener.py1
5. 运行 :
对于python 来说,我们不需要使用 catkin_make 命令对 ~/catkin_ws 工作空间进行编译。因为python文件本身就是可执行文件(前提是我们给它添加可执行权限)。
OK,发布器 和 订阅器 都创建完了。下面我们运行它们,看看效果:
Step 6 . 新打开一个终端,先执行 roscore 命令:
$ roscore1
Step 7 . 新打开一个终端,启动 发布器 :
$ rosrun beginner_tutorials talker.py 1
Step 8 . 新打开一个终端,启动 订阅器 :
$ rosrun beginner_tutorials listener.py 1
运行效果:
Step 9 . 我们来使用 rostopic list ,看看当前的话题有哪些:
$ rostopic list
/chatter
/rosout
/rosout_agg1234
其中 /chatter 就是我们在发布器里面发布的 ROS话题。
6. 扩展,编写一个启动脚本文件 :
还记得上一节,我们讲的ROS的启动脚本文件吧,下面我们来编写一个launch文件,来将 talker.py 和listener.py 文件的启动工作交个这个launch文件来做:
Step 10 . 来到 beginner_tutorials程序包的 /launch 路径下,新建一个 hello_world_topic.launch 文件:
$ roscd beginner_tutorials/launch$ gedit hello_world_topic.launch #使用你自己喜欢的文本编辑器12
Step 11 . 输入下面的代码:
<launch>
<node pkg="beginner_tutorials" name="talker" type="talker.py" />
<node pkg="beginner_tutorials" name="listener" type="listener.py" /></launch>1234
Step 12 . 现在,将之前打开的终端都关闭,我们启动这个脚本: (开一个终端 : Ctrl+Alt+T)
$ roslaunch beginner_tutorials hello_world_topic.launch1
运行结果:
上面截图的输出显示: talker.py 和 listener.py 脚本运行成功。但是并没有出现刷屏的现象。这是为什么? 为了证明这个脚本程序真的成功的运行了,我们来试一试:
Step 13 . 重新开一个终端,输入下面的命令:
$ rosrun list$ rostopic list$ rostopic echo /chatter123
Step 14 . 现在 Ctrl+C 结束监听 /chatter 话题。使用 rqt_graph 对当前启动的节点可视化:
$ rqt_graph1
这些足以说明,hello_world_topic.launch 启动脚本文件,启动成功。
总结: 发布器 和 订阅器 是很简单的, 就是简单的发布一个 自定义的话题。
我之前使用说过:节点之间通讯的方式有两种 : 话题(rostopic) 和 服务(rosservice)
所以,接下来,我们会讲:使用ROS服务来完成ROS版 Hello World 程序的例子。但是在这之前,我们需要学一学:如何创建自定义的ROS消息和ROS服务,以便 ROS 服务版的 Hello World 程序的编写。
所以下一讲,我们来学习:如何创建自定义的ROS消息和ROS服务。
如何编写ros的python程序
1 先建立工作空间~\/catkin_ws catkin_create_pkg basic std_msgs rospy 2 在工作空间~\/catkin_ws下创建包pkg目录basic 好处是通过创建包自动生成package.xml和CMakeLists.txt 3 在工程目录下建一个src子目录和.py文件 源代码文件:topic_publisher.py ~~~!\/usr\/bin\/env python import roslib; ro...
如何编写ros的python程序
Hello world 程序,在我们编程界,代表学习某种语言编写的第一个程序。对于 ROS 机器人操作系统来说,这个 Hello World 程序就是 : 写一个简单的消息发布器(发送) 和 订阅器(接收)。2. 准备工作 :C++ 的程序都会存放在每个程序包的 src 文件夹里。 Python 不同,Python 程序都存放在 scripts 文...
如何编写ros的python程序
1先建立工作空间~\/catkin_ws参阅\/note\/516843231\/3在工程目录下建一个src子目录和.py文件源代码文件:topic_publisher.py~~~#!\/usr\/bin\/envpythonimportroslib;roslib.load_manifest('basic')importrospyfromstd_msgs.msgimportInt32rospy.init_node('topic_publisher')pub=rospy.Publisher('counter',...
tf2系列教程(四):在ROS 2中编写tf2广播者节点(Python)
首先,创建ament_python软件包,命名为learning_tf2,依赖tf2、tf2_ros、rclpy和turtlesim等库。确保在src目录下已生成learning_tf2文件夹。创建名为turtle_tf2_broadcaster.py的python文件,位于learning_tf2目录下。导入所需库:geometry_msgs、rclpy、tf2_ros、turtlesim.msg及tf_transformations。定义FramePubl...
【ROS2机器人入门到实战】动作之RCLPY实现
首先,我们需要创建功能包和节点。从创建功能包开始,接着编写Python脚本:robot.py, action_robot_02.py, 和 action_control_02.py,以及setup.py来配置环境。验证步骤很简单,直接编译并运行节点,检查是否能正常启动。在编写机器人类时,Python代码简洁易懂,无需深入解析,它得益于Python内置的便捷性...
如何编写ros的python程序
第一步去你的linux上写个串口程序跟在win下调windowsapi一样一样的就在terminal里用c\/c++都可以例子一大把第二步按照ros官网的tutorial把这个串口程序粘进去建立topic然后public数据上去
【ROS】订阅 \/ 发布节点 | launch 文件编写 | 自定义消息类型的订阅与发...
编写 Python 订阅节点,订阅并处理接收到的消息。3. 编写 launch 文件 - **3.0 小 tip**:使用 launch 文件启动 ROS 节点,无需单独启动 ROS 内核。- **3.1 针对 C++ 节点**:配置 launch 文件以启动 C++ 节点。- **3.2 针对 Python2 节点**:编写 launch 文件来启动 Python 节点。- ...
ROS环境下python 3.x和python2.x共存 (Ubuntu 18.04 + Melodic)_百度知...
由于默认情况下,ROS中使用的cv_bridge是在python2.7环境下编译的,这导致在python3.x环境下使用cv2函数时会出现错误。要解决这个问题,需要在python3.x环境下重新编译cv_bridge。首先,在工作空间下的src文件夹中打开一个终端,下载melodic对应版本的vision_opencv:git clone -b melodic github.com\/ros...
ROS Melodic 上部署python3 环境
问题的核心在于ROS Melodic默认基于Python2环境,而许多现代Python3库和ROS项目不兼容。前提 为了灵活切换Python2和Python3解释器,推荐使用conda管理多个Python虚拟环境。首先确保已安装conda,对于轻量级需求,建议使用mini-conda。解决geometry2 下载geometry源代码并手动编译,通过`catkin_make`命令正确设置Python...
ROS 2中级教程——8 使用colcon构建软件包
首先,了解colcon工具,它代表了ROS构建工具catkin_make,catkin_make_isolated,catkin_tools和ament_tools的改进版本。更多关于colcon设计的信息可查阅指定文档。要开始使用colcon,请访问GitHub上的colcon组织,下载并安装源代码。具体而言,Linux用户可以通过命令行使用sudo apt install python3-colcon-common-...