调试几天,ros之间的通信。虽然还有点bug,但总之网络配置成功, 并且能够正
常通信,现在记录一下这个过程。
一,网络通信调试
1)利用ifconfig命令查看主机master(turtlebot的上网本)和客户端即工作机的 ip。
2)利用hostname命令查看,上网本和工作机用户名字。
3)打开host文件,有两种方式:
(1)gksu gedit /etc/hosts
(2)vim打开,先获取修改权限 sudo chmod a+w /etc/hosts
vim /etc/hosts;(esc切换到命令模式,输入:wq!)
4)将ip配置到hosts文件中,第二行、第三行加入ip 和hostname,格式如下
ip hostname,注中间是采用的tap键而不是空格键。
5)两台电脑时钟同步,sudo apt-get install chrony
6)查看两台电脑ssh服务器的安装
sudo apt-get install openssh-server
检测是否启动:
ps -e|grep ssh
7)测试网络通信,
1)两台电脑ping自己的ip
2)互相ping IP,
如果没有问题,则说明两台电脑网络层是通的,在同一个局域网中
二,ros系统配置
1)(上网本)输入gedit ~/.bashrc
2)在文本中输入
export ROS_HOSTNAME=TURTLEBOT_OF_IP(上网本的ip)
export ROS_MASTER=http://TURTLEBOT_OF_IP:11311(工作本的ip)
3)终端运行
~/.bashrc
4)(工作本)同样输入gedit ~/.bashrc
5) 在最后添加如下代码
export ROS_HOSTNAME=WORK_IP
export ROS_MASTER=http://TURTLRBOT_OF_IP:11311
6)终端运行
~/.bashrc
(注:如果想单独运行,不需要远程通信,可以把ecport去掉即可)
三,测试
1)测试主机(上网本)
在上网本运行节点管理器roscore,工作本上运行rostopic list
如果工作正常则会出现两行节点信息(不再写出)。说明两台电脑ros之间可以通信。
2)测试从工作本到上网本
上网本运行
roscore
roslaunch turtlebot_bringup minimal.launch
工作本上运行:
roslaunch turtlebot_teleop keyboard_teleop.launch
注:实现的功能是:工作本遥操作上网本,远程控制机器人运动。
3)测上网本到工作本
工作本运行:
rostopic pub -r10 /hello std_msgs/String "hello"
上网本运行:
rostopic echo /hello
消息“hello”开始打印每秒10次。
总结:经过两天的测试,开始用了小乌龟那个测试,想实现小乌龟的远程操控:
上网本运行:
roscore
rosrun turtlesim turtlesim_node
工作本上运行:
rosrun turtlesim turtle_teleop_key
一直没有调通,反复查看网络配置,客户端和服务器端都没有问题。按照创客制造的博客测试,都能通过。说明网络通信没有问题,已经完成。(小乌龟的例子调试不通,我感觉像是我工作
本simulator的问题,欢迎大家交流)。