远程遥控机器人
什么是远程,为什么需要远程?
远程指的是用远程的计算机来控制机器人,使用远程PC来调试开发,会方便很多。
1 远程计算机环境配置
远程计算机的系统版本和ROS版本必须和机器人上的工控机一致,否则会出现版本不统一的通信问题。
2 SSH登录到远程主机终端
打开机器人身上的工控机和用户手上远程计算机 步骤如下:
- 1 使工控机和笔记本电脑必须处于同一局域网下(也就是连接着同一个路由器,尽量不要用手机热点)
- 2 然后获取工控机的IP
- 3 在远程计算机终端中登录工控机,@后面是工控机的IP地址
ssh -X handsfree@192.186.x.x
- 4 在工控机端,使用同样的方法,登录到远程计算机
ssh -X user_name@192.186.y.y
如果也没有错误产生,说明二者可以正常通信,可以进行下一步
3 远程设置
上一步中,我们已经可以通过局域网互相访问,那么只需要进行下面的设置,ROS程序就可以在工控机和远程计算机上分别运行。遥控机器人就是通过机器人抽象节点在机器人端的工控机上运行,遥控节点在远程计算机上运行来实现的。
Tips : IP_OF_ROBOT_PC 是工控机的IP,IP_OF_REMOTE_PC是远程计算机的IP。
- 在远程计算机中添加下面两行到~/.bashrc文件
export ROS_MASTER_URI=http://IP_OF_ROBOT_PC:11311
export ROS_HOSTNAME=IP_OF_REMOTE_PC
- 在机器人端工控机上添加下面两行到~/.bashrc文件,如图中最后两行所示
export ROS_MASTER_URI=http://IP_OF_ROBOT_PC:11311
export ROS_HOSTNAME=IP_OF_ROBOT_PC
4 远程遥控机器人
启动机器人驱动节点
在机器人端工控机上打开一个终端,并运行:roslaunch handsfree_hw handsfree_hw.launch
该条命令打开了机器人驱动节点,该节点的作用是完成PC与机器人底层的通讯和相关指令与数据传输。
打开遥控节点
在远程计算机打开一个终端,并运行:
roslaunch handsfree_teleop keyboard_teleop.launch
该条命令打开键盘控制节点,按照终端中的提示,我们就可以利用键盘控制机器人运动。如果一切正常的话,就表示我们就可以在远程计算机上共享机器人端工控机上ROS的信息了。
到此,完成ROS控制机器人功能的实现,如果一切正常的话,说明远程计算机设置没有问题,与机器人的通信也没有问题,接下来就可以进行更高级功能的测试了。
5 远程的其它介绍
如果只是为了遥控,只用ssh就够了,ROS的远程是把两台PC的通信连接起来,所有topic可以在两台PC同时操作,更常用的是,我们可以把rviz,rqt等ros工具运行在远程计算机上,把算法运行在工控机上。