文章目录
- 写在前面的话
- 校园网模式(失败)
- 手机热点模式(成功)
- 我的实验细节
- 实验验证
- 1、ssh 用户名@IP地址 终端控制
- 2、互相 ping 通 IP
- 3、ros2 run turtlesim turtlesim_node/turtle_teleop_key
- 4、ros2 multicast send/receive
- 5、从机打印主机发布的话题
- 6、主从机程序运行成功
- 7、注意事项
写在前面的话
我在实验的过程中发现,连接校园网的时候VM虚拟机如果设置为桥接模式会没有网络,设置NAT模式才可以上网。我根据资料(Nat模拟虚拟机无法ping通桥接模式虚拟机)做了如下总结:
文章意思 | 我的理解(有不对希望指出) |
---|---|
Nat模式的虚拟机处于主机管辖下的一个子网X | NAT模式是我的笔记本连接校园网后给虚拟机开热点,虚拟机进行的连接,虚拟机的IP是我笔记本分配的 |
桥接模式的虚拟机和主机处于同一个子网Y | 桥接模式是我的笔记本和虚拟机都要连接校园网,IP是校园网给的,但是给虚拟机连接校园网需要安装无线网卡,我没安装,所以没网 |
校园网模式(失败)
注意:这里虽然主机和工控机都是连接了校园网,但是它们不是同一个网段(IP的倒数第二位不一样),但是在NAT模式下它们是可以 ping 通的,也可以ssh进行远程终端控制,但是无法实现ROS2话题通讯
模式 | 主机(Windows) | 虚拟机(Ubuntu) | 工控机(Ubuntu) |
---|---|---|---|
NAT | WIFI连接校园网(IP:10.66.x.x) | IP:192.168.192.x(可以 ping 通工控机IP) | WIFI连接校园网(IP:10.66.x.x)(可以 ping 通主机IP) |
桥接 | WIFI连接校园网(IP:10.66.x.x) | 没网 | WIFI连接校园网(IP:10.66.x.x) |
手机热点模式(成功)
手机连接校园网之后再开热点也是可以的,IP都是同一个网段
NAT模式下,虚拟机的IP与主机和工控机都不是一个网段,可以ping通工控机的IP,也可以ssh远程连接,但是无法实现ROS2话题通讯
模式 | 主机(Windows) | 虚拟机(Ubuntu) | 工控机(Ubuntu) |
---|---|---|---|
桥接 | WIFI连接手机热点(IP:192.168.226.x) | IP:192.168.226.x | WIFI连接手机热点(IP:192.168.226.x) |
NAT | WIFI连接手机热点(IP:192.168.226.x) | IP:192.168.192.x | WIFI连接手机热点(IP:192.168.226.x) |
我的实验细节
- 笔记本(主机,发送控制指令)
- 工控机(从机,连接机器人,接收指令)
- ros2 版本(humble)
- 互相可以通过 IP 地址 ping 通
- 通过命令 ssh 用户名@IP地址 可以互相终端控制
- 互相可以
ros2 multicase send/receive
通 - 可以
ros2 run turtlesim turtlesim_node/turtle_teleop_key
通过 - 主机发布的话题,从机可以显示打印
实验验证
1、ssh 用户名@IP地址 终端控制
2、互相 ping 通 IP
3、ros2 run turtlesim turtlesim_node/turtle_teleop_key
注意:这里主机运行 turtlesim turtlesim_node 进行动画界面显示
若是从机运行 turtlesim turtlesim_node 会有下面的报错,因为我是通过ssh命令进行终端远程控制从机,无法获取画面信息
gg@gg:~/car_nav2$ ros2 run turtlesim turtlesim_node
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
[ros2run]: Aborted
4、ros2 multicast send/receive
成功
5、从机打印主机发布的话题
6、主从机程序运行成功
7、注意事项
主机或者从机中可能会有进程阻塞导致通讯失败的情况,比如 ros2 topic list
缺少话题,ros2 node list
没有节点打印等情况
top
终端命令查看 python3 死进程,kill + PID
结束掉即可