ROS学习笔记(七、ros消息和ros服务的使用)

在笔记三中,我们讲了ros消息是话题的信息,而ros服务是能够让客户端节点调用运行在服务端节点中的函数。服务端声明一个服务,并定义了一个回调函数来处理服务请求。客户端通过一个本地的代理请求调用这个服务。

ros话题也是通讯机制,那么ros服务相比于ros话题的优势在哪里呢?

由于ros话题的机制是不同步的,就跟写信一样,写信的人只管写文章,不管看的人想知道啥,而ros服务就不一样,他类似于打电话,在电话里面即可以表达自己的想法,同时对面的人也能表达想法,对于互相的想法,互相做出和回应并给出结果,这就是ros服务高级的地方。

--------------------------------------------------------------------------------------------------------------------

接下来我们进入实操环节:

首先,创建一个msg,与之前一样,设置环境变量,进入test_pkg目录下,创建一个msg目录,创建一个Num.msg文件。

source catkin_ws/devel/setup.bash
makdir msg
echo "int64 num">Num.msg

然后,我们在Num.msg文件中就能看到int64 num

然后,我们需要确保该消息文件能够被转换成c++、python的源代码,生成一个接口,yinc,我们需要查看package.xml,并加入下面两句:

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

然后,打开CMakeLists.txt文件

gedit CMakeList.txt

找到find_package函数,输入message_generation

找到catkin_package函数,添加CATKIN_DEPENDS message_runtime。

找到add_service_files函数,在下面添加代码:

找到generate_message函数,在下面添加代码:

最后,对ros工作空间进行编译

cd ../../
catkin_make

可以得到下面的样子:

这样,我们就成功添加了消息接口,可以被c++和python认识啦!

------------------------------------------------------------------------------------------------------------

接下来,我们学习ros服务的使用:

首先,需要设置环境变量,进入test_pkg文件夹下,创建srv文件夹,专门用来存储srv文件。

source catkin_ws/devel/setup.bash
roscd test_pkg
mkdir srv

然后,我们使用roscp命令,roscp是一个很使用的命令,可以使用他将一个文件从一个package复制到另外一个package,这里我们将rospy_tutorials文件包中的AddTwoInts.srv文件复制到srv/AddTwoInts.srv。

roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

然后,我们增加一个接口,打开CMakeList.txt文件,找到add_service_files函数,替换成下面函数

然后,使用rossrv命令,显示AddTwoInts.txt文件内容

rossrv show test_pkg/AddTwoInts

将会看到:

至此,我们理解了ros服务的意思并且进行了实操,加深了我们的理解,并学会了实际操作过程!!!( •̀ ω •́ )y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值