admin管理员组文章数量:1632066
这个主要涉及.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,就要
关闭两机通信,可注释调上面这两个设置。
本文结束
版权声明:本文标题:ROS移植机器人小车:小车主机与从机电脑的通信 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729099760a1186515.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论