前言
在用笔记本Ubuntu
下的ROS
与win7
台式机Matlab
进行通信时,需要自定义一个service
类型。
Matlab
具有相关功能,只不过需要先安装一个插件ROS Custom Message Support
安装插件并生成自定义文件
- 1.在台式机安装插件,下载时需关闭防火墙,关闭代理,并使用管理者权限启动
matlab
,否则可能报错无法下载第三方。 - 2.生成自定义文件,在
ROS
内生成包含srv
,package.xml
的完整package
- 3.将整个
package
放入台式机下指定文件夹,并在该指定文件夹中创建一个m文件,内容如下:
path=pwd
rosgenmsg(path)
4.按照
rosgenmsg
运行以后的提示进行余下操作:- a) 在
javaclasspath.txt
中添加指定路径 - b) 添加自定义消息文件路径并保存
- c) 重启并
rosmsg list
查看
- a) 在
5.对于
srv
,生成两个消息文件,命名分别是[package名]/[service文件名]+[Request/Response]
- 6.注:如果
srv
文件是小写字母开头,或者包含下划线,下划线后面是小写字母
在matlab
中,将把开头字母自动转化成大写,删去下划线,下划线后面的小写字母变为大写
使用报错一
在确认能用rosmsg
看到生成的自定义文件后,且确认Ubuntu
端ROS
已启用roecore
与service
节点,matlab
端使用rosinit
进行连接后,使用rosservice list
可以查到在ROS
端启用的service
, 但查询该类型信息或类型时,出现如下报错:
……………… org.jboss.netty.channel.DefaultChannelPipeline
An exception was thrown by a user handler while handling an exception event ([id: 0x7c974942] EXCEPTION:
java.nio.channels.UnresolvedAddressException)