部分参考:https://blog.csdn.net/qq_41450811/article/details/80305846
应该从ROS的通信机制开始说起,话题通信机制和服务通信机制,还有一种参数管理机制本次不予展开。
本次先以服务通信机制为例子。
服务(Service)是节点之间同步通信的一种方式,允许客户端(Client)节点发布请求(Request),由服务端(Server)节点处理后反馈应答(Response)。
那么如何在RoboWare中自定义服务数据呢?
1、打开RoboWare Studio软件,文件->新建工作区(注意需要在全屏状态下才能看到菜单栏),我这儿工作区命名为test_ws
自动生成src文件夹,和在src文件夹目录下的一个CMakeList.txt文件。
之后选则小锤子后面为Release,选择菜单栏中的ROS->构建
构建完成后会发现刚才的工作空间test_ws目录下多了一个catkin_workspace的文件
此时可以使用Ctrl键+~ 召唤出终端,输入roscore检测ROS环境,使用Ctrl+C打断
之后就是在src文件下右键,新建ROS包,命名
然后会出现一个以刚才命名的文件夹,我的是server_package,此文件夹下面此时会有一个CMakeList.txt和package.xml两个文件。其中CMakeList.txt记录了功能包的编译规则,package.xml文件描述功能包属性的信息。
一般就是要修改package.xml文件的,修改一下里面的维护者信息什么的
之后就是在刚才那个test_package上面右键选择 编辑依赖的ROS包列表 以空格为分隔输入所依赖的包
输入后你会发现在test_package下中的CMakeList.txt居然自动更新了,哈哈哈,真牛逼
调出终端,输入catkin_make来编译一下刚才我们自己新建的包
创建一个Srv空文件夹:
srv文件分为请求和响应两部分,由'---'分隔。下面是srv的一个样例:
int64 A
int64 B
---
int64 Sum
其中 A 和 B 是请求, 而Sum 是响应。
同样的CMakeLists.txt 自动添加:
下面通过rossrv show命令,检查ROS是否能够识该服务
重新编译我们的package:
编译完成!
所有在msg路径下的.msg文件都将转换为ROS所支持语言的源代码。
生成的C++头文件将会放置在:
~/catkin_ws/devel/include/lee_package/
Python脚本语言会在:
~/catkin_ws/devel/lib/python2.7/distpackages/lee_package/msg 目录下创建。
lisp文件会出现在:
~/catkin_ws/devel/share/commonlisp/ros/lee_package/msg/ 路径下.