mteb/BrightProRoboticsRetrieval huggingface dataset:
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#ab3da0c13e080a5e2c8b45f5d278cfa4e)
(const std::string &group, const [ boost::shared_ptr
](../../../api/roscpp_traits/html/classboost_1_1shared__ptr.html) < [
tf::Transformer ](../../../api/tf/html/c++/classtf_1_1Transformer.html) > &tf=
[ boost::shared_ptr
](../../../api/roscpp_traits/html/classboost_1_1shared__ptr.html) < [
tf::Transformer ](../../../api/tf/html/c++/classtf_1_1Transformer.html) >(),
const [ ros::WallDuration
](../../../api/rostime/html/classros_1_1WallDuration.html) &wait_for_servers=
[ ros::WallDuration ](../../../api/rostime/html/classros_1_1WallDuration.html)
())  
|  Construct a client for the [ MoveGroup
](classmoveit_1_1planning__interface_1_1MoveGroup.html "Deprecated Client
interface to access interfaces of the move_group node. ") action for a
particular _group_ .  More...  
  
[ MOVEIT_DEPRECATED
](namespacemoveit_1_1planning__interface.html#a706399608538b81b2936e34817260537)
|  [ MoveGroupInterface
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#a0a5276bac1000beafdccacae43105b67)
(const std::string &group, const [ boost::shared_ptr
](../../../api/roscpp_traits/html/classboost_1_1shared__ptr.html) < [
tf::Transformer ](../../../api/tf/html/c++/classtf_1_1Transformer.html) > &tf,
const [ ros::Duration ](../../../api/rostime/html/classros_1_1Duration.html)
&wait_for_servers)  
|  [ MoveGroupInterface
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#a34459a1d34eb981c4e91d0db0a4132cf)
(const [ MoveGroupInterface
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html) &)=delete  
|  This class owns unique resources (e.g. action clients, threads) and its not
very meaningful to copy. Pass by references, move it, or simply create
multiple instances where required.  More...  
  
|  [ MoveGroupInterface
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#a77cbc5bfc70adaafa656d15c7446aaf5)
( [ MoveGroupInterface
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html) &&other)  
|  [ MOVEIT_STRUCT_FORWARD
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#a306b19b0ad6d9ae01728f1c38202a194)
( [ Plan
* [ Planning Insights for different motion planners and planners with planning adapters ](../planning_adapters/planning_adapters_tutorial.html#planning-insights-for-different-motion-planners-and-planners-with-planning-adapters)
  * [ Warehouse - Persistent Scenes and States ](../persistent_scenes_and_states/persistent_scenes_and_states.html)
    * [ Storage plugin selection ](../persistent_scenes_and_states/persistent_scenes_and_states.html#storage-plugin-selection)
    * [ Connecting to the storage backend ](../persistent_scenes_and_states/persistent_scenes_and_states.html#connecting-to-the-storage-backend)
    * [ Saving/Loading scenes and states ](../persistent_scenes_and_states/persistent_scenes_and_states.html#saving-loading-scenes-and-states)
() const  
|  Get the RobotModel object.  More...  
  
unsigned int  |  [ getVariableCount
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#a92db8965d5c2a93dfd591ed0fe7cc7d1)
() const  
|  Get the number of variables used to describe the state of this group. This
is larger or equal to the number of DOF.  More...  
  
|  [ MoveGroupInterface
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#a1402a7eadad1d4529f541f34b6e03128)
(const [ Options
](structmoveit_1_1planning__interface_1_1MoveGroupInterface_1_1Options.html)
&opt, const [ boost::shared_ptr
](../../../api/roscpp_traits/html/classboost_1_1shared__ptr.html) < [
tf::Transformer ](../../../api/tf/html/c++/classtf_1_1Transformer.html) > &tf=
[ boost::shared_ptr
](../../../api/roscpp_traits/html/classboost_1_1shared__ptr.html) < [
tf::Transformer ](../../../api/tf/html/c++/classtf_1_1Transformer.html) >(),
const [ ros::WallDuration
](../../../api/rostime/html/classros_1_1WallDuration.html) &wait_for_servers=
[ ros::WallDuration ](../../../api/rostime/html/classros_1_1WallDuration.html)
())  
|  Construct a [ MoveGroupInterface
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html "Client class
to conveniently use the ROS interfaces provided by the move_group node. ")
instance call using a specified set of options _opt_ .  More...  
  
[ MOVEIT_DEPRECATED
](namespacemoveit_1_1planning__interface.html#a706399608538b81b2936e34817260537)
|  [ MoveGroupInterface
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#a97641cb3ef0ec41b73b641b65449d0cb)
(const [ Options
](structmoveit_1_1planning__interface_1_1MoveGroupInterface_1_1Options.html)
&opt, const [ boost::shared_ptr
](../../../api/roscpp_traits/html/classboost_1_1shared__ptr.html) < [
tf::Transformer ](../../../api/tf/html/c++/classtf_1_1Transformer.html) > &tf,
const [ ros::Duration ](../../../api/rostime/html/classros_1_1Duration.html)
&wait_for_servers)  
|  [ MoveGroupInterface
* [ Getting Started ](../getting_started/getting_started.html)
    * [ Install ROS and Catkin ](../getting_started/getting_started.html#install-ros-and-catkin)
    * [ Create a Catkin Workspace ](../getting_started/getting_started.html#create-a-catkin-workspace)
    * [ Download MoveIt Source ](../getting_started/getting_started.html#download-moveit-source)
    * [ Download Example Code ](../getting_started/getting_started.html#download-example-code)
    * [ Build your Catkin Workspace ](../getting_started/getting_started.html#build-your-catkin-workspace)
    * [ Next Step ](../getting_started/getting_started.html#next-step)
  * [ MoveIt Quickstart in RViz ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html)
    * [ Getting Started ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#getting-started)
    * [ Step 1: Launch the Demo and Configure the Plugin ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#step-1-launch-the-demo-and-configure-the-plugin)
    * [ Step 2: Play with the Visualized Robots ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#step-2-play-with-the-visualized-robots)
    * [ Step 3: Interact with the Panda ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#step-3-interact-with-the-panda)
      * [ Moving into collision ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#moving-into-collision)
      * [ Moving out of Reachable Workspace ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#moving-out-of-reachable-workspace)
      * [ Moving Joints or in Null Space ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#moving-joints-or-in-null-space)
    * [ Step 4: Use Motion Planning with the Panda ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#step-4-use-motion-planning-with-the-panda)
      * [ Choosing Specific Start/Goal States ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#choosing-specific-start-goal-states)
      * [ Introspecting Trajectory Waypoints ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#introspecting-trajectory-waypoints)
      * [ Plan Cartesian motions ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#plan-cartesian-motions)
      * [ Executing Trajectories, Adjusting Speed ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#executing-trajectories-adjusting-speed)
    * [ Next Steps ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#next-steps)
      * [ RViz Visual Tools ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#rviz-visual-tools)
      * [ Saving Your Configuration ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#saving-your-configuration)
      * [ Next Tutorials ](../quickstart_in_rviz/quickstart_in_rviz_tutorial.html#next-tutorials)
* [ moveit ](namespacemoveit.html)
  * [ planning_interface ](namespacemoveit_1_1planning__interface.html)
  * [ MoveGroupInterface ](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html)
  * [ Plan ](structmoveit_1_1planning__interface_1_1MoveGroupInterface_1_1Plan.html)
* Move Group C++ Interface 
    * Getting Started 
    * Running the Code 
    * Expected Output 
    * The Entire Code 
      * Setup 
      * Visualization 
      * Getting Basic Information 
      * Start the demo 
      * Planning to a Pose goal 
      * Visualizing plans 
      * Moving to a pose goal 
      * Planning to a joint-space goal 
      * Planning with Path Constraints 
      * Enforce Planning in Joint Space 
      * Cartesian Paths 
      * Adding objects to the environment 
      * Attaching objects to the robot 
      * Detaching and Removing Objects 
    * The Launch File 
    * A Note on Setting Tolerances 
  * [ Move Group Python Interface ](../move_group_python_interface/move_group_python_interface_tutorial.html)
    * [ Getting Started ](../move_group_python_interface/move_group_python_interface_tutorial.html#getting-started)
    * [ Start RViz and MoveGroup node ](../move_group_python_interface/move_group_python_interface_tutorial.html#start-rviz-and-movegroup-node)
    * [ Expected Output ](../move_group_python_interface/move_group_python_interface_tutorial.html#expected-output)
    * [ The Entire Code ](../move_group_python_interface/move_group_python_interface_tutorial.html#the-entire-code)
      * [ Getting Basic Information ](../move_group_python_interface/move_group_python_interface_tutorial.html#getting-basic-information)
      * [ Planning to a Joint Goal ](../move_group_python_interface/move_group_python_interface_tutorial.html#planning-to-a-joint-goal)
      * [ Planning to a Pose Goal ](../move_group_python_interface/move_group_python_interface_tutorial.html#planning-to-a-pose-goal)
      * [ Cartesian Paths ](../move_group_python_interface/move_group_python_interface_tutorial.html#cartesian-paths)
      * [ Displaying a Trajectory ](../move_group_python_interface/move_group_python_interface_tutorial.html#displaying-a-trajectory)
      * [ Executing a Plan ](../move_group_python_interface/move_group_python_interface_tutorial.html#executing-a-plan)
      * [ Adding Objects to the Planning Scene ](../move_group_python_interface/move_group_python_interface_tutorial.html#adding-objects-to-the-planning-scene)
      * [ Ensuring Collision Updates Are Received ](../move_group_python_interface/move_group_python_interface_tutorial.html#ensuring-collision-updates-are-received)
      * [ Attaching Objects to the Robot ](../move_group_python_interface/move_group_python_interface_tutorial.html#attaching-objects-to-the-robot)
      * [ Detaching Objects from the Robot ](../move_group_python_interface/move_group_python_interface_tutorial.html#detaching-objects-from-the-robot)
      * [ Removing Objects from the Planning Scene ](../move_group_python_interface/move_group_python_interface_tutorial.html#removing-objects-from-the-planning-scene)
    * [ The Launch File ](../move_group_python_interface/move_group_python_interface_tutorial.html#the-launch-file)
  * [ MoveIt Commander Scripting ](../moveit_commander_scripting/moveit_commander_scripting_tutorial.html)
    * [ Getting Started ](../moveit_commander_scripting/moveit_commander_scripting_tutorial.html#getting-started)
* [ move_group_interface ](dir_86133b455f0071bfbc47e5fc4156271f.html)
  * [ include ](dir_3d22a3d18732584a197af2401e43fb95.html)
  * [ moveit ](dir_72c55768156a02b8ccde1113e4a6e412.html)
  * [ move_group_interface ](dir_fb80dfd8cc6e1dfc2d52978768ba8b2e.html)
* [ Starting RViz and the Command Line Tool ](../moveit_commander_scripting/moveit_commander_scripting_tutorial.html#starting-rviz-and-the-command-line-tool)
    * [ Using the MoveIt Commander Command Line Tool ](../moveit_commander_scripting/moveit_commander_scripting_tutorial.html#using-the-moveit-commander-command-line-tool)
](structmoveit_1_1planning__interface_1_1MoveGroupInterface_1_1Plan.html)
&plan)  
|  Compute a motion plan that takes the group declared in the constructor from
the current state to the specified target. No execution is performed. The
resulting plan is stored in _plan_ .  More...  
  
[ MoveItErrorCode
](classmoveit_1_1planning__interface_1_1MoveItErrorCode.html) |  [
asyncExecute
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#a07227c4302a2a4d423ba413bde4deab7)
(const [ Plan
](structmoveit_1_1planning__interface_1_1MoveGroupInterface_1_1Plan.html) & [
plan
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#ad72e3d9367374e388546c8e81f26035a)
)  
|  Given a _plan_ , execute it without waiting for completion. Return true on
success.  More...  
  
[ MoveItErrorCode
](classmoveit_1_1planning__interface_1_1MoveItErrorCode.html) |  [ execute
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#add236df4ab9ba7b7011ec53f8aa9c026)
(const [ Plan
](structmoveit_1_1planning__interface_1_1MoveGroupInterface_1_1Plan.html) & [
plan
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#ad72e3d9367374e388546c8e81f26035a)
)  
|  Given a _plan_ , execute it while waiting for completion. Return true on
success.  More...  
  
double  |  [ computeCartesianPath
](classmoveit_1_1planning__interface_1_1MoveGroupInterface.html#afd29c4dc55b10564102cf393cd38c71d)
(const std::vector< [ geometry_msgs::Pose
](../../../api/tf/html/c++/namespacetf.html#af31f272a1879787c24c3decb07cdb361)
> &waypoints, double eef_step, double jump_threshold,
moveit_msgs::RobotTrajectory & [ trajectory
](../../../api/moveit_core/html/test__time__parameterization_8cpp.html#aff2c23e0aa6bda064cbd69854f36e75f)
, bool avoid_collisions=true, moveit_msgs::MoveItErrorCodes *error_code=NULL)  
|  Compute a Cartesian path that follows specified waypoints with a step size
of at most _eef_step_ meters between end effector configurations of
consecutive points in the result _trajectory_ . The reference frame for the
* [ MoveIt IKFast ](../ikfast/ikfast_tutorial.html#moveit-ikfast)
    * [ Getting Started ](../ikfast/ikfast_tutorial.html#getting-started)
    * [ Creating the IKFast MoveIt plugin ](../ikfast/ikfast_tutorial.html#creating-the-ikfast-moveit-plugin)
      * [ Select IK Type ](../ikfast/ikfast_tutorial.html#select-ik-type)
      * [ Choose Planning Group ](../ikfast/ikfast_tutorial.html#choose-planning-group)
      * [ Generate IKFast MoveIt plugin ](../ikfast/ikfast_tutorial.html#generate-ikfast-moveit-plugin)
    * [ Usage ](../ikfast/ikfast_tutorial.html#usage)
      * [ Test the Plugin ](../ikfast/ikfast_tutorial.html#test-the-plugin)
    * [ Updating the Plugin ](../ikfast/ikfast_tutorial.html#updating-the-plugin)
    * [ Tweaking the creation process ](../ikfast/ikfast_tutorial.html#tweaking-the-creation-process)
  * [ TRAC-IK Kinematics Solver ](../trac_ik/trac_ik_tutorial.html)
    * [ Install ](../trac_ik/trac_ik_tutorial.html#install)
    * [ Usage ](../trac_ik/trac_ik_tutorial.html#usage)
  * [ OPW Kinematics Solver for Industrial Manipulators ](../opw_kinematics/opw_kinematics_tutorial.html)
    * [ Intro ](../opw_kinematics/opw_kinematics_tutorial.html#intro)
    * [ Purpose ](../opw_kinematics/opw_kinematics_tutorial.html#purpose)
    * [ Installation ](../opw_kinematics/opw_kinematics_tutorial.html#installation)
    * [ Usage ](../opw_kinematics/opw_kinematics_tutorial.html#usage)
    * [ Sharing OPW descriptions ](../opw_kinematics/opw_kinematics_tutorial.html#sharing-opw-descriptions)
  * [ Multiple Robot Arms ](../multiple_robot_arms/multiple_robot_arms_tutorial.html)
    * [ Introduction ](../multiple_robot_arms/multiple_robot_arms_tutorial.html#introduction)
    * [ Getting Started ](../multiple_robot_arms/multiple_robot_arms_tutorial.html#getting-started)
    * [ Step 1: Build the Xacro/URDF model of the multiple arms ](../multiple_robot_arms/multiple_robot_arms_tutorial.html#step-1-build-the-xacro-urdf-model-of-the-multiple-arms)
    * [ Step 2: Prepare the MoveIt config package using MoveIt Setup Assistant ](../multiple_robot_arms/multiple_robot_arms_tutorial.html#step-2-prepare-the-moveit-config-package-using-moveit-setup-assistant)
    * [ Step 3: Write the ROS controllers configuration and launch files for the multiple arms ](../multiple_robot_arms/multiple_robot_arms_tutorial.html#step-3-write-the-ros-controllers-configuration-and-launch-files-for-the-multiple-arms)
    * [ Step 4: Integrate the simulation in Gazebo with MoveIt motion planning ](../multiple_robot_arms/multiple_robot_arms_tutorial.html#step-4-integrate-the-simulation-in-gazebo-with-moveit-motion-planning)
    * [ Step 5: Plan arms motions with MoveIt Move Group Interface. ](../multiple_robot_arms/multiple_robot_arms_tutorial.html#step-5-plan-arms-motions-with-moveit-move-group-interface)
* [ Contributing to ROS 2 Documentation ](../../../The-ROS2-Project/Contributing/Contributing-To-ROS-2-Documentation.html)
    * [ Features Status ](../../../The-ROS2-Project/Features.html)
    * [ Feature Ideas ](../../../The-ROS2-Project/Feature-Ideas.html)
    * [ Roadmap ](../../../The-ROS2-Project/Roadmap.html)
    * [ ROSCon Talks ](../../../The-ROS2-Project/ROSCon-Content.html)
    * [ Project Governance ](../../../The-ROS2-Project/Governance.html)
      * [ ROS 2 Technical Steering Committee Charter ](../../../The-ROS2-Project/Governance/ROS2-TSC-Charter.html)
      * [ ROS 2 TSC applicant intake process ](../../../The-ROS2-Project/Governance/ROS2-TSC-Intake-process.html)
      * [ About Working Groups ](../../../The-ROS2-Project/Governance/Working-Groups.html)
      * [ How to Start a Community Working Group ](../../../The-ROS2-Project/Governance/How-To-Start-A-Community-Working-Group.html)
    * [ Marketing ](../../../The-ROS2-Project/Marketing.html)
    * [ Metrics ](../../../The-ROS2-Project/Metrics.html)
  * [ API Documentation ](../../../API-Docs.html)
  * [ Related Projects ](../../../Related-Projects.html)
    * [ Intel ROS 2 Projects ](../../../Related-Projects/Intel-ROS2-Projects.html)
    * [ NVIDIA ROS 2 Projects ](../../../Related-Projects/Nvidia-ROS2-Projects.html)
  * [ Glossary ](../../../Glossary.html)
  * [ Citations ](../../../Citations.html)

__ [ ROS 2 Documentation: Humble ](../../../index.html)

  * [ ](../../../index.html)
  * [ Tutorials ](../../../Tutorials.html)
  * [ Intermediate ](../../Intermediate.html)
  * [ ` tf2  ` ](Tf2-Main.html)
  * Writing a broadcaster (C++) 
  * [ Edit on GitHub ](https://github.com/ros2/ros2_documentation/blob/humble/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Cpp.rst)

* * *

**You're reading the documentation for an older, but still supported, version
of ROS 2. For information on the latest version, please have a look at[ Iron
](../../../../iron/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-
Cpp.html) . **

#  Writing a broadcaster (C++)  ï

**Goal:** Learn how to broadcast the state of a robot to tf2.

**Tutorial level:** Intermediate
* [ Code  ](/introlab/rtabmap_ros)
  * [ Issues  428  ](/introlab/rtabmap_ros/issues)
  * [ Pull requests  0  ](/introlab/rtabmap_ros/pulls)
  * [ Actions  ](/introlab/rtabmap_ros/actions)
  * [ Projects  0  ](/introlab/rtabmap_ros/projects)
  * [ Wiki  ](/introlab/rtabmap_ros/wiki)
  * [ Security  ](/introlab/rtabmap_ros/security)
  * [ Insights  ](/introlab/rtabmap_ros/pulse)
* [ Code  ](/introlab/rtabmap_ros)
  * [ Issues  ](/introlab/rtabmap_ros/issues)
  * [ Pull requests  ](/introlab/rtabmap_ros/pulls)
  * [ Actions  ](/introlab/rtabmap_ros/actions)
  * [ Projects  ](/introlab/rtabmap_ros/projects)
  * [ Wiki  ](/introlab/rtabmap_ros/wiki)
  * [ Security  ](/introlab/rtabmap_ros/security)
  * [ Insights  ](/introlab/rtabmap_ros/pulse)
* [ Launch ](../Launch/Launch-Main.html)
        * [ Creating a launch file ](../Launch/Creating-Launch-Files.html)
        * [ Integrating launch files into ROS 2 packages ](../Launch/Launch-system.html)
        * [ Using substitutions ](../Launch/Using-Substitutions.html)
        * [ Using event handlers ](../Launch/Using-Event-Handlers.html)
        * [ Managing large projects ](../Launch/Using-ROS2-Launch-For-Large-Projects.html)
      * [ ` tf2  ` ](Tf2-Main.html)
        * [ Introducing ` tf2  ` ](Introduction-To-Tf2.html)
        * [ Writing a static broadcaster (Python) ](Writing-A-Tf2-Static-Broadcaster-Py.html)
        * [ Writing a static broadcaster (C++) ](Writing-A-Tf2-Static-Broadcaster-Cpp.html)
        * [ Writing a broadcaster (Python) ](Writing-A-Tf2-Broadcaster-Py.html)
        * Writing a broadcaster (C++) 
        * [ Writing a listener (Python) ](Writing-A-Tf2-Listener-Py.html)
        * [ Writing a listener (C++) ](Writing-A-Tf2-Listener-Cpp.html)
        * [ Adding a frame (Python) ](Adding-A-Frame-Py.html)
        * [ Adding a frame (C++) ](Adding-A-Frame-Cpp.html)
        * [ Using time (Python) ](Learning-About-Tf2-And-Time-Py.html)
        * [ Using time (C++) ](Learning-About-Tf2-And-Time-Cpp.html)
        * [ Traveling in time (Python) ](Time-Travel-With-Tf2-Py.html)
        * [ Traveling in time (C++) ](Time-Travel-With-Tf2-Cpp.html)
        * [ Debugging ](Debugging-Tf2-Problems.html)
        * [ Quaternion fundamentals ](Quaternion-Fundamentals.html)
        * [ Using stamped datatypes with ` tf2_ros::MessageFilter  ` ](Using-Stamped-Datatypes-With-Tf2-Ros-MessageFilter.html)
      * [ Testing ](../Testing/Testing-Main.html)
        * [ Running Tests in ROS 2 from the Command Line ](../Testing/CLI.html)
        * [ Writing Basic Tests with C++ with GTest ](../Testing/Cpp.html)
        * [ Writing Basic Tests with Python ](../Testing/Python.html)
      * [ URDF ](../URDF/URDF-Main.html)
        * [ Building a visual robot model from scratch ](../URDF/Building-a-Visual-Robot-Model-with-URDF-from-Scratch.html)
        * [ Building a movable robot model ](../URDF/Building-a-Movable-Robot-Model-with-URDF.html)
        * [ Adding physical and collision properties ](../URDF/Adding-Physical-and-Collision-Properties-to-a-URDF-Model.html)
        * [ Using Xacro to clean up your code ](../URDF/Using-Xacro-to-Clean-Up-a-URDF-File.html)
        * [ Using URDF with ` robot_state_publisher  ` ](../URDF/Using-URDF-with-Robot-State-Publisher.html)
        * [ Generating an URDF File ](../URDF/Exporting-an-URDF-File.html)
      * [ RViz ](../RViz/RViz-Main.html)
        * [ RViz User Guide ](../RViz/RViz-User-Guide/RViz-User-Guide.html)
        * [ Building a Custom RViz Display ](../RViz/RViz-Custom-Display/RViz-Custom-Display.html)
    * [ Advanced ](../../Advanced.html)
      * [ Enabling topic statistics (C++) ](../../Advanced/Topic-Statistics-Tutorial/Topic-Statistics-Tutorial.html)
      * [ Using Fast DDS Discovery Server as discovery protocol [community-contributed] ](../../Advanced/Discovery-Server/Discovery-Server.html)
* [ Children’s & young adult fiction & true stories ](https://www.bookswagon.com/childrens-young-adult-fiction-true-stories-books)
      * [ Children’s & young adult general non-fiction ](https://www.bookswagon.com/childrens-young-adult-general-nonfiction-books)
      * [ Children’s & young adult poetry, anthologies, annu ](https://www.bookswagon.com/childrens-young-adult-poetry-anthologies-annuals-books)
      * [ Children’s & young adult reference material ](https://www.bookswagon.com/childrens-young-adult-reference-material-books)
      * [ Children’s stationery & miscellaneous items ](https://www.bookswagon.com/childrens-stationery-miscellaneous-items-books)
      * [ Educational material ](https://www.bookswagon.com/educational-material-books)
      * [ Personal & social issues ](https://www.bookswagon.com/personal-social-issues-books)
      * [ Picture books, activity books & early learning material ](https://www.bookswagon.com/picture-books-activity-books-early-learning-material-books)
* [ Astronomy, space & time ](https://www.bookswagon.com/astronomy-space-time-books)
        * [ Biology, life sciences ](https://www.bookswagon.com/biology-life-sciences-books)
        * [ Chemistry ](https://www.bookswagon.com/chemistry-books)
        * [ Mathematics ](https://www.bookswagon.com/mathematics-books)
        * [ Physics ](https://www.bookswagon.com/physics-books)
        * [ Science: general issues ](https://www.bookswagon.com/science-general-issues-books)