Skip to content

Core Principles

Gaël Écorchard edited this page Sep 11, 2024 · 3 revisions

This page explains the core principles of CROSS.

Object types

Robot

A robot is a collection of links and joints. It is the main object in CROSS when working with URDF (i.e. not Xacro).

Has a context menu.

Link

A link is a rigid body that corresponds to a part of the robot.

Joint

The set of joints defines the kinematic chains of the robot. Only tree-structure are supported since this is also the case for URDF.

Workcell

It is the main object in CROSS when working with Xacro files. This is the object that is best suited to add some elements such as sensors to an existing robot.

XacroObject

This object allows including a Xacro macro or a URDF file. Must be used in conjunction with a Workcell.

Pose

A pose allows placing an end-effector (or any other link) in the 3D view. The ability to get the inverse kinematics of the associated robot is not implemented yet.

PlanningScene

Allows to get the obstacles used in a running system. It is a ROS service client that calls the get_planning_scene service.

Trajectory

Allows to move the robot along a trajectory. The current use case is to get trajectories with ros2 topic echo /display_planned_path (for example by redirecting the console output with ros2 topic echo /display_planned_path > /tmp/display_planned_path.yaml) and load them with the context-menu of a trajectory in FreeCAD's document tree.

Has a context menu.

Observer

This is an object that listens to changes in the FreeCAD document and shows a green or red dot in the 3D view depending on the value of its Formula property (red if 0 and green otherwise), which must be an expression. The observer can be used to monitor other objects than those created with CROSS.

URDF/Xacro equivalences

The following table shows the (non-trivial) equivalences between URDF- and CROSS features.

CROSS feature URDF/Xacro feature Explanation
Origin property of a joint origin tag of a joint Sets the transform between a joint and its parent
MountedPlacement property of a link origin tag of a link/visual[^1] Sets the transform between the mesh coordinates and the link's origin[^2]
Workcell Xacro file Allows to include other robot descriptions
XacroObject include and macro:* tags Allows including and using one Xacro macro or a URDF
Joint inside a Workcell joint tag Allows to create chains in the Xacro file
RootLink property of a Workcell joint tag between the root link and the first link of the work-cell Adds a joint and the root link to the generated Xacro file if set

[^1]: also the origin tag of a link/collision [^2]: more precisely, the transform between all geometry tags and the link's origin

Clone this wiki locally