mahyamkashani/resilience-aware_robotics_embodied_cyber-physical_system
GitHub: mahyamkashani/resilience-aware_robotics_embodied_cyber-physical_system
一个基于 ROS2 和 Webots 的弹性感知机器人安全研究框架,用于在仿真环境中模拟设备级网络攻击并评估信息物理融合系统的攻击韧性与性能退化。
Stars: 0 | Forks: 0
# 设备级网络攻击下信息物理融合系统的实现与评估
## 安装说明
```
cd ~/ros2_ws
colcon build --packages-select my_attack_interfaces
source install/setup.bash
colcon build --packages-select attack_pkg
source install/setup.bash
```
## 运行说明
打开 **3 个独立的终端**,并在每个终端中分别运行一条命令。
**终端 1:不带 PR2 控制器的 Webots 仿真:**
```
cd ~/ros2_ws && source install/setup.bash
webots ~/my_webot_project/worlds/my_project_world.wbt
```
**终端 2:使用 JSON 配置文件运行 PR2 控制器:**
```
python3 ~/my_webot_project/controllers/manual_run.py
```
或
```
python3 ~/my_webot_project/controllers/pr2_controller/pr2_controller.py ~/my_webot_project/controllers/pr2_controller/configs/experiment2.json
```
**终端 3:攻击节点:**
```
cd ~/ros2_ws && source install/setup.bash
ros2 run attack_pkg attack_node
```
**终端 4:触发攻击:**
```
cd ~/ros2_ws && source install/setup.bash
ros2 topic pub --once /active_attacks my_attack_interfaces/msg/AttackState \
"{compromised_devices: ['right_wheels:STOP']}"
```
**终端 5:停止所有攻击:**
```
ros2 topic pub --once /active_attacks my_attack_interfaces/msg/AttackState \
"{compromised_devices: []}"
```
### 可用攻击
| 组件 | 攻击类型 |
|---|---|
| `left_wheels`, `right_wheels` | `STOP`, `OVERSPEED`, `UNDERSPEED`, `BACKWARD` |
| `left_arm`, `right_arm` | `STOP`, `OVERSPEED`, `UNDERSPEED`, `BACKWARD` |
| `left_gripper`, `right_gripper` | `STOP`, `OVERSPEED`, `UNDERSPEED`, `BACKWARD`, `GRIP_WEAK` |
| `torso`, `head` | `STOP`, `OVERSPEED`, `UNDERSPEED`, `BACKWARD` |
### 自动化执行
无需像上面那样手动使用多个终端,`run_scenario.sh` 可以自动化完整运行流程:它会启动 Webots,延迟一段时间后启动 PR2 控制器,注入攻击,等待实验完成,记录结果 CSV 文件,最后关闭 Webots。
```
cd ~/ros2_ws && source install/setup.bash # ensure ROS 2 is sourced
./run_scenario.sh [config] [attack] [result]
```
所有参数都是可选的,并具有默认值(experiment2 + `left_gripper:GRIP_WEAK`):
```
# 默认值
./run_scenario.sh
# 特定实验 + non-resilient attack
./run_scenario.sh configs/experiment2.json "left_arm:STOP" ../results/framework_correctness/exp2.csv
# 多个受损设备
./run_scenario.sh configs/experiment4.json "left_wheels:STOP,right_wheels:STOP"
```
启动时机可以通过 `DELAY`(控制器启动)和 `DELAY2`(攻击注入)环境变量进行配置,单位为秒:
```
DELAY=8 DELAY2=15 ./run_scenario.sh configs/experiment2.json "left_arm:STOP"
```
若要一次性收集所有结果:
```
for n in 1 2 4; do
./run_scenario.sh "configs/experiment$n.json" "left_arm:STOP" "../results/framework_correctness/exp$n.csv"
done
```
## 测试
单元测试位于 `my_webot_project/controllers/tests/tests.py` 中,涵盖了退化指标(`metrics.Metrics.compute_degradation`),包括任务执行时间为负数的边缘情况(任务完成速度快于其基准,或在完成前停止)。
在 `tests` 目录下使用 `pytest` 运行它们:
```
cd ~/my_webot_project/controllers/tests
pytest tests.py -v
```
## 致谢
本项目是对由 Gysella Imrell 开发的仿真及具备弹性感知的机器人信息物理融合系统的修改。初始版本链接:https://github.com/GysellaImrell/examensarbete
标签:meg, ROS2, Webots, 仿真测试, 信息安全, 具身智能, 安全规则引擎, 应用安全, 攻击与评估, 机器人安全, 逆向工具, 配置错误