【ROS基础】多机器人通信(1) |
您所在的位置:网站首页 › gi高低 › 【ROS基础】多机器人通信(1) |
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉 📢:内容若有错误,敬请留言 📝指正!原创文,转载注明出处 文章目录 引言一、绑定ip和主机名1.1获取ip地址和主机名1.2绑定过程中的报错1.3进行绑定1.4重启网络 二、下载包和解决报错2.1输入以下命令进行下载2.2安装出现报错2.3查看ssh是否启动 三、开始通信并检测3.1检测通信3.2设置ROS_MASTER_URI 四、多机器人通信测试4.1用小乌龟历程进行测试4.2注意事项 续篇References 引言ROS是一个分布式的计算环境,一个正在运行的ROS可以在多个机器人之间分布成几十甚至上百个节点,取决于系统的配置方式,任何节点可能需要随时与任何其他节点进行通信,为实现使用同一个master控制多台机器人上的ROS节点,多台机器之间实现通信需要满足以下几点网络配置要求: 1、机器之间的所有端口都能实现双向连接; 2、每台机器都必须向其他机器广播其能够解析的名字; 3、所有节点都必须通过配置 ROS_MASTER_URI连接到同一个master。 根据以上的三点要求进行如下设置,也算是对所学的知识进行总结。记录一下在实现两个ROS操作系统之间的通信,一台是Ubuntu18.04-- melodic版的ROS操作系统,另一台是Ubuntu16.04–kinetic版 以下操作需在系统联网的情况下进行: 一、绑定ip和主机名首先要求主从机连接同一个局域网,然后分别打开自己终端获得IP地址和主机名。 1.1获取ip地址和主机名终端输入ifconfig查看IP地址;输入hostname查看主机名。 ifconfig
未安装vim导致找不到该命令,输入以下命令安装即可。 sudo apt-get install vim修改hosts文件的目的是将两电脑的ip和主机名绑定,两台电脑之间通过hostname就能找到对方。没有这一步的时候,你直接去ping 对方主机名时,结果是无法解析对方主机名。 分别再两台电脑的hosts文件中,从第三行开始插入刚刚查到的对方电脑的ip地址和主机名hostname,注意中间用按tap隔开。 进入hosts文件的命令: vim /etc/hosts或是 sudo gedit /etc/hosts后面就要执行vim相关命令输入ip地址和主机名hostname,然后保存退出。 两台电脑都要下载以下两个包。 第一个是下载同步包;第二个是下载ssh服务器。 sudo apt-get install chrony sudo apt-get install openssh-server
在两台电脑的终端输入以下命令检查是否启动启动了ssh ps -e|grep ssh看到sshd那说明ssh-server已经启动了,没启动就输入下面命令进行重启。 sudo /etc/init.d/ssh restart 三、开始通信并检测 3.1检测通信设置完成后,在两台电脑上分别使用ping命令测试网络是否联通。 其中ping是用来检测本机与网络中另一主机之间网络是否联通的命令,如果两台主机之间ping不通,则表明这两台主机不能建立起连接。 ping 172.21.144.200 ping 192.168.232.130出现如下说明网络通了。
当然,如果碰到输入ping hostname而一直无法相应时,说明没有ping通,检查一下该hostname对应的ip地址是否变动了。 3.2设置ROS_MASTER_URI1.从机上设置 在两台电脑中选择其中一台作为主机器人,并设置一个ROS master,从机器人上需要对该Master进行定义才能找到它的位置。因此在从机上使用如下命令设置ROS_MASTER_URI。 export ROS_MASTER_URI=http://zjc-virtual-machine:11311本次以台式机作为主机。为了实现所有终端都能识别Master的位置,最好使用如下命令在配置文件中添加环境变量。配置文件位于主文件的下,名为“.bashrc”打开该文件,在最后输入以下两行环境变量。 export ROS_HOSTNAME=spark #从机IP或名称 export ROS_MASTER_URI=http://zjc-virtual-machine:11311 #主机ip或名称2.主机上设置 export ROS_HOSTNAME=zjc-virtual-machine #主机IP或名称 export ROS_MASTER_URI=http://zjc-virtual-machine:11311 #主机ip或名称 四、多机器人通信测试 4.1用小乌龟历程进行测试上面的步骤都设置完成后,下面使用小乌龟历程进行测试。 首先在主机上运行小乌龟的仿真器。 roscore rosrun turtlesim turtlesim_nod然后在从机上使用“rostopic list”命令查看ROS系统中的话题列表。 rostopic list从机上打开小乌龟键盘控制节点,然后控制小乌龟运动。 rosrun turtlesim turtle_teleop_key 4.2注意事项注意:机器人在重启后再连接局域网或是其他的热点,注意IP地址的变化,一旦改变就要修改hosts和./bashrc的IP地址,不改变就会出现下面的报错。输入roscore如果出现报错,可以尝试重新启动机器人然后再输入roscore。 ROS学习笔记-多机器人通信(2)-从机改回主机 ROS学习笔记-多机器人通信(3)报错(ssh: connect to host hostname port 22: No route to host)解决后远程访问终于实现。 ROS学习笔记-多机器人通信(4)-远程打开rviz ROS学习笔记-多机器人通信(5)-快速实现台式机和Spark机器人之间的通信 References感谢以下参考博客的分享。 1.ROS多机器人通信 2.Ubuntu中Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend)问题的解决 3.Ubuntu中E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? 4.ROS 教程之 network:多台计算机之间网络通信(1) 5.Ubuntu下vim快捷命令 6.ssh用法及命令 7.ROS远程控制(PC机+TX2进行ROS远程通讯) 8.Ubuntu环境下SSH的安装及使用 9.ROS在多机器人上的使用 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |