RCSOFTCHECK(rclc_executor_add_timer(&executor, &timer));创建失败!
-
// 用于创建通信节点和相关通信组件的函数。 bool create_transport() { // 使用 micro_ros_string_utilities_set 函数设置到 odom_msg.header.frame_id 中 odom_msg.header.frame_id = micro_ros_string_utilities_set(odom_msg.header.frame_id, "odom"); odom_msg.child_frame_id = micro_ros_string_utilities_set(odom_msg.child_frame_id, "base_link"); imu_msg.header.frame_id = micro_ros_string_utilities_set(imu_msg.header.frame_id, "imu"); const unsigned int timer_timeout = 50; delay(500); // 初始化内存分配器 allocator = rcl_get_default_allocator(); // 调用 rclc_support_init 函数初始化 ROS 2 运行时的支持库,传入 allocator RCSOFTCHECK(rclc_support_init(&support, 0, NULL, &allocator)); /// 调用 rclc_node_init_default 函数初始化 ROS 2 节点,传入节点名称、命名空间和支持库 RCSOFTCHECK(rclc_node_init_default(&node, "cc_car", "", &support)); // 调用 rclc_publisher_init_best_effort 函数初始化 ROS 2 发布者,传入节点、消息类型和主题名称。 // 发布里程计 RCSOFTCHECK(rclc_publisher_init_best_effort(&odom_publisher, &node, ROSIDL_GET_MSG_TYPE_SUPPORT(nav_msgs, msg, Odometry), "odom")); // 发布陀螺仪 RCSOFTCHECK(rclc_publisher_init_best_effort(&imu_publisher, &node, ROSIDL_GET_MSG_TYPE_SUPPORT(sensor_msgs, msg, Imu), "imu")); // 调用 rclc_subscription_init_default 函数初始化 ROS 2 订阅者,传入节点、消息类型和主题名称。 RCSOFTCHECK(rclc_subscription_init_best_effort(&twist_subscriber, &node, ROSIDL_GET_MSG_TYPE_SUPPORT(geometry_msgs, msg, Twist), "cmd_vel")); // 调用 rclc_timer_init_default 函数初始化 ROS 2 定时器,传入支持库、定时器周期和回调函数 RCSOFTCHECK(rclc_timer_init_default(&timer, &support, RCL_MS_TO_NS(timer_timeout), callback_sensor_publisher_timer_)); // 创建执行器 RCSOFTCHECK(rclc_executor_init(&executor, &support.context, 1, &allocator)); // 调用 rclc_executor_add_subscription 函数将订阅者添加到执行器中,传入执行器、订阅者、消息和回调函数。 RCSOFTCHECK(rclc_executor_add_subscription(&executor, &twist_subscriber, &twist_msg, &callback_twist_subscription_, ON_NEW_DATA)); // 调用 rclc_executor_add_timer 函数将定时器添加到执行器中,传入执行器和定时器。 RCSOFTCHECK(rclc_executor_add_timer(&executor, &timer)); return true;
rclc_executor_add_timer(&executor, &timer)创建失败,只能添加订阅者或定时器。
-
@862977146 在 RCSOFTCHECK(rclc_executor_add_timer(&executor, &timer));创建失败! 中说:
RCSOFTCHECK(rclc_executor_init(&executor, &support.context, 1, &allocator));
把1改成2或者更大的数据