您当前的位置: 首页 >  机器人
  • 3浏览

    0关注

    478博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ROS移植机器人小车:小车主机与从机电脑的通信

高精度计算机视觉 发布时间:2022-03-12 12:30:42 ,浏览量:3

这个主要涉及.bashrc文件及以下三个参数,

$ROS_MASTER_URI$ROS_HOSTNAME$ROS_IP

其中ROS_IP和ROS_HOSTNAME有什么不同呢?

ROS_IP/ROS_HOSTNAME ROS_IP和ROS_HOSTNAME是可选的环境变量,用来设置ROS节点或工具的公开网地址。这两个选项是互斥的,如果两者都设置优先使用ROS_HOSTNAME。如果你指定一个IP地址,使用ROS_IP;如果制定一个主机名(a host name),使用ROS_HOSTNAME。当一个ROS成员报告URI给master或者其他成员,这个值就会被用到。这个设置只用在一台计算机有多个地址,需要强制ROS到特定的一个的情况。 除了’localhost’(本地主机),ROS成员绑定到所有可用的网络接口,他不影响实际绑定地址。如果这个值设定为本地主机,ROS成员只绑定在环回接口。这将会阻止远程成员与本地成员交流。

另外,我们要先选定哪个是主机,哪个是从机。一般,购买的小车,主控端是指树莓派与工控机,也就是ROS主机;远程端是指虚拟机或者你自己安装好ROS系统并且配置好ROS网络的的远程ROS从机;一般用户密码RikiRobot小车主控端与远程端的用户密码都是“123456”;我自己安装的系统要根据实际情况设置。

下面我从自己的实际配置介绍一下,

主机(树莓派): IPv4地址:192.168.3.93 子网掩码:255.255.255.0 网关:192.168.3.1从机(远程电脑): IPv4地址:192.168.3.92(前三个数字在同一段,末尾数字不一样) 子网掩码:255.255.255.0 网关:192.168.3.1

检查连接

无论是从机还是主机,你都应该可以ping通下面的三个端口,

ping 192.168.3.1
ping 192.168.3.92
ping 192.168.3.93
ROS配置

修改bashrc 将下列两句加入到分别入到两个设备的.bashrc的最后一行 ROS_MASTER_UR=http://主机ip:11311 ROS_IP=自己ip

主机: export ROS_MASTER_URI=http://192.168.3.93:11311 export ROS_IP=192.168.3.93

从机: export ROS_MASTER_URI=http://192.168.3.93:11311 export ROS_IP=192.168.3.92

检查通信

主机和从机都要运行source ~/.bashrc之后,主机运行

roscore

从机运行

rostopic list

出现

/rosout
/rosout_agg

说明通信成功

关于报错:invalid ROS_IP (port should not be included)

有的教学中,设置的ROS_IP是不固定的(因为卖家并不知道买家的IP),所以会使用`hostname -I`这样的标识,在运行下面的指令时

roslaunch  rikirobot bringup.launch(我自己安装的系统) 或者

roslaunch clbrobot bringup.launch(卖家的系统)

有可能会报错,

invalid ROS_IP (port should not be included)

修改

export ROS_IP=`hostname -I`

export ROS_IP=`hostname -I | cut -d " " -f 1`

或者,

export ROS_IP=`ifconfig wlan0 | grep -w inet | cut -d : -f 2 | awk {'print $2'}`

注意:采用上面那个对应任意连接方式,但下面那个必须是使用wlan0无线WIFI。

修改后的主机和从机配置为,

主机(树莓派小车): # export ROS_MASTER_URI=http://192.168.3.93:11311 # export ROS_IP=`hostname -I | cut -d " " -f 1` export ROS_IP=`ifconfig wlan0 | grep -w inet | cut -d : -f 2 | awk {'print $2'}` export ROS_HOSTNAME=`ifconfig wlan0 | grep -w inet | cut -d : -f 2 | awk {'print $2'}` export ROS_MASTER_URI=http://`ifconfig wlan0 | grep -w inet | cut -d : -f 2 | awk {'print $2'}`:11311 # 2wd,4wd,mecanum,omni.omni4wd,tank,ackermann export RIKIBASE=mecanum export RIKILIDAR=rplidar export USB_CAMERA=true export CLB_SERIAL="AEEFGABES63K6M2JXWMTA4VUBU======"

从机(我的远程ubuntu电脑没有wifi,只有一根网线连接到路由器): export ROS_MASTER_URI=http://192.168.3.93:11311 export ROS_IP=`hostname -I | cut -d " " -f 1`

最后,配置完了不要忘记

source  ~/.bashrc

恢复单机使用ROS

要在各自设备上运行roscore,就要关闭两机通信,可注释调上面这两个设置。

本文结束

关注
打赏
1659856567
查看更多评论
立即登录/注册

微信扫码登录

0.3497s