美文网首页
ROS和Matlab的简单联调

ROS和Matlab的简单联调

作者: 王啟凡 | 来源:发表于2017-11-02 10:49 被阅读0次

    (1)系统配置

    ROS系统(Ubuntu),主机host,ip: 192.168.1.1 (ifconfig)。

    matlab2015(Windows),从机,ip: 192.168.1.101 (ipconfig)。

    (2) WINDOWS与Ubuntu是否通讯

    为保证Matlab的Robotics System Toolbox与Ubuntu下ROS通信并工作,首先要创建局域网,将两主机置于同一子网内,用PING检测网络可达性。注意虚拟机要用HOST虚拟网卡。

    同时要检查好防火墙,确保不对Matlab拦截。

    (3) 设置ROS环境变量

    Master以及两主机间各node之间的正确通信必须设置相应的环境变量,以保证node能找到master进行注册等操作,以及node使用正确的地址发布TOPIC和宣告SERVICE。所以需要在没有运行master的主机设置ROS_MASTER_URI变量,并在两主机上设置ROS_IP环境变量。ROS_IP而非ROS_HOSTNAME,是因为WINDOWS常常不能将计算机名解析成IP地址以致连接失败。两台机器都是Linux主机用ROS_HOSTNAME是木有问题的。

    ROS_MASTER_URI:若roscore在其他机器上运行,则需要将ROS_MASTER_URI设置为运行roscore主机的ip,node就能以此与master建立连接进行通信及数据交互。

    ROS_IP:变量对所运行的主机上的node起作用,node的TOPIC与SERVICE都发布到此地址上。

    操作步骤:

    在主机上,在~/.bashrc文件中添加:

    export ROS_IP=192.168.1.101
    保存退出,重开终端,运行master:

    roscore
    运行一个简单的turtle例程。

    rosrun turtlesim turtlesim_node
    在从机上,打开mablab,进行环境变量设置。在命令窗口输入:

    rosrun turtlesim turtle_teleop_key %键盘控制

    1
    setenv('ROS_MASTER_URI','192.168.1.101')
    2
    setenv('ROS_IP','192.168.1.100')
    初始化全局node:

    1
    rosinit()
    (4)在matlab下操作ROS

    文件:testROS.m

    在matlab查阅下topic列表

    rostopic list
    会出现以下显示

    /rosout
    /rosout_agg
    /turtle1/cmd_vel
    /turtle1/color_sensor
    /turtle1/pose
    在matlab下显示topic内容
    rostopic echo /turtle1/pose
    若果出现以下内容,恭喜你!数据已经读到matlab里了。
    X : 5.544444561
    Y : 5.544444561
    Theta : 0
    LinearVelocity : 0
    AngularVelocity : 0


    注意,以上显示会刷屏,按ctrl+c停止显示。

    查看topic数据类型等信息:

    rostopic info /turtle1/cmd_vel
    显示:
    Type: geometry_msgs/Twist
    Publishers:
    Subscribers:

    • /turtlesim (http://192.168.1.101:37723/)
      接下来我们尝试下在matlab里发送消息给小海龟。
      首先设置消息类型为geometry_msgs/Twist
      cmdpub = rospublisher('/turtle1/cmd_vel',rostype.geometry_msgs_Twist)
      pause(3) % Wait to ensure publisher is setup
      cmdmsg = rosmessage(cmdpub);
      cmdmsg.Linear.X = 10;
      cmdmsg.Angular.Z = 15;
      send(cmdpub,cmdmsg)

    之后就可以看见小海龟的

    相关文章

      网友评论

          本文标题:ROS和Matlab的简单联调

          本文链接:https://www.haomeiwen.com/subject/rilopxtx.html