精华内容
下载资源
问答
  • 在window下,建立与ubuntu系统中ROS通信,实现将window中的字符发个ubuntu中ROS系统
  • 实现ROSwindows通信

    千次阅读 2020-06-02 21:59:17
    参考链接: https://blog.csdn.net/zzu_seu/article/details/90052160

    参考链接:

    https://blog.csdn.net/zzu_seu/article/details/90052160
    
    展开全文
  • 自从window系统顺利安装ROS系统之后,小海龟顺利跑起来,就面临Ubuntu系统和windows系统上的ROS通信问题。这个问题卡了很久,就在今天上午,在实验室强哥的帮助下,这个问题终于解决。 查了很多博客,对这个问题,并...

    各位博友,好久不见。自从window系统顺利安装ROS系统之后,小海龟顺利跑起来,就面临Ubuntu系统和windows系统上的ROS通信问题。这个问题卡了很久,就在今天上午,在实验室强哥的帮助下,这个问题终于解决。

    查了很多博客,对这个问题,并没有一个系统性的解决方案。今天将这一过程梳理一二,整理如下:

    想要实现Windows中ros和Ubuntu系统中的ros进行通信,按照两个Ubuntu系统中ROS通信的思路,这里参考该链接先对ubuntu的配置过程进行阐述:

    一、Ubuntu系统ros和Ubuntu系统ros的通信过程

    1、配置IP地址

    首先需要确定ROS多机系统中的所有计算机处于同一网络,然后分别在计算机ubuntu、shibopi-desktop上使用ifconfig命令查看计算机的局域网IP地址 为了防止每次开机分配的IP地址变化,这里建议为俩机分配固定IP,一劳永逸,下面我使用的这两个IP是我分配好的。

    主机ubuntu192.168.8.88
    从机shibopi-desktop192.168.8.197

    分别在两台计算机系统的/etc/hosts文件中加入对方的IP地址和对应的计算机名

    在Ubuntu主机上运行以下指令

    sudo gedit /etc/hosts
    

    将指令加入到该文件中192.168.8.197 shibopi-desktop

    在shibopi-desktop从机上运行以下指令

    sudo gedit /etc/hosts
    

    将指令加入到该文件中192.168.8.88 ubuntu

    设置完毕后,分别在两台计算机上使用ping命令测试网络是否连通
    在这里插入图片描述

    2、设置ROS_MASTER_URI

    因为系统中只能存在一个Master,所以从机shibopi-desktop需要知道Master的位置。ROS Master的位置可以使用环境变量ROS_MASTER_URI进行定义,在从机shibopi-desktop上使用如下命令设置ROS_MASTER_URI:

    $ export ROS_MASTER_URI=http:/ubuntu:11311
    

    但是以上设置只能在输入的终端中生效,为了让所有打开的终端都能识别,最好使用如下命令将环境变量的设置加入终端的配置文件中。

    $ echo "export ROS_MASTER_URI=http://ubuntu:11311" >> ~/.bzshrc
    

    这样,两个Ubuntu系统中的ROS就能通讯了。

    二、windows系统中的ROS和Ubuntu系统的ROS进行通信

    这里准备的硬件条件为

    Windowsmelodic10.42.0.100从机
    Ubuntukinetic10.42.0.1主机

    1、配置IP地址

    将Windows系统和Ubuntu系统放置在同一个局域网下,分别在Ubuntu系统和windows系统中固定IP地址。这里默认各位博友天生就会固定Ubuntu下的IP地址。windows的IP地址固定的过程用一张图说清楚:
    在这里插入图片描述
    这里固定Windows端的IP地址为10.42.0.100
    Ubuntu端的IP地址为10.42.0.1

    与上述两个Ubuntu系统中ROS通讯不同的是,这次就不在/etc/hosts文件进行任何操作

    直接在windows上的命令行窗口去ping 10.42.0.1和在Ubuntu系统的终端去ping 10.42.0.100

    这里不出意外的话,会遇到一个问题。就是在Windows下去ping通Ubuntu是可以ping通的,但是从Ubuntu去ping通Windows就ping不同。这里需要设置一下防火墙,这里以一张图片和一个链接阐述这一操作过程:
    在这里插入图片描述
    设置完成了!!!
    发现可以ping通了,走到这里,相信大部分博友开始暗自高兴,因为大佬总会对问题解决的程度有一个敏锐感觉,问题已经解决大半了。

    2、设置ROS_MASTER_URI

    因为系统中只能存在一个Master,所以从机Windows需要知道Master的位置。但是Windows下没有.bashrc文件呀,这如何设置呢?
    这里主要参考这个链接,给我们的进展打开了新的思路。
    在Windows系统中安装ROS的过程中,都会在桌面生成一个ROS的快捷命令窗口,双击这个ROS快捷命令窗口,并在其中执行以下两条指令:

    set ROS_MASTER_URI=http://主机IP:11311
    
    set ROS_IP=从机IP
    

    对应于之前的设定,本电脑执行如下命令:
    在这里插入图片描述
    这两条语句对应于Ubuntu系统写入.bashrc文件中的两条:

    export ROS_MASTER_URI=http://主机IP:11311  #要和主机的roscore终端中的ROS_MASTER_URI的port一致,默认为11311。http不可省略
    
    export ROS_IP=从机IP              #本机的ip地址
    

    注意
    Windows作为从机,在每次启动的时候都要单独在命令行中执行这两条语句,如果嫌麻烦的话,可以将其写到一个脚本文件中。

    三、小海龟测试

    在Ubuntu系统的终端执行以下指令

    roscore
    rosrun turtlesim turtlesim_node
    

    把小海龟的节点跑起来
    在这里插入图片描述

    在Windows系统中,通过ROS命令行快捷方式输入以下指令

    set ROS_MASTER_URI=http://10.42.0.1:11311
    set ROS_IP=10.42.0.100
    rosrun turtlesim turtle_teleop_key.exe
    

    键盘控制的节点跑起来:
    在这里插入图片描述

    最后
    Windows上的ros和Ubuntu系统ros通信成功!!!

    附一张照片
    在这里插入图片描述

    在此,向以下链接提供的帮助表示诚挚的谢意!
    https://www.codenong.com/cs106025874/
    https://www.guyuehome.com/25106

    展开全文
  • ros:Indigo windows 10 + VS2013(2015也可以) 目的:使用windows上生成的命令控制Linux系统上ROS控制的机器人移动。 工作流程 从基于ROS的系统中,生成ros_lib代码 将ros_lib代码放入Visual Studios解决方案中 ...

    运行环境:

    ros:Indigo          windows 10 + VS2013(2015也可以)

    目的:使用windows上生成的命令控制Linux系统上ROS控制的机器人移动。

    工作流程

    1. 从基于ROS的系统中,生成ros_lib代码
    2. 将ros_lib代码放入Visual Studios解决方案中
    3. 编写代码以使用ros_lib连接到ROS主服务器并发送/接收消息
    4. 在ROS master上运行rosserial_server套接字
    5. 编译并运行Windows应用程序

    生成ros_lib

    1.安装rosserial_windows

    在ROS上安装rosserial_windows和rosserial服务器:

    sudo apt-get install ros-indigo-rosserial-windows
    sudo apt-get install ros-indigo-rosserial-server

    2.生成ros_lib

    此步骤将生成Visual Studio项目中与ROS主服务器通信所需的代码。提供一个文件名,例如my_library,将完成的文件就会存储到的提供的文件夹的名称所在地。

    rosrun rosserial_windows make_libraries.py my_library

    在my_library这个文件夹下会生成ros_lib文件夹。

    将ros_lib添加到Visual Studio Project

    将上一步生成的文件拷贝到windows系统上面,创建一个新的Win32控制台应用程序。

    • 打开Visual Studio
    • 文件 - >新建->项目
    • 在Visual C ++ - > Win32下找到Win32控制台应用程序
    • 为您的项目命名。我们将使用rosserial_hello_world。

    将ros_lib复制到项目中。

     VS2013工程配置

    将ros_lib文件夹下没有子文件夹的所有文件复制一份至工程目录下。

     

    6.在VS2013属性中配置附加包含ros_lib路径:

     项目->属性->C/C++->常规->附加包含目录,添加"../ros_lib" 的路径。

    然后在头文件和源文件中分别添加   ros.h   WindowsSocket.h         duration.cpp        time.cpp      WindowsSocket.cpp这几个文件。

    为Hello World添加代码到main

    /* rosserial_hello_world.cpp : Example of sending command velocities from Windows using rosserial
     */
     #include "stdafx.h"
     #include <string>
     #include <stdio.h>
     #include "ros.h"
     #include <geometry_msgs/Twist.h>
     #include <windows.h>
     
     using std::string;
     
     int _tmain (int argc, _TCHAR * argv[])
     {
       //创建节点句柄
       ros::NodeHandle nh;
       //ROS所在主机IP
       char *ros_master = "1.2.3.4";
     
       printf ("Connecting to server at %s\n", ros_master);
       nh.initNode (ros_master);
     
       printf ("Advertising cmd_vel message\n");//发布cmd_vel信息
        //初始化消息类型
       geometry_msgs::Twist twist_msg;
        //创建一个发布者发布话题
       ros::Publisher cmd_vel_pub ("cmd_vel", &twist_msg);
       nh.advertise (cmd_vel_pub);
       
       printf ("Go robot go!\n");
        //发布的内容
       while (1)
       {
         twist_msg.linear.x = 5.1;
         twist_msg.linear.y = 0;
         twist_msg.linear.z = 0;
         twist_msg.angular.x = 0;
         twist_msg.angular.y = 0;
         twist_msg.angular.z = -1.8;
         cmd_vel_pub.publish (&twist_msg);
    
         //循环等待回调函数
         nh.spinOnce ();
         //休眠100ms
         Sleep (100);
    }
    
    printf ("All done!\n");
    return 0;
    }

    8.运行程序

    使用网线将windows主机和Ubuntu主机连接起来,不连接网线的时候运行程序应该会出现:

    连接网线的时候应该会出现:

    注意:在运行程序的是后我出现了这样的错误:

    解决方法:在相应报错的.cpp上,右键单击,属性,修改预编译头,如图将使用改为不使用预编译头。然后运行就不会有报错了。

    进行网络设置

    这一步非常重要,我搜到的所有教程里面都是没有这一步的,导致自己尝试了很久一直都无法进行通信。

    需要在windows和Ubuntu系统上进行网络设置,将两台计算机组建成局域网,具体的设置和测试设置是否成功的方法可以查看我的这一篇博客:

    https://blog.csdn.net/zzu_seu/article/details/90113916

    ROS端启动服务

    在终端中分别执行:

    roscore

     rosrun rosserial_server socket_node

     rostopic echo /cmd_vel

    windows中启动编写的程序

    这样就可以在终端上看到结果:

    控制小乌龟

    可以使用这个命令控制小乌龟进行移动

    在Ubuntu中不同终端分别运行:

    roscore

    rosrun rosserial_server socket_node /cmd_vel:=turtle1/cmd_vel

    rosrun turtlesim turtlesim_node

    在windows上运行程序,可以看到小乌龟开始打圈圈。

     

     

    展开全文
  • Ubuntu ROS和Windows Matlab联合通信 实验室想用Matlab控制UR16e机器人,于是使用MATLAB与ROS进行联合通信。 连接 ubuntu查找本机ip地址 ifconfig windows查找本机ip地址 ipconfig [外链图片转存失败,源站可能...

    Ubuntu ROS和Windows Matlab联合通信

    实验室想用Matlab控制UR16e机器人,于是使用MATLAB与ROS进行联合通信。

    连接
    1. ubuntu查找本机ip地址
    ifconfig
    
    1. windows查找本机ip地址
    ipconfig
    
    1. ubuntu配置文件修改 .bashrc
    export ROS_IP=172............(Ubuntu ip地址)
    export ROS_MASTER_URI=http://172........(Ubuntu ip地址):11311
    

    然后运行roscore

    1. windows matlab初始化配置
    setenv('ROS_MASTER_URI','http://172.......(Ubuntu ip地址):11311')
    setenv('ROS_IP','172........(Windows ip地址)')
    rosinit
    
    测试

    ubuntu打开小乌龟的测试示例

    roscore #新开终端启动
    rosrun turtlesim turtlesim_node #打开一个实例
    

    在matlab上查看,用rostopic list 命令查看话题名称:

    rostopic list
    

    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)
    

    Ubuntu单系统matlab与ROS通信

    首先需要下载matlab得到linux版本

    启动系统上的ROS

    ifconfig #enp3s0 --看ip
    
    sudo ~/.bashrc #修改文件
    
    export ROS_IP=192******** #添加本机ip
    
    roscore #新开终端启动
    
    rosrun turtlesim turtlesim_node #打开一个实例
    

    在MATLAB上启动

    setenv('ROS_MASTER_URI','http://192.168.1.50:11311')  %这是本机的ip地址
    setenv('ROS_IP','192.168.1.50')
    rosinit
    rostopic list
    rostopic echo /turtle1/pose
    

    在MATLAB上进行测试

    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) 
    
    
    

    本机的地址 192.168.1.105

    Ubuntu地址 http://192.168.1.50:11311 ip:192.168.1.50

    这是在使用UR16e进行关节角度复现的代码,主要是执行各时间序列的关节位移

    %node = ros.Node('/jointControll');
    jntTrajPub=rospublisher("/scaled_pos_joint_traj_controller/follow_joint_trajectory/goal","control_msgs/FollowJointTrajectoryActionGoal");
    pause(3);
    controlCmdMsg= rosmessage(jntTrajPub);
    controlCmdMsg.Goal.Trajectory.JointNames={'shoulder_pan_joint'; 'shoulder_lift_joint'; 'elbow_joint'
                                                     'wrist_1_joint' ;'wrist_2_joint'; 'wrist_3_joint'};
    file_t=fopen('afterTrain2.txt','r');
    %舍去第一行的信息
    jntMatrix=textscan(file_t,'%f,%f,%f,%f,%f,%f,%f','HeaderLines',1);
    %将元胞数组转化为矩阵
    jntMatrix=cell2mat(jntMatrix);
    [rows,cols]=size(jntMatrix)
    point=rosmessage("trajectory_msgs/JointTrajectoryPoint");
    point.Positions=jntMatrix(1,2:cols);      %将第一组关节存入关节数组
    duration = rosduration(8);   %得到运行时间,转化为ROS格式
    point.TimeFromStart=duration;  
    %controlCmdMsg.Goal.Trajectory.Header.Stamp=rostime('now');
    controlCmdMsg.Goal.Trajectory.Points(1)=point;
    send(jntTrajPub,controlCmdMsg);
    pause(8);
    for row=2:rows
        jntMatrix(row,2:cols);
        point.Positions=jntMatrix(row,2:cols);      %存入关节数组
        duration = rosduration(jntMatrix(row,1)-jntMatrix(row-1,1));   %得到运行时间,转化为ROS格式
        point.TimeFromStart=duration;   
    %    controlCmdMsg.Goal.Trajectory.Header.Stamp=rostime('now');
        controlCmdMsg.Goal.Trajectory.Points(1)=point;
        send(jntTrajPub,controlCmdMsg);
        pause(jntMatrix(row,1)-jntMatrix(row-1,1));
    end
    
    展开全文
  • ros:melodic windows 10 + VS2017 目的:使用windows上生成的命令控制Linux系统上ROS控制的小海龟移动 工作流程 1.从基于ROS的系统中,生成ros_lib代码 2.将ros_lib代码放入Visual Studios解决方案中 3.编写代码以...
  • 配置ROS和ABB Robot Studio,实现ROS与ABB IRC5机械臂控制器之间的以太网连接。文章主要介绍了Windows10如何设定静态IP地址,虚拟机Ubuntu如何连接到网络并设定静态IP,如何在ABB Robot Studio中配置ROS驱动包ABB ...
  • 我发现了这个节点,我最近正在使用它与使用NMEA地理定位协议发送数据的Windows TCP/IP套接字通信。在它使用一个线程来连接TCP/IP连接,然后使用一个进程来解码消息并将其转换为ros格式。在附言:你能把你的剧本贴...
  • ROS:noetic windows 10 Visual Studio 2019 工程配置: 操作完全一致。参考前一篇文章https://blog.csdn.net/weixin_42264818/article/details/119679646?spm=1001.2014.3001.5501 复制代码: //#include ...
  • ROS和MATLAB通信的一个测试

    千次阅读 2017-11-14 09:59:00
    ROS主机MATLAB从机要在同一个局域网下。 windows下的ip地址查看方法:打开cmd命令窗,输入ipconfig; Ubuntu下的ip地址查看方法:打开一个新的终端,输入ifconfig。 在确认两台电脑处于同一个局域网后,即可...
  • CANALYST-II的linux版本can通信解析程序
  • ROS跨平台通信方式

    2021-01-15 17:12:31
    ROS与TwinCAT3通信 https://blog.csdn.net/hujiawei_sjtu/article/details/108858938 ROS与非ROS系统通信 ... ROSWindows系统通信 https://blog.csdn.net/zzu_seu/article/details/90052160
  • 之前博客《RO发布者S复习笔记之——系统框架及其编程规范》的(发布者节点订阅者节点的创建运行)一节中以及介绍如何创建发布者、订阅者、话题消息的通信。本博文继这个博客,来复习一下创建运行服务服务器与...
  • rosros 与 win 通信

    2020-09-23 10:43:48
    先码下来:可能会用到。 基于rosserial_windows实现ROSwindows通信 roswiki
  • 更新了一下win下的ROS,开发课程需要,必须使用最新版本的ROS。 安装: Noetic Foxy 使用一切正常: 附(安装记录): C:\ros_ws>choco upgrade ros-foxy-desktop -y --execution-timeout=0 ...
  • Rosbridge Ros 与 Android 通信(三) 系列博客第一篇: 配置编译 apk 文件 系列博客第二篇: 调试跑通 apk 文件 系列博客第三篇: 通信演示 我的实验环境 Windows 10(android虚拟机蓝叠) Ubuntu 18.04 (ROS) ...
  • PC系统:Ubuntu16.04+ROS kinect 树莓派系统:Ubuntu16.04+ROS kinect 前提:PC树莓派在同一局域网下;也就是都连同一个WIFI(路由器生成的那种,或者手机热点,校园网不行),或者PC连了WIFI、用根网线把树莓派...
  • 1.3 Ubuntu18.04 ROS udp server 通信实现

    千次阅读 2021-12-16 22:53:03
    Ubuntu18.04 ROS udp Server通信实现 此小节介绍udp Server收发数据...测试平台为Ubuntu18.04 与Windows系统上的网络调试助手进行通信测试,调试助手采用的有人科技的USR-TCP232-Test-V1.3。 测试过程为:过程1 2与文章
  • 1.在ubuntu命令行输入,安装rosserial_windows和rosserial服务器 sudo apt-get install ros-noetic-rosserial-windows sudo apt-get install ros-noetic-rosserial-server 2.生成ros_lib 此步骤将生成Vis
  • 需要用Win端的python与ROS进行通信,从而达到在Win端控制ROS机器人的功能。请问要怎么实现Win和ROS之间的通信呢?
  • 课程简介 本课程将带领大家通过PVE这个虚拟机平台,在你的家庭局域网络中,搭建软路由 适用人群 有一定的网络基础知识。喜欢折腾硬件的朋友
  • ROS1多机通信配置较为繁琐,但是ROS2非常简单,直接通过DDS实现。 如果是局域网,只需确保ROS_DOMAIN_ID一致即可。 例如设置ID为5:export ROS_DOMAIN_ID=5。 所有网络中设置一致,即可通信。() PC1: PC1开启...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,441
精华内容 976
关键字:

ros和windows通信