这是一个基于ROS2的工业自动化视觉处理系统,主要用于点云处理和与西门子PLC通信。
该项目包含两个主要的ROS2包:
- norm_calc: 实现点云数据处理算法,包括滤波、法线计算、网格生成等
- snap_7: 使用Snap7库实现与西门子PLC的通信
系统能够处理来自深度相机的点云数据,识别特定区域内的特征点,并通过PLC控制工业设备执行相应操作。
vChisel_ros2_ws/
├── norm_calc/ # 点云处理包
│ ├── include/norm_calc/ # 头文件
│ ├── src/ # 源代码
│ ├── config/ # 配置文件
│ └── launch/ # 启动文件
└── snap_7/ # PLC通信包
├── snap_7/ # Python节点实现
├── launch/ # 启动文件
└── test/ # 测试文件
- 点云预处理:直通滤波、体素下采样、统计滤波
- 法线计算:使用PCL库计算点云法线
- 特征提取:从处理后的点云中提取关键特征点
- 参数配置:支持多种处理参数的配置
- 与西门子PLC通信:使用Snap7库读写PLC数据块
- 触发机制:监听PLC特定地址值变化触发点云处理
- 结果反馈:将处理结果写回PLC指定地址
# ROS2 humble
sudo apt install ros-humble-desktop
# PCL库
sudo apt install libpcl-dev
# Snap7库
pip install python-snap7
# 其他依赖
sudo apt install ros-humble-cv-bridge \
ros-humble-pcl-conversions \
ros-humble-pcl-msgs \
ros-humble-message-filterscd vChisel_ros2_ws
colcon build --packages-select norm_calc snap_7
source install/setup.bash./start_system.sh# 终端1:启动norm_calc和PLC客户端节点
ros2 launch snap_7 snap_7.launch.py
# 如果需要单独启动norm_calc
ros2 launch norm_calc norm_calc_launch.py配置文件位于:norm_calc/config/norm_calc_params.yaml
主要参数:
BOX_*: 网格划分参数X/Y/Z MIN/MAX: 坐标轴过滤范围BORDER_WIDTH: 边界宽度NORM_TH: 法线阈值SEARCH_RADIUS: 搜索半径SEARCH_NUM_TH: 最小邻居数阈值
PLC通信相关参数:
plc_address: PLC IP地址db_number: 数据块编号db_start: 起始偏移地址poll_rate: 轮询频率
- 确保PLC与运行节点的计算机网络连通
- 在PLC中创建对应的数据块(DB)
- 配置正确的DB编号和偏移地址
- 启动系统
- 当PLC中触发条件满足时(特定地址值变为110),系统自动执行点云处理
- 处理结果会写回到PLC指定地址
- 确认PLC IP地址配置正确
- 检查防火墙设置
- 确保PLC中DB块配置正确且允许外部访问
- 验证DB编号和偏移地址正确
- 检查点云数据源是否正常
- 调整过滤参数适应具体场景
- 查看日志输出定位问题
- 在norm_calc包中添加新算法实现
- 修改norm_calc.cpp整合新算法
- 更新配置参数(如需要)
- 修改plc_client_node.py添加新的读写逻辑
- 调整数据解析方式以适配不同的PLC数据结构