ROS-NetSim
用于集成机器人和网络模拟器的框架
ROS-NetSim是一个ROS包,它充当机器人和网络模拟器之间的接口。通过准确模拟感知-行动-通信循环,ROS-NetSim可以实现机器人和网络交互的高保真度表示。ROS-NetSim具有以下特点:
- 对ROS目标应用程序透明
- 不依赖于特定的网络和物理模拟器
- 可以调整保真度和复杂度
安装
克隆存储库并执行以下命令:
cd <repo_root>
source /opt/ros/melodic/setup.bash
rosdep install -i --from-paths . -y
catkin init
catkin config --cmake-args -DPYTHON_EXECUTABLE=/path/to/python3
catkin build
在作者的机器上,Python 3可执行文件的位置为:/usr/bin/python3
测试ROS-NetSim
为了测试ROS-NetSim的正确行为,我们将运行一个虚拟模拟。此示例的配置参数在example/cfg/example.yaml
中描述。这个测试模拟使用了两个虚拟模拟器,它们只是关闭了同步循环。虚拟物理模拟器为代理生成随机位置,而虚拟网络模拟器拦截数据包并延迟500毫秒。
首先,通过执行以下命令运行虚拟网络模拟器:
rosrun example net_sim_dummy.py src/example/cfg/example.yaml
虚拟网络模拟器将等待其他组件运行。接下来,在另一个终端中,通过执行以下命令启动虚拟物理模拟器(对于这个测试示例,还包括物理协调器):
rosrun example phy_sim_dummy.py src/example/cfg/example.yaml
同样,此组件将等待模拟的其他部分启动。最后,通过执行以下命令运行网络协调器:
rosrun network_coordinator network_coordinator.py src/example/cfg/example.yaml
请注意,由于网络协调器需要操作网络接口,它需要root权限。
一旦所有组件都在运行,同步将开始,物理模拟器将开始生成类似以下的任意节点位置:
node_list: 18.195842521106556
node_list: 11.684340332903446
node_list: 2.8332447228696123
node_list: -0.654501732905802
node_list: -0.29849447880207103
node_list: 0.6936700224299548
node_list: 0.03674816634892308
node_list: 4.211485046377071
node_list: 3.1339309588288455
node_list: 8.129863384306084
node_list: 0.43109771468538166
node_list: -0.45313386141764833
node_list: 0.047726476809024414
node_list: -0.7788110473286639
path_details {
ids: 2
ids: 1
los: true
num_hops: 1
hop_points: 0.06865299159276339
hop_points: 0.2702797061757798
hop_points: 0.7462493334641866
hop_points: 0.7346620894670425
}
这些对应于在ROS-NetSim组件之间共享的同步更新。此外,网络协调器已经为IP地址192.168.0.1
和192.168.0.2
创建了两个虚拟网络接口,正如配置文件example.yaml
中指定的那样。然后,我们可以通过执行从一个地址到另一个地址的ping
命令来测试这些IP地址之间的流量,例如ping -I 192.168.0.1 192.168.0.2
。输出应该类似于以下内容:
ping -I 192.168.0.1 192.168.0.2
PING 192.168.0.2 (192.168.0.2) from 192.168.0.1 : 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=1005 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=1008 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=1012 ms
^C
--- 192.168.0.2 ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 3005ms
rtt min/avg/max/mdev = 1005.133/1008.736/1012.983/3.438 ms, pipe 2
应该看到数据包被延迟500毫秒,导致往返时间约为1000毫秒。这意味着流量被重定向到虚拟网络模拟器,并且ROS-NetSim正常工作。
评论区