1
$\begingroup$

I've created my own move_group_interface due to some complications with the original and the need to expose more functionality of move_group to my application. Within the Gazebo simulation it is working as intended, unfortunately it doesn't work on the real robot yet. I receive the error:

[motion_interface-14] [INFO][1708423092.297431201] [moveit_ros.current_state_monitor]: Didn't receive robot state (joint angles) with recent timestamp within 1.000000 seconds. Requested time 1708423091.297018, but last received state has time 1708423091.294824.

This is when I request the current robot state for the planning request to move_group the function bool CurrentStateMonitor::waitForCurrentState(const rclcpp::Time& t, double wait_time_s) const is called. When running without using simulation time, it will wait for a new message on /joint_states topic until the wait time is reached. It should be notified by void CurrentStateMonitor::jointStateCallback(const sensor_msgs::msg::JointState::ConstSharedPtr& joint_state). This function will get called until I request the current robot state, then it will be only called after the first function finished. For me it seems to be some kind of parallel execution issue, so I've tried calling waitForCurrentState by:

std::future<bool> hasCurrentState = std::async(&planning_scene_monitor::CurrentStateMonitor::waitForCurrentState,
                                               this->options_.current_state_monitor,
                                               this->node_ptr->get_clocke()->now(),
                                               wait_seconds);

Sadly this hasn't yielded any positive result. Since the subscription to joint_states is convoluted and buried in CurrentStateMonitorMiddlewareHandle I have not really a good overview on what is happening. I presume some kind of need for multi-threaded executors or/and callback groups. I'm however hesitant to do changes in these parts of MoveIt. I've tried out to give the subscription a reentrant callback group, but also without positive result.

Maybe you can bring me on track of what is going on.

$\endgroup$

1 Answer 1

0
$\begingroup$

Did you manage to figure it out, I'm having a similar issue.

But I'm using use_sim_time as you can see more here.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.