zoukankan      html  css  js  c++  java
  • 【ROS】实现ROS与MATLAB之间的相互通信

    MATLAB与ROS实现通信时将运行matlab的计算机当作一个ROS节点,同通过同一个局域网,实现与另一台运行有节点管理器的计算机建立通讯连接,从而实现与ROS网络中的所有节点的通讯连接。Ubuntu中用ifconfig查看IP,Windows中用ipconfig查看IP地址.注意虚拟机的话要训责桥接的网络模式,才可以在局域网中有个不冲突的IP

    下面是步骤:

    1. 在Ubuntu的终端中输入以下命令打开~/.bashrc文件

      sudo gedit ~/.bashrc
      
    2. 在打开的.bashrc文件的末尾增加下面的命令

      export ROS_IP=192.168.1.117 (该IP是Ubuntu系统的IP)
      
    3. 在Windows的Matlab的命令窗口输入以下命令

      setenv('ROS_MASTER_URI','http://192.168.1.117:11311')  (该IP还是上述的Ubuntu系统的IP,最后的数字11311是端口号,是固定的这个值,不用改)
      
    4. 在Ubuntu中运行roscore命令,然后在Matlab中运行rosinit命令,此时就因该可以和Master主节点建立通讯.

    5. 可以运行简单的例子来测验一下,在Ubuntu中运行小乌龟,如下.

      rosrun turtlesim turtlesim_node
      rosrun turtlesim turtle_teleop_key
      
    6. 然后在matlab中输入以下命令,等待ROS传回消息.

      rostopic echo /turtle1/pose
      
    7. 此时再在ROS平台上用键盘操控小乌龟的走向就可以将位置信息传回给matlab了,matlab会自动不断显示位置信息.

    8. 上面两个步骤是ROS操控传回消息到Matlab,下面通过在matlab上运行命令,实时操作ROS上的小乌龟.同样现在ROS上运行roscore,再打开小乌龟节点.

    9. 在matlab建立如下的脚本文件,并运行,就可以看到ROS平台上的小乌龟的运动了.

      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)
       
      chatterpub = rospublisher('/chatter',rostype.std_msgs_String)
       
      pause(3)% Wait to ensure publisher is setup
       
      chattermsg = rosmessage(chatterpub);
       
      chattermsg.Data = 'hello world'
       
      send(chatterpub,chattermsg)
       
      pause(5)
      

    上述的步骤中实现了matlab到ROS的通信,和ROS到matlab的双向通信问题.

    注意:在每次运行Matlab后都要在命令窗口之中运行下面两句命令

    setenv('ROS_MASTER_URI','http://192.168.1.117:11311') 
    rosinit
    
  • 相关阅读:
    实战演练:通过伪列、虚拟列实现SQL优化
    python try else
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    Prince2是怎么考试的?
    拦截器
    拦截器
    拦截器
    拦截器
  • 原文地址:https://www.cnblogs.com/LENMOD/p/13728550.html
Copyright © 2011-2022 走看看