如何编写ros的python程序

如何编写ros的python程序,第1张

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系统是机器人 *** 作系统。

机器人 *** 作系统是一个机器人软件平台,它能为异质计算机集群提供类似 *** 作系统的功能。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目。到2008年,主要由威楼加拉吉继续该项目的研发。

ROS提供一些标准 *** 作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(例如传感,控制,状态,规划等等)。目前ROS主要支持Ubuntu *** 作系统。

扩展资料:

通常这样解释ROS:

1,通道:ROS提供了一种发布-订阅式的通信框架用以简单、快速地构建分布式计算系。

2,工具:ROS提供了大量的工具组合用以配置、启动、自检、调试、可视化、登录、测试、终止分布式计算系统。

3,强大的库:ROS提供了广泛的库文件实现以机动性、 *** 作控制、感知为主的机器人功能。

4,生态系统:ROS的支持与发展依托着一个强大的社区。ros.org尤其关注兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。

参考资料来源:百度百科-ros


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7709848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存