ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

The robot frame is usually published by your robot driver which integrates wheel encoder values (or in addition with a gyro/imu) in order to broadcast the relative transformation between odom and base_link. The location of base_linkw.r.t. the robot body is driver specific here.

Options:

  1. You could change the driver code, but you would need to compile from source and update the package manually in the future.
  2. If the driver has the option to change the base_link name, rename base_link and add a static_transform_publisher to your robot launch file in order to create a new base_linkat the rotational center.
  3. Create a new link, e.g. nav_link at the rotational center with a static_transform_publisher in your robot launch file. Configure the navigation stack accordingly (the base frame can be set in the global and local costmap parameters). I haven't tried this option yet. Ideally, planners should adhere to the base frame specification for all internal transformation.

Some drivers are only publishing joint states and utilize a robot_state_publisher to provide the corresponding robot frames from a robot model description, usually a URDF file. Sometimes xacro is utilized to generate URDF files. In that case, you can adjust the robot model in one of the following ways:

  1. Move the current base_link frame to the rotational center and adjust all inherited transformations (children frames) as well.
  2. Choose a different name for the current base_link frame and add a new base_linkat the rotational center (e.g. as a child frame from the old one).
  3. Create a new link, e.g. nav_link at the rotational center. Refer to option 3. above for further comments.

The robot frame is usually published by your robot driver which integrates wheel encoder values (or in addition with a gyro/imu) in order to broadcast the relative transformation between odom and base_link. The location of base_linkw.r.t. the robot body is driver specific here.

Options:

    • You could change the driver code, but you would need to compile from source and update the package manually in the future.
    • If the driver has the option to change the base_link name, rename base_link and add a static_transform_publisher to your robot launch file in order to create a new base_linkat the rotational center.
    • Create a new link, e.g. nav_link at the rotational center with a static_transform_publisher in your robot launch file. Configure the navigation stack accordingly (the base frame can be set in the global and local costmap parameters). I haven't tried this option yet. Ideally, planners should adhere to the base frame specification for in all internal transformation.
transformations.

Some drivers are only publishing joint states and utilize a robot_state_publisher to provide the corresponding robot frames from a robot model description, usually a URDF file. Sometimes xacro is utilized to generate URDF files. In that case, you can adjust the robot model in one of the following ways:

    • Move the current base_link frame to the rotational center and adjust all inherited transformations (children frames) as well.
    • Choose a different name for the current base_link frame and add a new base_linkat the rotational center (e.g. as a child frame from the old one).
    • Create a new link, e.g. nav_link at the rotational center. Refer to option 3. above for further comments.