Sawyer机器人实际操作流程

Sawyer机器人实际操作流程(http://t.csdnimg.cn/nzEA3)

  • 恢复出厂设置

如果Intera无法正常启动,则可以使用恢复出厂设置来重置机器人的操作系统

先决条件:USB键盘,Intera 5.1 或更高版本

步骤

  • 关闭机器人电源(底下的控制箱处按钮)
  • 插入USB 键盘。在Sawyer上,USB 端口位于控制器盒的前面板(右边有三个usb的位置处)
  • 机器人启动时,按键盘上的Shift + R。如果冒号后面有多余的文本,请按退格键将其删除
  • Tab或箭头键并导航到恢复出厂设置
  • Enter键。机器人将开始恢复过程
  • 恢复过程完成后,机器人将自行重启
  • 从机器人上拔下USB 键盘

(实际运行)

首先启动机器人,启动机器人之后,过了一会出现如下界面

Invalid configuration information -please run SETUP program. 无效配置信息-请运行SETUP程序。

Time-of-day not set -please run SETUP program。 日期不设置-请运行SETUP程序。

To continue press F1 key继续按F1键(一般按这个)

To change setup opt ion press F2 key改变设置按F2键

To run onboard diagnost ics press Fs keu要运行星载诊断仪,请按Fs keu

先按F1,然后迅速的按shift+R,

如果没有立刻按shift+R的话,界面上就会出现Booting Intera in 3 seconds,然后数字变小,变为0之后,他就一直黑屏啦!意味着你恢复出厂设置失败,此时需要重新开启机器人,再重复上面的步骤。

按完shift+R如果成功的话会进入下面的界面,此时选择Factory Reset即可。

之后机器人就进入了恢复状态,此时界面上会出现如下字样,等待即可

结束之后他会自动进入以下界面,然后就要设置SDK了,详细步骤请继续往下看

补充:在恢复出厂设置的过程中,可能会进入一个界面,让你任意按键盘上的一个键,你就随便按一个就可以跳过了,可能是没成功那一步会有这个界面,反正我成功的那次这个界面没出现。

将 Sawyer 升级到 Intera SDK

先决条件:USB键盘,包含更新.pkg和 .sig 文件的Intera Updater zip 文件,已解压缩

FAT 32 格式化的 USB,带有 Intera Updater .pkg 和 .sig 保存在顶层

Sawyer机器人运行 SDK 3.3.7。

安装步骤

请按照以下步骤将机器人升级到 Intera 5.1.0。

  • 首先,在“关于”屏幕上验证Sawyer 当前是否正在运行 Intera 3.3.7

<span style=”color:#6d6d6d”><span style=”background-color:#ffffff”>中间没空格

<span style=”color:#7c706b”><span style=”color:#7c706b”>Note: If the robot is running Intera 3.3.6 or earlier, please contact Rethink Support. Your robot cannot be upgraded to the SDK unless it is running version 3.3.7.</span></span></span></span>

1.请在Rethink Forum网站上注册并下载最新的Intera软件。

2.按照下载的软件文件夹中的“自读我”文档中的步骤正确格式化软件并将其上传到您的 USB。

3.在机器人上,导航到主屏幕>设置>高级>更新软件。

4.插入包含软件升级的 USB 设备,然后等待机器人识别设备。

5.选择要安装的软件版本。

6.在确认对话框中选择“是”继续”。软件加载时会出现一个状态屏幕。

7.软件安装完成后,机器人将自动重新启动进入Intera 5 Manufacturing。

将机器人从 Intera MFG 切换到 SDK 模式

步骤

1.将USB键盘连接到机器人控制器。

2.按下控制器上的电源按钮关闭机器人。

机器人完全断电后(风扇停止,屏幕背光熄灭),等待 5 秒钟,然后再次按下电源按钮重新启动机器人。

3.在键盘上,开始连续按CTRL+F,直到机器人屏幕上出现 FSM 菜单。

提示:重新启动时请查找下面的屏幕。当文本Preparing to boot Intera… 出现在屏幕左上角,按 CTRL+F’ 将带您直接进入FSM。

成功后,将出现 FSM 的主菜单,请参阅下面的屏幕以供参考。

4.进入FSM后,使用键盘上的箭头键选择“Next Boot in”,然后enter,选择SDK

5.将出现一个提示,要求用户阅读一般免责声明。通读免责声明后,按 Tab 选择“是”。

  1. 移动到并选择“重新启动”Rebot。机器人将关闭并直接启动到 Intera-SDK。

但是在进入SDK之前需要设置一下机器人的IP

首先移动键盘上的箭头选择Configuration,会进入如下界面

此时Hostname设置为sawyer(注意不是设置成sawyer.local)

系统默认的hostname是一串数字,你不改把他记住也行,不过就是在ping的时候不太方便

将DNS改成127.0.0.53(这个数字是你通过代码查出来的,具体怎么查后面的内容里有解释)

NTP Servers是系统默认的,不用更改

ROS Naming Type选择ROS_HOSTNAME.local

Timezone 选择Asia shanghai

选择Save

修改的是outside Post(注意不是修改inside post,这个是专业人士干的活,咱们就别嚯嚯它了)

要勾选中enabled

点击enabled旁边的config 进入如下界面

IP type选static ip

IP Address IP地址192.168.43.224(这是自己设的sawyer的ip地址)(我为什么设置成这个是因为我查出来双系统的ip是192.168.43.223,因为sawyer的地址要设置的与ubuntu的不同,所以最后一位的数字只要随便更改一下就可以了)

IP Netmask子网掩码 255.255.255.0(和ubuntu的一样)

IP Gat eway 网关192.168.43.1(和ubuntu的一样)

选择Back,而不是Revert changes(这个是将现在设置的全部变成空白)

保存后会出现如下界面,点击OK即可

此时又会进入如下界面

移动键盘的箭头,选择Reboot重启机器人,重启后之前的设置才能生效,之后就等待即可,结束后机器人就会进入SDK界面,就可以用ros控制机器人了(注意此时进入“沮丧”表情界面后不要按ctrl+F,否则又会进入菜单模式,不会进入SDK界面)

成功后界面如下

联网

实际操作

ping sawyer.local(你给机器人设置的名字+“ .local”)

(但是在机器人设置的时候上面只要写sawyer就行)

ping 192.168.43.244(你给机器人设置的ip)

记得修改有线网络的设置

IPV4里填一下IP,子网掩码和网关(手动)

DNS改成127.0.0.53(手动)(选为自动也行)

注意:intera.sh文件中需要修改robot_hostname,我改成了sawyer.local

Your_ip=”192.168.43.223”

Ros_version=”noetic”

补充:如果你在机器人上面的ip设置错了,设置成和ubuntu一样的了

其实在ubuntu端口手动改一下有线网络的ip即可

此时ping 192.168.43.233也是可以成功的,但是ping sawyer.local就失败了

Sawyer研究机器人使用ROS与用户的开发工作站进行通信。这需要在Sawyer和工作站之间建立以太网网络,并具有完全的双向连接

确认 Sawyer 在机器人上以 SDK 模式运行

为了与机器人联网,请确保机器人处于 SDK 模式。您可以通过启动机器人并在屏幕上看到此图像来确认这一点:

知识补充:网络地址分配(自动和手动)

Sawyer 支持以下网络配置的 IPV4 寻址

自动地址分配(“自动”模式)

如果网络中存在DHCP服务器,则DHCP服务器会自动为机器人分配网络地址,并且可能会(也可能不会)为主机名解析分配DNS服务器

如果没有DHCP服务器,机器人将使用Autoip协议在169.254.0.0/16地址块中为自己分配一个链路本地地址。

【此模式下的所有分配都是自动的,不能手动配置任何选项。】

手动分配地址

从 Field Service 菜单手动分配地址(“手动”模式)

用户必须为机器人指定有效的 IPV4 地址,并可以选择指定网络掩码、默认网关地址和 DNS 服务器地址。所有网络选项都是手动配置的。

主机名解析(Sawyer 主机名可以使用现场服务菜单 (FSM) 进行配置,如果您不喜欢出厂时提供的与其序列号相匹配的主机名。)

所有寻址模式下,Sawyer使用Avahi mDNS服务将机器人主机名作为“<robot name>.local”提供链路本地广告。与机器人位于同一子网中且支持 mDNS 的计算机始终可以将机器人的主机名解析为“<robot name>.local”,即使不存在其他主机名解析服务也是如此。Sawyer还可以使用主机名与这些计算机进行通信。ping sawyer

“自动”寻址模式下,只有当网络的 DHCP 服务器提供 DNS 服务器地址时,Sawyer 才能解析外部主机名。如果 DHCP 服务器未提供 DNS 服务器地址,则 Sawyer将只能通过其 IP地址与外部计算机进行通信。

“手动”寻址模式下,仅当用户指定 DNS 服务器地址(如果涉及不同子网中的计算机,则指定默认网关地址)时,Sawyer才能解析外部主机名。如果用户未提供 DNS 服务器地址,则 Sawyer 将只能通过其 IP 地址与计算机进行通信。如果用户未提供默认网关地址,则 Sawyer 将只能与同一子网中的计算机进行通信。

ROS 命名约定

Intera机器人支持3种ROS命名约定。这些控制ROS Master如何发布机器人发布的各个节点的访问信息。无论您如何连接到机器人,如果您希望能够与机器人交互,您都需要能够通过其 ROS 命名约定配置的地址访问它。(即,如果您可以通过机器人的 IP 访问机器人,但它配置了ROS_HOSTNAME约定,并且您无法通过其主机名访问它,那么您将无法使用机器人进行有意义的工作)

ROS_HOSTNAME.local:这会在 <robot hostname>.local 上发布节点

这是最不通用但最稳定的配置,建议在可用时使用。

此约定仅适用于本地设置,其中机器人和开发计算机位于同一子网上,但几乎始终在该网络配置中工作。只有在以下情况下才会中断:在本地网络上引入命名冲突或您可以手动更改机器人的主机名。

ROS_IP:这将发布与机器人关联的 IP4 地址的节点

这是最通用的命名约定,但也是最脆弱的。

它可以在您连接到机器人的任何网络配置中工作,但如果机器人的 IP 发生变化,它将中断

ROS_HOSTNAME:这将在机器人的主机名处发布节点。

这种配置具有中等的通用性和稳定性。

只有当您的网络上运行一个有效的 DNS 并指向机器人时,它才有效。

只有在以下情况下才会中断:在网络中引入命名冲突或更改了机器人的 DNS 解析主机名,(这可以由服务器管理员完成,但不太可能发生)

     

通过路由器进行网络配置

Sawyer 可以设置为使用 ROS_IP 或 ROS_HOSTNAME.local:

ROS_HOSTNAME.local 是我们在此设置中为机器人推荐的 ROS 命名协议。它在这种网络配置中非常稳定,只有在您从机器人切换到单独的子网时才需要调整。

如果您可以 ping <robot hostname>.local,则网络工作正常eg. ping sawyer

ROS_IP是最可靠的命名方法,如果你知道机器人会保留它的知识产权。此命名协议适用于所有网络配置,只要您有可靠的机器人路由即可。

如果您可以ping<机器人ip>则网络工作正常。

注意:如果您对使用此命名约定感兴趣,则可以将机器人设置为使用静态 IP,因为您不确定未来的网络配置。

在此网络配置中,您需要将 intera.sh 脚本指向以下任一位置:

ROS_IP = “<开发计算机的 IPV4 地址>”

通过尝试 ping <开发计算机的 IPV4 地址>来验证连接

ROS_HOSTNAME = “<开发计算机的主机名>.local”

验证尝试 ping <开发计算机的主机名>.local 的连接

直接连接到企业或大学网络

在此网络配置中,您可以使用 ROS_IP ROS_HOSTNAME ROS 命名约定

在此设置中,我们建议使用 ROS_HOSTNAME 约定。这将取决于您的DNS以及没有其他人注册您的主机名的副本(因此请选择一个唯一的主机名),但在此网络配置中将非常稳定。

如果您可以 ping <robot hostname>则网络正常工作。

如果您可以 ping <机器人 IP>则网络正常工作

直接网络配置(用这个)

在此设置中,您需要将机器人设置为使用“自动”寻址,并且可以在ROS_IPROS_HOSTNAME.local 之间进行选择,以符合您的 ROS 命名约定。

ROS_HOSTNAME.local 如果您可以 ping <robot hostname>.local,则网络工作正常

ROS_IP,如果您可以ping<机器人ip>则网络工作正常。

配置步骤

  • 关闭Sawyer并断开以太网电缆。

②使用5类以太网电缆将笔记本电脑/工作站连接到Sawyer。

③给索Sawyer通电。

  • 如有必要,请禁用笔记本电脑上的防火墙: $ sudo ufw disable(在windows端还是ubuntu端?)
  • 关闭 Ubuntu Network-Manager 以防止干扰:

补充:在Ubuntu上启用和禁用NetworkManager

NetworkManager是一项后端服务,用于控制Ubuntu操作系统上的网络接口。NetworkManager的替代方法是systemd-networked。在Ubuntu桌面上,网络管理器是通过图形用户界面管理网络界面的默认服务。因此,如果要通过GUI配置IP地址,则应启用网络管理器。

Ubuntu网络管理器的替代方法是systemd-networkd,这是Ubuntu服务器18.04中的默认后端服务。

因此,如果要禁用NetworkManager,则应启用网络服务,而在网络管理器运行时最好禁用网络服务。

禁用网络管理器并启用systemd-networkd

首先,运行以下命令以禁用NetworkManager:

sudo systemctl stop NetworkManager

sudo systemctl disable NetworkManager

sudo systemctl mask NetworkManager

接下来,启动并启用systemd-networkd:

sudo systemctl unmask systemd-networkd.service

sudo systemctl enable systemd-networkd.service

sudo systemctl start systemd-networkd.service

将接口配置添加到netplan配置文件(在/etc/netplan目录中):

network:

  version: 2

  renderer: networkd

  ethernets:

    enp0s3:

      dhcp4: yes

通过运行以下命令来应用更改:

sudo netplan apply

在前面的示例中,我们将enp0s3接口配置为从DHCP服务器租用IP地址。

启用NetworkManager并禁用systemd-networkd

可以通过以下步骤启动和启用Ubuntu Network Manager(在Ubuntu服务器中不建议这样做)。

①首先,停止系统联网服务:

sudo systemctl disable systemd-networkd.service

sudo systemctl mask systemd-networkd.service

sudo systemctl stop systemd-networkd.service

②在Ubuntu上安装NetworkManager:

sudo apt-get install network-manager

③打开/etc/netplan目录中的.yaml配置文件,并用以下内容替换现有配置:

network:

  version: 2

  renderer: NetworkManager

④使用netplan命令为NetworkManager生成特定于后端的配置文件:

sudo netplan generate

⑤启动NetworkManager服务:

sudo systemctl unmask NetworkManager

sudo systemctl enable NetworkManager

sudo systemctl start NetworkManager

现在启用了NetworkManager,可以使用nmcli命令通过GUI或从命令行完成接口配置。

尽管可以通过网络管理器在Ubuntu服务器上管理网络,但是它已被Netplan取代。因此,建议在Ubuntu Server 18.04及更高版本上使用systemd-networkd。

补充:ubuntu中启用关闭Network-manager网络设置问题

(http://t.csdnimg.cn/BkudW)

【Server版本】

在UbuntuServer版本中,因为只存有命令行模式,所以要想进行网络参数设置,只能通过修改/etc/network/interfaces。具体设置方法如下:

(1) UbuntuServer 修改 IP地址

打开/etc/network/interfaces

sudo vim/etc/network/interfaces

加入以下语句:

auto eth0

iface eth0inet static

addressxxx.xxx.xxx.xxx #IP地址

netmaskxxx.xxx.xxx.xxx #子网掩码

gatewayxxx.xxx.xxx.xxx #网关

(2) UbuntuServer 修改 DNS

打开/etc/resolv.conf

sudo vim/etc/resolv.conf

改为如下内容:

searchlocaldomain #如果本Server为DNS服务器,可以加上这一句,如果不是,可以不加

nameserver172.16.3.4 #希望修改成的DNS

nameserver172.16.3.3 #希望修改成的DNS

(3) UbuntuServer 最后一步,也是最重要的一步

  在rc.local里加入这个重启网络配置的命令:

sudo/etc/init.d/networking restart

【Desktop版本】

在Desktop版本中,除了可以修改/etc/network/interfaces来进行配置以外;还可以直接在network-manager中配置。通过interfaces修改的方法参照Server版本。network-manager的配置和直观,按照提示一步一步操作即可,有兴趣的朋友,可以自行Google或者Baidu。

但如果修改了interfaces,又配置了network-manager(以下简称nm),你就会发现出现了一些莫名其妙的问题:

1,interfaces和 nm中的网络设置不一样,系统实际的IP是哪个?

2,有时候莫名其妙的,界面右上角的网络连接图标就丢失了。

3,明明在nm中配置了正确的网络设置,为什么就上不了网呢?

首先,当系统内没有第三方网络管理工具(比如nm)时,系统默认使用interfaces文件内的参数进行网络配置。(就像Server版本一样)

接着,当系统内安装了 nm之后,nm默认接管了系统的网络配置,使用nm 自己的网络配置参数来进行配置。

但是,如果用户在安装nm之后(Desktop版本默认安装了nm),自己手动修改了interfaces 文件,那nm 就自动停止对系统网络的管理,系统改使用interfaces 文件内的参数进行网络配置。

此时,再去修改nm 内的参数,不影响系统实际的网络配置。若要让nm 内的配置生效,必须重新启用nm 管系统的网络配置。

现在知道了两者之间的工作关系,再看上面的三个问题:

1,要看nm是否接管,如果没有接管,系统实际的IP设置以interfaces 中的为准。反之,以nm 中的为准。

2,当nm 停止接管的时候,网络连接图标就丢失了。

3,同样是接管的问题。

如果用户希望在Desktop版本中,直接使用interfaces 进行网络配置,那最好删除network-manager 。

如果在出现上述问题之后,希望能继续使用nm来进行网络配置,则需要进行如下操作:

sudo servicenetwork-manager stop # 停止 nm服务

sudo rm/var/lib/NetworkManager/NetworkManager.state # 移除nm 的状态文件

sudo gedit/etc/NetworkManager/nm-system-settings.conf # 打开nm 的配置文件

##里面有一行:managed=true

## 如果你手工改过/etc/network/interfaces,nm会自己把这行改成:managed=false

## 将false 修改成true

sudo servicenetwork-manager start

Debian/Ubuntu的Network-Manager

  debian/ubuntu管理网络连接的有两个东西,图形化的NetworkManager和文字的ifup/ifdown,如果在/etc/network/interfaces里设置了网卡信息,那么NetworkManager就不会接管该网卡,如果没有设置NetworkManager默认是会接管网卡的。

  NetworkManager最方便的地方是个人电脑用无线连网的时候,因为文字界面的 iwlist wlan0 scan 并不是非常好用,而NetworkManger可以像windows那样列出所有可用的wifi热点,如果有中文乱码的,也一样可以连接,但如果你的机子是用来做服务器的,或者是在办公室里使用,有固定的路由环境,一般来说,也会有固定的ip,因为这样可以方便内网共享资源。总之不是个人用的,而且不用移来移去的话,最好是关掉这个NetworkManager,当然如果你经常带着本子跑,想去咖啡馆蹭网的话,就一定要打开这个NetworkManager,自动搜索无线非常方便了。

    下面来说说这两种情况:

    1,使用NetworkManger来联网,这个时候,如果使用了无线连接路由,而在/etc/network/interfaces里配置了有线连接的eth0的话,就会发生一个超级诡异的问题:可以访问外网,但不能访问内网,比如无线路由ip 192.168.0.1,ping该地址,会显示有线网卡的ip地址无法ping通,而不是无线!证明在设置了有线eth0的时候,会优先采用,但奇怪的是,外网连接正常,所有我怀疑这可能是debian的一个bug。所以当使用 NetworkManager的时候,可以注释掉所有/etc/network/interfaces 里的内容,仅仅保留本地回环网络:

        auto lo

        iface lo inet loopback

    这两句。设置固定ip,可以在NetworkManager图形界面里配置。

    2,关闭NetworkManager,关闭命令:sudo /etc/init.d/network-manager stop 取消开机启动:chkconfig network-manager off 重启网络:/etc/init.d/networking restart

    修改 /etc/network/interfaces 文件,

    系统配置部分:本地回环网络。

        auto lo

        iface lo inet loopback

    有线配置部分:

        auto eth0

        #iface eth0 inet dhcp # 如果你不想用固定ip的话,推荐用固定ip,这样可以省去请求路由分配的时间

        iface eth0 inet static

        netmask 255.255.255.0

        gateway 192.168.0.1      #gateway 0.0.0.0 # 拨号上网请把 gateway全部设置为0

        address 192.168.0.112

    无线配置部分:

        auto wlan0

        iface wlan0 inet static

        netmask 255.255.255.0

        gateway 192.168.0.1

        address 192.168.0.113

        pre-up ip link set wlan0 up

        pre-up iwconfig wlan0 essid ssid

        wpa-ssid TP-Link # 这里的ssid为路由里设置的无线名称

        wpa-psk 12345678 # 无线密码

    adsl拨号上网:

        auto dsl-provider

        iface dsl-provider inet ppp # dsl-provider 为之前配置好的拨号名称

        provider dsl-provider

补充结束

⑥转到桌面右上角的网络图标下拉菜单。(Ubuntu界面吗)

确保未选中“启用网络”(如果选中,请选择菜单中的选项以禁用)

  • 通过 ifconfig 查找您的以太网设备  

$ ifconfig -a

    enx8ca Link encap:Ethernet

    …

    …

    lo     Link encap:Local Loopback

    …

    …

    wlp2s0    Link encap:Ethernet

忽略任何环回或“wlp”无线设备。在 Ubuntu 14.04 及更早版本上,这通常默认为“eth0”。在 16.04 及更高版本中,这些设备的名称通常以“en”开头,后跟一堆字母和数字。例如,我的 USB 以太网加密狗显示为“enx8ca”,但您的加密狗可能会有所不同(或只是“eth0”)。

在以下步骤中,将“enx8ca”替换为您的以太网设备。

①检查 enx8ca 的状态:$ ifconfig enx8ca

②您不应在“inet”下看到任何 IP 地址。

使用 Avahi将 IP 地址指定为“enx8ca”(运行avahi-autoipd 后不要关闭终端)

$ sudo avahi-autoipd enx8ca

③确保已成功声明 IP 地址。

例如:

Found user ‘avahi-autoipd’ (UID 104) and group ‘avahi-autoipd’ (GID 111).

Successfully called chroot().

Successfully dropped root privileges.

Starting with address 169.254.8.16

Callout BIND, address 169.254.8.16 on interface enx8ca

Successfully claimed IP address 169.254.8.16

使此终端在后台运行,打开新终端以继续。

④通过运行avahi-browse查找机器人的本地主机名:

$ avahi-browse -a -r

<span style=”color:#6d6d6d”><span style=”background-color:#ffffff”>Note: The default local hostname of the robot is the Serial Number followed by “.local”. Ex: “011303P0017.local”</span></span>

故障 排除

ROS对网络配置有一定的要求:在所有端口上,所有计算机对之间必须有完整的双向连接

每台计算机都必须使用所有其他计算机都可以解析的名称来播发自身。

我们假设您希望在两台机器上运行ROS系统,主机名和 IP 地址如下:

marvin.example.com :192.168.1.1

hal.example.com :192.168.1.2

在多台机器上部署ROS系统很容易。请记住以下几点:

1.您只需要一个主控。选择一台要运行它的计算机。

2.所有节点必须通过 ROS_MASTER_URI 配置为使用相同的主节点

3.所有端口上的所有机器之间必须有完整的双向连接(参见ROS/NetworkSetup)。

4.每台计算机都必须使用所有其他计算机都可以解析的名称来通告自己(请参阅 ROS/NetworkSetup)

要登录 marvin和hal   ssh marvin   ssh hal
启动主服务器(选择hal)  ssh hal    roscore
在hal上启动侦听器,配置ROS_MASTER_URI以便我们使用刚刚启动的 master
ssh hal
export ROS_MASTER_URI=http://hal:11311
rosrun rospy_tutorials listener.py
在marvin上启动说话者,同时配置ROS_MASTER_URI以便使用 hal 上的 master:
ssh marvin
export ROS_MASTER_URI=http://hal:11311
rosrun rospy_tutorials talker.py
(瞧:您现在应该看到 hal 上的侦听器正在接收来自 marvin 上的说话者的消息。)
请注意,说话者/听众启动的顺序无关紧要;节点可以按任意顺序启动。唯一的要求是在启动任何节点之前启动主节点。
变化:向另一个方向连接:让主人在hal上运行,杀死说话者和听众,然后把他们带到对面的机器上。
首先是 marvin 的听众:
ssh marvin
export ROS_MASTER_URI=http://hal:11311
rosrun rospy_tutorials listener.py
现在是 hal 的谈话者:
ssh hal
export ROS_MASTER_URI=http://hal:11311
rosrun rospy_tutorials talker.py
(一个常见的陷阱是计算机上缺少ROS_IP定义,talker.py 正在运行。)
检查一下: echo $ROS_IP

1.完全连接

首先,hal 和 marvin 需要在所有端口上实现完全的双向连接。

1.1基本检查 ①自 ping,尝试从自身ping每台机器,即从 hal ping hal:

ssh hal

ping hal

 问题:无法 ping hal:这意味着 hal 配置不正确。

  • 在机器之间执行 ping 操作,来自 hal 的Ping marvin:

ssh hal

ping marvin

您应该看到如下内容:

PING marvin.example.com (192.168.1.1): 56 data bytes

64 bytes from 192.168.1.1: icmp_seq=0 ttl=63 time=1.868 ms

64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=2.677 ms

64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=1.659 ms

还可以尝试从 marvin 中 ping hal:

ssh marvin

ping hal

 问题:无法相互ping通。这意味着您的计算机无法相互看到。

如果您启动机器人并且它正在运行 Intera,请按照以下说明更新机器人。?

1.2进一步检查:netcat

ping 仅检查 ICMP 数据包是否可以在计算机之间传输,这还不够。您需要确保可以通过所有端口进行通信。这很难完全检查,因为您必须迭代大约65K个端口。

您可以使用netcat尝试通过任意选择的端口进行通信,而不是进行完整的检查。请务必选择大于1024的端口;低于1024的端口需要超级用户权限。请注意,netcat 可执行文件在某些发行版上可能被命名为 nc。

①首先尝试从 hal 到 marvin 进行交流。在 marvin 上启动 netcat 监听:

ssh marvin

netcat -l 1234      1234是啥

②然后从 hal 连接:

ssh hal

netcat marvin 1234

如果连接成功,您将能够在两个控制台之间来回键入,就像老式的聊天程序一样。

③现在换个方向试试。在 hal 上启动 netcat 监听:

ssh hal

netcat -l 1234

④然后从 marvin 连接:

ssh marvin

netcat hal 1234

2.1显式设置名称

如果一台计算机报告的主机名无法被其他计算机寻址,则需要设置 ROS_IP 或 ROS_HOSTNAME 环境变量

2.1.1例

继续以 marvin 和 hal 为例,假设我们想引入第三台机器。名为 artoo 的新机器使用 DHCP 地址,比如10.0.0.1,而其他机器无法将主机名artoo解析为 IP 地址(这不应该发生在正确配置的 DHCP 管理网络上,但这是一个常见问题)。在这种情况下,marvin和hal 都无法按名称ping artoo,因此它们将无法联系标榜自己在 artoo 上运行的节点。解决方法是在artoo上启动节点之前在环境中设置ROS_IP:

ssh 10.0.0.1 # We can’t ssh to artoo by name

export ROS_IP=10.0.0.1 # Correct the fact that artoo’s address can’t be resolved

<start a node here>

如果计算机的名称是可解析的,但计算机不知道自己的名称,则可能会出现类似的问题。假设 artoo 可以正确解析为 10.0.0.1,但在 artoo 上运行 hostname 会返回 localhost。然后你应该设置ROS_HOSTNAME:

ssh artoo # We can ssh to artoo by name

export ROS_HOSTNAME=10.0.0.1 # Correct the fact that artoo doesn’t know its name

<start a node here>

2.2单机配置

如果您只想在本地机器上运行测试(例如运行ROS教程),请设置以下环境变量:

$ export ROS_HOSTNAME=localhost

$ export ROS_MASTER_URI=http://localhost:11311

然后 roscore 应该正确初始化。

2.3配置 /etc/hosts

另一种选择是将条目添加到 /etc/hosts 文件中,以便计算机可以相互查找。hosts文件告诉每台计算机如何将特定名称转换为 IP 地址。

2.4使用 machinename.local

设置ROS_HOSTNAME的另一种方法是使用 .local 域

$ export ROS_HOSTNAME=ubuntu.local

$ export ROS_MASTER_URI=http://ubuntu.local:11311

当您的网络上有一个名为“ubuntu”的 Ubuntu系统时,这很有用,可以通过地址“ubuntu.local”访问它。为此,Avahi 会自动接管所有以“.local”结尾的 DNS请求,并阻止它们正常解析

有时,系统无法解析为 .local 域。当您遇到此类问题时,除了遵循上述诊断外,还要检查您的 avahi 服务是否正在运行。

$  systemctl is-active avahi-daemon.service

如果需要,您可以按如下方式重新启动 avahi 服务:

$  systemctl restart avahi-daemon.service

防火墙

如果要与 ROS 一起使用的一对计算机之间存在防火墙或其他障碍物,则需要创建一个虚拟网络来连接它们。我们推荐openvpn。

调试网络问题

试试 roswtf 和 rqt_graph。

工作站设置(这个有点太复杂了,具体设置可看我的另一篇博客)

设置 sources.list

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list'</code></span></span>

设置密钥

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ sudo apt install curl # if you haven’t already installed curl

$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -</code></span></span>

更新到最新的软件列表

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ sudo apt-get update</code></span></span>

安装 ROS Noetic Desktop Full

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ sudo apt-get install ros-noetic-desktop-full</code></span></span>

用于构建包的依赖项

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential</code></span></span>

初始化 rosdep

rosdep 使您能够轻松地为要编译的源代码安装系统依赖,并在 ROS 中运行一些核心组件所必需。

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ sudo rosdep init

$ rosdep update</code></span></span>

创建开发工作区

创建ROS工作空间

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ mkdir -p ~/ros_ws/src

# ros_ws (short for ROS Workspace)</code></span></span>

源ROS设置

而不是“XXX”,在相应的 ROS 版本中输入(例如 noetic 或 melodic)

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ source /opt/ros/XXX/setup.bash</code></span></span>

ROS Melodic 示例:

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ source /opt/ros/melodic/setup.bash</code></span></span>

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ cd ~/ros_ws

$ catkin_make</code></span></span>

安装 Intera SDK 依赖项

ROS Noetic (Ubuntu 20.04)

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-html”>$ sudo apt-get update

$ sudo apt-get install git-core python3-wstool python3-vcstools python3-rosdep ros-noetic-control-msgs ros-noetic-joystick-drivers ros-noetic-xacro ros-noetic-tf2-ros ros-noetic-rviz ros-noetic-cv-bridge ros-noetic-actionlib ros-noetic-actionlib-msgs ros-noetic-dynamic-reconfigure ros-noetic-trajectory-msgs ros-noetic-rospy-message-converter

$ pip install argparse</code></span></span>

安装Intera Robot SDK

在工作站上下载 SDK

将所有必需的 Github 存储库签出到 ROS 工作区源目录中: 使用 git clone 或直接从 Github 下载包:

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ cd ~/ros_ws/src

$ wstool init .

$ git clone https://github.com/RethinkRobotics/sawyer_robot.git

$ wstool merge sawyer_robot/sawyer_robot.rosinstall

$ wstool update</code></span></span>

源ROS设置

而不是“XXX”,在相应的 ROS 版本中输入(例如 noetic 或 melodic)

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ source /opt/ros/XXX/setup.bash</code></span></span>

ROS Melodic 示例:

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ source /opt/ros/melodic/setup.bash</code></span></span>

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ cd ~/ros_ws

$ catkin_make</code></span></span>

配置机器人通信/ROS工作区

此步骤介绍 ROS 环境的配置和设置。本节假设您已通过以太网将工作站链接到机器人。

Intera.sh ROS环境设置

intera.sh 脚本是一个方便的脚本,可以直观地修改核心ROS环境组件。这个用户编辑的脚本将允许最快和最简单的 ROS 设置。

复制 intera.sh 脚本

intera.sh 文件已存在于 intera_sdk 存储库中,请将该文件复制到ros工作区中。

$ cp ~/ros_ws/src/intera_sdk/intera.sh ~/ros_ws

自定义 intera.sh 脚本

请编辑 intera.sh shell 脚本,进行必要的修改以描述您的开发电脑。

使用您喜欢的编辑器(例如使用 gedit)

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ cd ~/ros_ws

$ gedit intera.sh</code></span></span>

修改“robot_hostname”字段

机器人的主机名默认为控制器的序列号,而不是机器人的序列号。序列号可以位于机器人控制器盒的背面。除非您打算修改默认网络配置,否则请在 robot_hostname.local 字段中将控制器序列号末尾的“.local”后缀保留。

修改“your_ip”字段

修改“your_ip”是计算机的主机名或 PC 的 IP 地址。我们建议您不要在机器人和工作站之间使用 WiFi 连接。

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”> your_ip=”192.168.XXX.XXX”</code></span></span>

用于识别 IP 地址的有用命令

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ ifconfig

# Result will be contained in the ‘inet addr’ field (Ubuntu).</code></span></span>

或者,你可以选择使用开发电脑的主机名,而不是电脑的 IP 地址。

您可以编辑“your_hostname”字段(仅当不使用“your_ip”时):

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”> your_hostname=”my_computer.local</code></span></span>

重要提示:此主机名必须可解析为 Sawyer。

重要:仅设置 ROS_IP *OR* ROS_HOSTNAME任一。

同时设置ROS_IP和ROS_HOSTNAME将导致ROS_HOSTNAME优先,从而导致环境设置混乱。使用“#”作为前导字符注释掉未使用的方法。

保存并关闭脚本 intera.sh

初始化 SDK 环境

从现在开始,你的 ROS 环境设置应该很简单,就像从 Catkin 工作区的根目录中获取 intera.sh 脚本一样:

<span style=”color:#6d6d6d”><code class=”language-generic”>$ cd ~/ros_ws

$ ./intera.sh</code></span>

验证环境

查看和验证 ROS 环境设置的一个有用命令是:

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ env | grep ROS</code></span></span>

此时的重要字段:

ROS_MASTER_URI – 现在应该包含机器人的主机名。

ROS_IP – 这应该包含工作站的 IP 地址。

ROS_HOSTNAME – 如果不使用工作站的 IP 地址,则ROS_HOSTNAME字段应包含 PC 的主机名。否则,此字段不应可用。

尝试通过键入以下命令从机器人获取 rostopic 列表:

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ rostopic list</code></span></span>

您可以从命令行输出中看到类似于以下内容的 rostopic 列表:

设置 RVIZ

设置 Rviz 来查看机器人模型,使用以下方法从正确初始化的环境启动 Rviz:

<span style=”color:#6d6d6d”><span style=”color:#7c706b”><code class=”language-generic”>$ rosrun rviz rviz</code></span></span>

将固定框架(map?)设置为 /base

信息:“固定框架”为您的可视化提供静态的基本参考。任何进入rviz的传感器数据都将转换为该参考帧,以便它可以在虚拟世界中正确显示。

点击添加按钮将机器人模型添加到Rviz中,然后在列表中选择机器人模型,按OK添加

Ubuntu 查看IPhttp://t.csdnimg.cn/pi2cE

方式一:ifconfig -a

首先需要安装net-tools工具,命令:sudo apt install net-tools ,否则会报错:

地址Ip:192.168.206.128

子网掩码Netmask:255.255.255.0

网关Broadcast:192.168.206.255

双系统

地址Ip:192.168.43.223

子网掩码Netmask:255.255.255.0

网关Broadcast:192.168.43.255

方式二:ip addr

net 192.168.206.128/24 brd 192.168.206.255(一样的)

linux查看网关gateway(http://t.csdnimg.cn/ca071)

方法1、ifconfig

注意:Bcast就是broadcast

方法2、netstat -rn

方法3、ip route show

4、route -n

查出来网关Gateway是192.168.206.2

双系统 192.168.43.1

查看ubuntu DNS

查看DNS命令:nsloopup hcos(运行不了)

1. cat /etc/resolv.conf

得到

nameserver 114.114.114.114

我查出来域名nameserver是127.0.0.53

双系统也是这个

2. nslookup [host]

例:

$ nslookup www.baidu.com

Server: 114.114.114.114

Address: 114.114.114.114#53

Non-authoritative answer:

www.baidu.com canonical name = www.a.shifen.com.

Name: www.a.shifen.com

Address: 14.215.177.38

Name: www.a.shifen.com

Address: 14.215.177.39

域名是127.0.0.53

本机DNS服务器地址查询http://t.csdnimg.cn/pUNPy

方法一 1、点击电脑左下角的开始图标,然后点击“运行”,输入cmd命令,点击确定。

2、在打开的命令运行窗口中,在下面输入ipconfig /all ,之后按回车键

3、显示出本机的DNS服务器地址

方法2

1.在右下角的无线网络图标上,点击右键,点击“网络和Internet设置”;

2.在已经连接的网络,点击“属性”即可看到DNS服务器地址。

网络配置的四大基本要素: IP + Netmask + Gateway + DNS

http://t.csdnimg.cn/KkYmb

1.  IP

IP地址(英语:Internet Protocol Address)是一种在Internet上的给主机编址的方式,也称为网际协议地址。常见的IP地址,分为IPv4与IPv6两大类。

将IP地址分成了网络号和主机号两部分

Internet上的每台主机( Host)都有一个唯一的IP 地址。IP协议就是使用这个地址在主机之间传递信息,这是Internet 能够运行的基础。

IP地址的长度为32位(共有2^32个IP地址),分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。例如159.226.1.1。

IP地址 = 网络标识号码+主机标识号码。因此IP地址可分两部分组成,一部分为网络地址,另一部分为主机地址。

IP地址分为A、B、C、D、E5类,它们适用的类型分别为:大型网络;中型网络;小型网络;多目地址。常用的是B和C两类。

特殊的网址

1.  “lll0”开始的地址都叫多点广播地址。因此,任何第一个字节大于223小于240的IP地址(范围224.0.0.1-239.255.255.254)是多点广播地址;

2.  每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;

3.  IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;

4.  IP地址中凡是以“llll0”开头的 E类IP地址都保留用于将来和实验使用。

5.  IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试。

     如:127.0.0.1可以代表本机IP地址,用“http://127.0.0.1”就可以测试本机中配置的Web服务器。

6.  网络ID的第一个6位组也不能全置为“0”,全“0”表示本地网络。

公有地址

公有地址(Public address)由Inter NIC(Internet Network Information Center 因特网信息中心)负责。

这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问 因特网。

私有地址

私有地址(Private address)属于非注册地址,专门为组织机构内部使用。

以下列出留用的内部私有地址

A类 10.0.0.0–10.255.255.255

B类 172.16.0.0–172.31.255.255

C类 192.168.0.0–192.168.255.255

局域网中的IP

在一个 局域网中,有两个IP地址比较特殊,一个是网络号,一个是广播地址。

网络号是用于三层寻址的地址,它代表了整个网络本身;另一个是广播地址,它代表了网络全部的主机。

网络号是网段中的第一个地址,广播地址是网段中的最后一个地址,这两个地址是不能配置在计算机主机上的。

例如在192.168.0.0,255.255.255.0这样的网段中,网络号192.168.0.0,广播地址是192.168.0.255。因此,在一个局域网中,能配置在计算机中的地址比网段内的地址要少两个(网络号、广播地址),这些地址称之为主机地址。在上面的例子中,主机地址就只有192.168.0.1至192.168.0.254可以配置在计算机上了。

2. Netmask

用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

子网掩码的设定必须遵循一定的规则。

与二进制IP地址相同,子网掩码由1和0组成,且1和0分别连续。

子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。

这样做的目的是为了让掩码与ip地址做AND运算时用0遮住原主机数,而不改变原网络段数字,而且很容易通过0的位数确定子网的主机数(2的主机位数次方-2,因为主机号全为1时表示该网络广播地址,全为0时表示该网络的网络号,这是两个特殊地址)。

只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。

对于A类地址来说,默认的子网掩码是255.0.0.0;

对于B类地址来说默认的子网掩码是255. 255.0.0;

对于C类地址来说默认的子网掩码是255.255.255.0。

利用子网掩码可以把大的网络划分成子网即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。

3. Gateway

网关(Gateway)就是一个网络连接到另一个网络的“关口”。

一个用于 TCP/IP 协议的配置项,是一个可直接到达的 IP 路由器的 IP 地址。

赋予路由器 IP地址的名称,与本地网络连接的机器必须把向外的流量传递到此地址中以超出本地网络,从而使那个地址成为本地子网以外的IP地址的”网关”.

也就是最近常用的网关,当主 路由表目或网络输入不存在于本地主机的路由表时数据包发送到那里.

配置默 网关可以在IP路由表中创建一个默认路径。 一台主机可以有多个网关

默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。

现在主机使用的网关,一般指的是默认网关。

 一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。

默认网关的设定有手动设置和自动设置两种方式。

那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP 地址。比如有网络A和网络B,网络A的IP 地址范围为“192.168.1.1~192. 168.1.254”, 子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有 路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台 交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的 主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。所以说,只有设置好网关的IP 地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP 地址是哪台机器的IP 地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、 代理服务器(也相当于一台路由器)。

4. DNS

DNS 是 计算机域名系统(Domain Name System 或Domain Name Service) 的缩写,它是由 解析器以及域名服务器组成的。

域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。

DNS使用TCP与UDP端口号都是53,主要使用 UDP,服务器之间备份使用 TCP。

你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。

Internet上的计算机是通过IP地址来定位的,给出一个IP地址,就可以找到Internet上的某台主机。

而因为IP地址难于记忆,又发明了域名来代替 IP地址。

但通过域名并不能直接找到要访问的主机,中间要加一个从域名(可以理解为网址,如www.baidu.com) 查找IP地址的过程,这个过程就是域名解析

Linux网络配置http://t.csdnimg.cn/OLPgX这篇写的也很好

版权声明:本文为博主作者:hanbinbinbinnies原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/hanbinbinbinnies/article/details/136783293

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2024年4月16日
下一篇 2024年4月16日

相关推荐