ROS的MATLAB远程访问

1、准备

ROS是世面上使用最多的机器人操作系统,而MATLAB作为最强大的数据处理软件肯定也不能落后,在MATLAB的工具箱中,就是robotics这个东西,这个里面就包括的ROS操作系统的相关工具,从matlab2013版本后,这个工具箱都会自动安装。

首先,我们可以先看一看这个工具箱里有些什么好东西,再matlab中运行

help ros
之后会看到如下命令:
  ros (Robot Operating System)
    rosinit            - Initialize the ros system
    rosshutdown        - Shut down the ros system
 
    rosmessage         - Create a ros message
    rospublisher       - Create a ros publisher
    rossubscriber      - Create a ros subscriber
    rossvcclient       - Create a ros service client
    rossvcserver       - Create a ros service server
    rostype            - View available ros message types
 
    rosmsg             - Get information about messages and message types
    rosnode            - Get information about nodes in the ros network
    rosservice         - Get information about services in the ros network
    rostopic           - Get information about ros topics
 
    rosbag             - Open and parse a rosbag log file
    rosparam           - Get and set values on the parameter server
    rosrate            - Execute loop at fixed frequency using ros time
    rostf              - Receive, send, and apply ros transformations
    rostime            - Access ros time functionality
 
    ros functionality is part of Robotics System Toolbox.
    Type "help robotics" for more information.

这就是所有的可在matlab上使用的命令,如果没有,那么老铁非常不幸的告诉你你们安装工具箱,去matlab官网找吧,但建议重安,毕竟我们都没钱用正版。


对于这个工具包的文件的,都在\MATLAB\R2016a\toolbox\robotics这个文件夹下,当然不同人安装的前面的路径可能不同,里面也包含这非常丰富的例子程序,例如在robotexample\ros下的exampleHelperROSCreateSampleNetwork.m文件,就是一个简单的运行ros的例子,首先我们先要吧主节点跑起来,在ubuntu上是roscore,但在matlab里面,是rosinit。

>> rosinit
Initializing ROS master on http://ZYX-PC:11311/.
Initializing global node /matlab_global_node_33106 with NodeURI http://ZYX-PC:53069/

这样我们就启动完了主节点,之后运行自带例程exampleHelperROSCreateSampleNetwork

之后我们就卡一看启动的节点和和消息了

>> exampleHelperROSCreateSampleNetwork
>> rosnode list
/matlab_global_node_33106
/node_1
/node_2
/node_3
>> rostopic list
/pose  
/rosout
/scan  
>> rostopic echo /pose

  Linear     
    X :  0.3850088418
    Y :  0.2085110666
    Z :  -0.8725756156
  Angular    
    X :  0.7674659268
    Y :  0.7288981145
    Z :  0.9881213901
---

  Linear     
    X :  0.3677480297
    Y :  0.2331125395
    Z :  -0.8479404236
  Angular    
    X :  0.7348614232
    Y :  0.6906525947

有没有很熟悉的赶脚。

2、连接

以上都是准备,熟悉熟悉,最实用的还是通过远程连接到ROS

首先,既然是远程访问,那么我们需要知道ROS端的IP地址,通过左上角的连接信息可以直接看到


可以看到我的IP是192.168.2.73。

然后我们在cmd(命令提示符)值输入

ipconfig/all

通过这个找到matlab端的IP地址,我这里是192.168.2.10

总结一下,我的matlab端的IP地址是192.168.2.10,我的ROS端的IP地址是192.168.2.73,这个IP地址在下面要视你们自己的情况进行替换。

首先需要修改.bashrc文件!!!不修改最后matlab能看到节点,但读不到具体数据,所以一定要改!!!!

cd ~
gedit .bashrc

然后在最后面添加

export ROS_IP=192.168.2.73
export ROS_MASTER_URI=http://192.168.2.73:11311

就需要在ros上启动我们的主节点!!!(要不不好用)

roscore

我们在MATLAB中命令进行一下配置,

>> setenv('ROS_MASTER_URI','http://192.168.2.73:11311')
>> setenv('ROS_IP','192.168.2.10')
>> rosinit

之后我们的matlab就和我们的ROS系统连接到了一起,两边可以互相访问数据和发布话题节点。

3、测试

我们可以使用我们的小乌龟测试一下,

首先我们要在ROS系统开启小乌龟和方向键

在一个终端输入

rosrun turtlesim turtlesim_node

开启小乌龟节点。

再在一个终端输入

rosrun turtlesim turtle_teleop_key

开启键盘控制节点。

这样我们就可以通过键盘控制小乌龟的移动。

下面我们再matlab的命令行输入

rostopic list

我们可以看到目前开启的各个节点

然后在输入

rostopic echo /turtle1/cmd_vel

我们再ROS端通过上下左右移动乌龟,我们可以在matlab端看到发出的数据


我们可以按Ctrl+C中断matlab端的接收。

如果matlab端rostopic echo没有数据,但是可以看到rostopic list有节点显示,那么一定要按照以上教程操作!!!

阅读更多
文章标签: ROS MATLAB 远程访问
个人分类: ROS
上一篇Intel RealSense ZR300之人物识别
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭