xarm_ros2
xarm_ros2 copied to clipboard
About /joint_states publishers
Executing the launch file needed to control a robot, e.g.
ros2 launch xarm_moveit_config uf850_moveit_fake.launch.py
generates two Nodes that publish to the /joint_states topic:
/uf_robot_fake_hw, which is defined here./joint_state_publisher, which in the case of the previous launch file is defined here.
Click to see the full rosgraph
With the previous in mind, I'd like to clarify the following aspects:
- Why is the
uf_robot_hardware/UFRobotFakeSystemHardwareros2_controlplugin used, instead of simply usingmock_components/GenericSystem? Is there any substantial difference? - Why is the
joint_state_publisherpackage used, instead of just spawning ajoint_state_broadcasterros2_controller? The fact of those controllers being defined — e.g. here, but not used stresses this question.
Apart from those questions, the motivation of this ticket comes from the fact that while integrating the Robotiq 2F-85 gripper, I had to replace the joint_state_publisher and spawn the joint_state_broadcaster instead. Otherwise, action requests to the robotiq_gripper_controller action server would lead to no change in the gripper's position or whatsoever. After performing that change, I am able to ros2_control both robot and the Robotiq gripper.
@mcres Sorry for causing you trouble.
The use of uf_robot_hardware/UFRobotFakeSystemHardware was decided because the early development function was not stable. Sorry, I did not follow up with ros2_control in time. We will use fake_components/GenericSystem or mock_components/GenericSystem for different branches in the next update.
Regarding joint_state_broadcaster, I am sorry that it is indeed defined but not used. Instead, joint_state_publisher is used. Thank you for your pointing out. We will use joint_state_broadcaster instead of joint_state_publisher in the next update.
Thank you for your support and suggestions.
@vimior thank you for promptly clarifying the details and addressing the feedback!