Skip to content

Conversation

@Jelmerdw
Copy link
Collaborator

@Jelmerdw Jelmerdw commented Oct 28, 2025

Description

This PR extends functions for the control of the arm, in preparation of grasping:

  • One can create an octomap for MoveIt and visualize in RViz.
  • One can visualize a grasp pose in Rviz.
  • One can create, visualize and execute a plan for an end-effector pose as separate steps.
  • One can control all actions mentioned using a simple ui, created with Python's nicegui package.

Fixes: #222, #278

Testing

You can test all actions by starting the franka_planning configuration in one terminal:

ros2 launch rcdt_launch robots.launch.py configuration:=franka_planning

and the simple ui in a second terminal:

ros2 run rcdt_utilities simple_gui.py --ros-args -p namespace:=franka1

You should be able to perform all actions in the browser on http://localhost:8080.

Documentation

  • I have updated the documentation (if necessary)

Additional Notes

Any relevant screenshots, logs, or context.

@Jelmerdw Jelmerdw marked this pull request as ready for review October 28, 2025 16:05
Signed-off-by: Jelmer de Wolde <jelmer.de.wolde@alliander.com>
Signed-off-by: Jelmer de Wolde <jelmer.de.wolde@alliander.com>
Signed-off-by: Jelmer de Wolde <jelmer.de.wolde@alliander.com>
Signed-off-by: Jelmer de Wolde <jelmer.de.wolde@alliander.com>
@Jelmerdw Jelmerdw force-pushed the add-octomap-and-visualizations-for-grasping branch from f47bff6 to d577008 Compare October 30, 2025 14:17
Signed-off-by: Jelmer de Wolde <jelmer.de.wolde@alliander.com>
return;
}
auto cmd = fmt::format(
"ros2 launch rcdt_moveit relay_octomap.launch.py "
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this done just to ensure that the Octomap is not run all the time? Is there no way to disable/pause the Octomap generation more directly? Or does the third-party code not support that?

Copy link
Collaborator Author

@Jelmerdw Jelmerdw Oct 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed. I couldn't find a way to enable or disable. Also see:
moveit/moveit#1728

The only suggested solution is to enable/disable by passing the camera output to a topic (or not). I first tried this with a subscriber/publisher, but this results in delays due to serialization. Therefore I now start the topic_tools relay process to do this without serialization.

@geurto
Copy link
Collaborator

geurto commented Oct 30, 2025

When running the robots.launch.py as indicated above, I get

[gz-4] [Err] [Physics.cc:1785] Attempting to create a mimic constraint for joint [fr3_finger_joint2] but the chosen physics engine does not support mimic constraints, so no constraint will be created.
[...]
[gz-4] [Err] [Ogre2MeshFactory.cc:595] Cannot load mesh with zero sub-meshes
[gz-4] [Err] [Ogre2MeshFactory.cc:124] Failed to get Ogre item for [/home/rcdt/rcdt_robotics/ros2_ws/install/rcdt_gazebo/share/rcdt_gazebo/models/basket/resources/basket.obj]
[gz-4] [Err] [SceneManager.cc:426] Failed to load geometry for visual: visual
[gz-4] [Err] [Ogre2MeshFactory.cc:595] Cannot load mesh with zero sub-meshes
[gz-4] [Err] [Ogre2MeshFactory.cc:124] Failed to get Ogre item for [/home/rcdt/rcdt_robotics/ros2_ws/install/rcdt_gazebo/share/rcdt_gazebo/models/brick/resources/baksteen.obj]
[gz-4] [Err] [SceneManager.cc:426] Failed to load geometry for visual: visual

And the simple_gui gives a "No executable found".

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More of a general question than a review comment, is there currently a logic present for the order of function-definitions or is it just "add new functions at the bottom"? Because if that's the case I would like to propose to start putting the functions in alphabetical order to make it easier to read through the code (at least for me).

Not suggesting to change it now but is this maybe something for in the future?

Signed-off-by: Rosalie <rosalie.van.ark@alliander.com>
node,
moveit::planning_interface::MoveGroupInterface::Options(
"fr3_arm",
"arm",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing this from fr3_arm to arm, does that mean that for consistency all fr3_... variable names in the entire repo should be removed or is it done here because this part of the code is general enough?

tf_broadcaster.sendTransform(tf);

// Define the arm_end_link in the tcp_frame:
// TODO: Do only once at initialization, since it does not change.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this TODO still be done within this PR?

Copy link
Collaborator

@rosalievanark rosalievanark left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other comments I left are primarily for my information

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Arm] Research collision monitoring for the arm based on the pointcloud

4 participants