- 为ros2的python节点添加自定义消息
- python节点无法自定义消息,方法是先建一个cmake的功能包,在里面添加msg,然后在python节点中导入该msg
- 1.创建功能包
ros2 pkg create --build-type ament_cmake lane_msg
- 2.定义msg消息内容
mkdir msg cd msg # 创建 xxx.msg文件
- 3.修改CMakeLists.txt,添加以下内容
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"msg/xxx.msg"
)
- 4.修改package.xml,添加以下内容
rosidl_default_generators rosidl_default_runtime rosidl_interface_packages
- 5.编译msg功能包
# 如果下面命令编译失败则删掉install目录重新编译 colcon build --packages-select lane_msg –merge-install
- 6.检查自定义消息是否可用
# 如果显示出自定义消息内容,则成功 ros2 interface show lane_msg/msg/xxx3.在python节点中使用自定义msg(示例)
- 1.导入
# from lane_msg.msg import LanesInfo as LaneMsg
- 2.发布消息格式改为自定义的消息
self.processed_image_pub = self.create_publisher(LaneMsg, '/lane_info', 1)
- 3.关联发布内容
msg = LaneMsg()
msg.line_c0 = float(fit_params[0][-1].astype("float32"))
msg.line_c1 = float(fit_params[0][-2].astype("float32"))
参考链接



