Thank you so much for the kind words and the suggestion — that is genuinely very encouraging to hear.
That’s actually great suggestion, because I am still experimenting and don’t know yet correct way to make architecture reusable.
I am currently in my workflow a bit more plan-and-execute side inside each node, then exposing IK itself as a ROS2 interface.
At the moment, the flow in my code is more like:
def _go_to_pose(self, T_goal: np.ndarray):
q0 = self.q_measured.copy() if self.has_arm_feedback else self.q_commanded.copy()
ts, qs = self.planner.plan_pose_move(q0, T_goal, strategy="joint_quintic")
self.traj_executor.start(ts, qs)
and then in control loop I execute the current sampled trajectory over time:
if self.traj_executor.is_active():
q_cmd, reached_end = self.traj_executor.sample()
self._publish_cmd(q_cmd)
self.q_commanded = q_cmd.copy()
self.solver.set_joint_state(q_cmd)
if reached_end:
self.traj_executor.cancel()
motion_done = True
So right now its not really “a ROS node exposing IK directly”, but more a pipeline like:
Cartesian goal → planner / IK → trajectory → execution
Because of that, I think now your suggestion makes a lot of sense. A cleaner ROS2 integration would be separate those layers on dedicated Nodes clearly.
So if I understand correctly your point and also looking at my current workflow, next would be do:
- an IK service node: Cartesian pose in, solved joint configuration out
- then possibly a topic-based interface later for continuous Cartesian targets, publishing directly in
ForwardCommandController
- separately higher-level plan/execute path for trajectory generation and execution (will be interesting to solve tbh
)
So yes, I think now the direction is probably wrapping the IK solver itself as dedicated ROS2 node, instead of only using it inside the current planning/execution flow. Probably best is service-based interface first, with a topic based later for interactive tools like Viser, leader-arm, gamepad control? 
I am still exploring by experimenting, so I do not fully know yet what the cleanest architecture will be, but your suggestions very helpful and probably the right direction. 