上篇:
ROS学习笔记-多机器人通信(1)-实现两台机器通信
ROS学习笔记-多机器人通信(2)-从机改回主机
ROS学习笔记-多机器人通信(3)报错(ssh: connect to host hostname port 22: No route to host)解决后远程访问终于实现。
一、报错
远程打开不了rviz窗口出现报错: QXcbConnection:Could not connect to display
之前登录ssh的方式都是所示 hostname@hostname 或是hostname@hostname的ip,这种方式远程登录没问题,但无法显示图像界面,比如在终端输入打开rviz的命令时,都失败了,并报错。
二、解决办法
2.1可在命令后面添加参数 -X(注意X大写),即
如果需要调用图形界面程序可以使用 -X 选项
ssh hostname@ip -X
或是
ssh hostname@hostname -X
2.2添加环境变量
export QT_QPA_PLATFORM='offscreen'
三、运行rviz:
1.先在一个终端中打开ROS master,不然提示联系不上。
roscore
2.在另一个终端中输入:
rosrun rviz rviz
成功打开rviz显示窗口。
四、打开键盘控制节点报错以及解决方法
4.1报错内容
在使用Spark一键启动的时候,在运行整个封装好的启动文件时,发生如下的报错,根据报错的内容可知是键盘控制节点出现了问题。
只显示了RVIZ界面,但是键盘控制界面却没有出现。
4.2报错解决
因此,只需要打开键盘控制节点即可控制Spark机器人的运动。
根据报错提示,寻着路径可知keyboard_control.sh文件出现了问题。
打开该文件后,可知运行键盘控制节点的命令是:
rosrun spark_teleop spark_teleop_node 0.14 0.5
因此,可以考虑单独启动该节点。在台式机上远程访问Spark后,终端输入该命令。
出现了如下的报错,根据报错可知,无法联系上ROS Master,因此只需要打开ROS Master即可。
问题解决:
在台式机上的终端
1.打开ROS Master
roscore
2.在打开键盘启动节点
rosrun spark_teleop spark_teleop_node 0.14 0.5
如下图所示,说明成功打开了键盘控制器。
五、控制Spark运动
5.1终端依次输入
cd spark
./onekey
5.2选择控制机器人运行
在键盘控制界面控制运行即可。
本次以采用基于深度相机的rtabmap算法建图为例,建完地图后保存,输入以下命令:
rosrun map_server map_saver -f 2 #2为地图名称,随意取。
整个过程已录制视频,有兴趣的朋友可以下载,地址:台式机控制Spark机器人建图的视频.mp4
reference
感谢以下参考博客的分享
1.(九)ROS安装rviz模拟器
2.用ssh远程linux服务器无法打开图形界面的解决方法