2.00ros_modbus_msg - 基于ROS和Modbus协议构建的通信功能包
1. 概述
ros_modbus_msg
是基于ROS架构ROS架构介绍和Modbus协议Modbus协议介绍实现的在本项目——农业多功能机器人中滑台操控部分的控制部分;是通过ROS的话题通讯方式,和具有modbus/TCP协议modbus/TCP协议介绍的制器进行通信,进而控制机器人的滑台移动。
滑台部分充当了机器人的执行机构,作为一个整体看待,完成自动化除草等功能。
整个执行机构中包括3条滑台,1个推杆,1个主轴电机,代表了执行机构的 X、Y、Z
3个方向上的移动和工作。其中2条平行的滑台负责X轴向的移动,在控制器中为ch0,ch1
通道控制;1条滑台负责Y轴向的移动,在控制器中为ch2
通道控制;1个推杆负责Z轴向的移动,在控制器中为ch3
通道控制;1个主轴电机负责机器人最终的除草工作的实现,由控制器控制器介绍转发的I/O控制I/O控制介绍。
当前版本为最基础的版本:release-v1.0
本模块大量参考了ros-modbus-device-driver项目,该项目地址:bitmeal/ros-modbus-device-driver (github.com)
依赖项依赖项介绍
find_package(catkin REQUIRED COMPONENTS
rospy
std_msgs
message_generation
)
catkin_python_setup()
配置setup.py
:
#!/usr/bin/env python
from distutils.core import setup
from catkin_pkg.python_setup import generate_distutils_setup
d = generate_distutils_setup()
d['packages'] = ['wrapper_modbus']
d['package_dir'] = {'': 'src'}
setup(**d)
安装 install with Github
-
本功能包基于python3;
-
本功能包基于Ubuntu20.04.06 和 ROS noetic 1.16.0
-
本版本基于pymodbus版本为
3.5.2
;pymodbus的安装流程可参考本版本
README.md
-
本版本地址为:HMXF/ros_modbus_msg 版本 v1.0 (github.com)
cd ~/catkin_ws mkdir src cd src git clone 功能包.git
编译
cd ~/catkin_ws
catkin build --pre-clean
注:
- 编译时可以使用
catkin_make
,但推荐为catkin build
,此工具更加灵活高效。 - 参数
--pre-clean
表示开始构建之前先执行清理操作,以避免可能存在的旧文件对新构建的影响:删除先前生成的build
和devel
目录。
功能包文件树
├── CMakeLists.txt # 配置文件
├── doc # 设备文档
├── examples # 简单的示例
├── launch
│ └── control.launch # launch启动文件
├── LICENSE # 版权说明
├── msg
│ ├── operation.msg # Modbus控制器的命令消息
│ └── spindle_argument.msg # 主轴电机的控制命令消息
├── package.xml
├── README.md
├── scripts # ROS控制节点
│ ├── listen.py # 监听节点
│ ├── node.py # Modbus控制节点
│ └── Spindle_motor.py # 主轴电机控制节点
├── setup.py # python功能包引用设置
├── src
│ └── wrapper_modbus # Modbus通讯数据设置包
│ ├── BaseModbusClient.py # Modbus协议的基本应用
│ ├── d12_controller_mapping.py # Modbus设备映射表
│ ├── d12_modbus_client.py # Modbus设备的使用模块
│ ├── __init__.py # 功能包的初始化设置模块
│ ├── post_threading.py #
│ ├── __pycache__
│ └── ROS_Modbus.py # ROS命令消息转换为Modbus设备命令的切割封装模块
└── Version.md # 版本信息
ros_modbus_msg
功能包中主要由 3 个部分组成:
-
scripts,基于ROS通信ROS通信介绍方式的对pymodbus的使用;
包括命令接受、解析,调用相应控制器包的函数(
node.py
); 还包括控制器参数控制器参数介绍变化的监听(
listern.py
); 还包括I/O信号的转发(
Spindle_motor.py
); -
src/wrapper_modbus,对pymodbus模块的包装,使得更方便于本项目的应用(
wrapper_modbus
); -
msg,基于ROS通讯的自定义消息类型ROS通讯的自定义消息类型介绍;
2. 使用方法
使用前准备
-
连接佳信通控制器设备:
-
本功能包基于佳信通控制设备,使用Modbus/TCP协议在PC(或工控机)与控制器控制器介绍之间通信;
-
设备与PC通过通用网线连接:
- 工控机可以直接通过网口网线与设备连接;
- 个人PC也可以如上连接,如果仅有一个网口,可以通过转换器/扩展坞转换器/扩展坞介绍使用USB方式连接;
-
硬件连接后,需要在Ubuntu系统Ubuntu系统介绍中进行网络配置:
-
在Ubuntu系统中,打开
Settings
设置的Network
设置 -
在设备连接后会弹出新的网络设置:
-
选择Connected-100Mb/s的网络设置;
-
IPv4 Method
选为Manual
; - 将IP地址配置为设备IP:192.168.1.222;Netmask:255.255.255.0;
- 选择
Apply
;
-
-
-
使用
-
使用
Ctrl+Alt+T
打开终端:启动roscoreroscore
-
控制命令节点启动:
-
使用
Ctrl+Alt+T
打开另一个终端:cd ~/catkin_ws
-
刷新环境变量:
source ./devel/setup.bash
-
运行节点:
rosrun ros_modbus_msg node.py
-
发布命令:
rostopic pub /
注:命令参数含义可以参考msg文档代码中内容;
-
-
监听节点启动:
-
使用
Ctrl+Alt+T
打开另一个终端:cd ~/catkin_ws
-
刷新环境变量:
source ./devel/setup.bash
-
运行节点:
rosrun ros_modbus_msg listen.py
-
-
主轴电机节点启动:
-
使用
Ctrl+Alt+T
打开另一个终端:cd ~/catkin_ws
-
刷新环境变量:
source ./devel/setup.bash
-
运行节点:
rosrun ros_modbus_msg Spindle_motor.py
-