# embeddings_queue

created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139204-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 12164, "chroma:document": "For now, we will have to stop here since we will need to set up a lot more components to actually start simulating our robot in Gazebo. We will be coming back to this project during the course of these setup guides, and we will eventually see our robot move in a virtual environment once we get to the simulation sections. The major components that are missing from this work are the simulation plugins required to mimic your robot controllers. We will introduce those and add them to this URDF in the appropriate section.\n\n## Conclusion\uf0c1\n\nAnd that\u2019s it. In this tutorial, you have successfully created a URDF for a simple differential drive robot. You have also set up a ROS 2 project that launches a robot publisher node, which then uses your URDF to publish the robot\u2019s transforms. We have also used RViz to visualize our robot to verify whether our URDF is correct. Lastly, we have added in some physical properties to our URDF in order to prepare it for simulation."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139218-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 13136, "chroma:document": "Feel free to use this tutorial as a template for your own robot. Remember that your main goal is to publish the correct transforms from your base_link up to your sensor_frames. Once these have been setup, then you may proceed to our other setup guides.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: laser_link\n\n```\n\nsudo\n\napt\n\ninstall\n\nros-<ros2-distro>-joint-state-publisher-gui\n\nsudo\n\napt\n\ninstall\n\nros-<ros2-distro>-xacro\n\n```\n\nLanguage: unknown\n\nFile: sam_bot\n\n```\n\nros2\n\npkg\n\ncreate\n\n--build-type\n\nament_cmake\n\nsam_bot_description\n\n```\n\nLanguage: unknown\n\nFile: src/description\n\n```\n\n1\n\n<?xml version=\"1.0\"?>\n\n2\n\n<robot\n\nname=\n\n\"sam_bot\"\n\nxmlns:xacro=\n\n\"http://ros.org/wiki/xacro\"\n\n>\n\n3\n\n4\n\n5\n\n6\n\n</robot>\n\n```\n\nLanguage: unknown\n\nFile: <robot>\n\n```\n\n4\n\n<!-- Define robot constants -->\n\n5\n\n<xacro:property\n\nname=\n\n\"base_width\"\n\nvalue=\n\n\"0.31\"\n\n/>\n\n6\n\n<xacro:property\n\nname=\n\n\"base_length\"\n\nvalue=\n\n\"0.42\"\n\n/>\n\n7\n\n<xacro:property\n\nname=\n\n\"base_height\"\n\nvalue=\n\n\"0.18\"\n\n/>\n\n8\n\n9\n\n<xacro:property\n\nname=\n\n\"wheel_radius\""}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139236-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 14097, "chroma:document": "\"0.18\"\n\n/>\n\n8\n\n9\n\n<xacro:property\n\nname=\n\n\"wheel_radius\"\n\nvalue=\n\n\"0.10\"\n\n/>\n\n10\n\n<xacro:property\n\nname=\n\n\"wheel_width\"\n\nvalue=\n\n\"0.04\"\n\n/>\n\n11\n\n<xacro:property\n\nname=\n\n\"wheel_ygap\"\n\nvalue=\n\n\"0.025\"\n\n/>\n\n12\n\n<xacro:property\n\nname=\n\n\"wheel_zoff\"\n\nvalue=\n\n\"0.05\"\n\n/>\n\n13\n\n<xacro:property\n\nname=\n\n\"wheel_xoff\"\n\nvalue=\n\n\"0.12\"\n\n/>\n\n14\n\n15\n\n<xacro:property\n\nname=\n\n\"caster_xoff\"\n\nvalue=\n\n\"0.14\"\n\n/>\n\n```\n\nLanguage: unknown\n\nFile: <visual>\n\n```\n\n17\n\n<!-- Robot Base -->\n\n18\n\n<link\n\nname=\n\n\"base_link\"\n\n>\n\n19\n\n<visual>\n\n20\n\n<geometry>\n\n21\n\n<box\n\nsize=\n\n\"${base_length} ${base_width} ${base_height}\"\n\n/>\n\n22\n\n</geometry>\n\n23\n\n<material\n\nname=\n\n\"Cyan\"\n\n>\n\n24\n\n<color\n\nrgba=\n\n\"0 1.0 1.0 1.0\"\n\n/>\n\n25\n\n</material>\n\n26\n\n</visual>\n\n27\n\n</link>\n\n```\n\nLanguage: unknown\n\nFile: wheel_zoff\n\n```\n\n29\n\n<!-- Robot Footprint -->\n\n30\n\n<link\n\nname=\n\n\"base_footprint\"\n\n/>\n\n31\n\n32\n\n<joint\n\nname=\n\n\"base_joint\"\n\ntype=\n\n\"fixed\"\n\n>\n\n33\n\n<parent\n\nlink=\n\n\"base_link\"\n\n/>\n\n34\n\n<child\n\nlink=\n\n\"base_footprint\"\n\n/>\n\n35\n\n<origin\n\nxyz="}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13924a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 15035, "chroma:document": "/>\n\n34\n\n<child\n\nlink=\n\n\"base_footprint\"\n\n/>\n\n35\n\n<origin\n\nxyz=\n\n\"0.0 0.0 ${-(wheel_radius+wheel_zoff)}\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n36\n\n</joint>\n\n```\n\nLanguage: unknown\n\nFile: xacro:wheel\n\n```\n\n38\n\n<!-- Wheels -->\n\n39\n\n<xacro:macro\n\nname=\n\n\"wheel\"\n\nparams=\n\n\"prefix x_reflect y_reflect\"\n\n>\n\n40\n\n<link\n\nname=\n\n\"${prefix}_link\"\n\n>\n\n41\n\n<visual>\n\n42\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"${pi/2} 0 0\"\n\n/>\n\n43\n\n<geometry>\n\n44\n\n<cylinder\n\nradius=\n\n\"${wheel_radius}\"\n\nlength=\n\n\"${wheel_width}\"\n\n/>\n\n45\n\n</geometry>\n\n46\n\n<material\n\nname=\n\n\"Gray\"\n\n>\n\n47\n\n<color\n\nrgba=\n\n\"0.5 0.5 0.5 1.0\"\n\n/>\n\n48\n\n</material>\n\n49\n\n</visual>\n\n50\n\n</link>\n\n51\n\n52\n\n<joint\n\nname=\n\n\"${prefix}_joint\"\n\ntype=\n\n\"continuous\"\n\n>\n\n53\n\n<parent\n\nlink=\n\n\"base_link\"\n\n/>\n\n54\n\n<child\n\nlink=\n\n\"${prefix}_link\"\n\n/>\n\n55\n\n<origin\n\nxyz=\n\n\"${x_reflect*wheel_xoff} ${y_reflect*(base_width/2+wheel_ygap)} ${-wheel_zoff}\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n56\n\n<axis\n\nxyz=\n\n\"0 1 0\"\n\n/>\n\n57\n\n</joint>\n\n58\n\n</xacro:macro>\n\n59\n\n60\n\n<xacro:wheel\n\nprefix=\n\n\"drivewhl_l\"\n\nx_reflect=\n\n\"-1\"\n\ny_reflect=\n\n\"1\""}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13925e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 16000, "chroma:document": "prefix=\n\n\"drivewhl_l\"\n\nx_reflect=\n\n\"-1\"\n\ny_reflect=\n\n\"1\"\n\n/>\n\n61\n\n<xacro:wheel\n\nprefix=\n\n\"drivewhl_r\"\n\nx_reflect=\n\n\"-1\"\n\ny_reflect=\n\n\"-1\"\n\n/>\n\n```\n\nLanguage: unknown\n\nFile: base_link\n\n```\n\n63\n\n<!-- Caster Wheel -->\n\n64\n\n<link\n\nname=\n\n\"front_caster\"\n\n>\n\n65\n\n<visual>\n\n66\n\n<geometry>\n\n67\n\n<sphere\n\nradius=\n\n\"${(wheel_radius+wheel_zoff-(base_height/2))}\"\n\n/>\n\n68\n\n</geometry>\n\n69\n\n<material\n\nname=\n\n\"Cyan\"\n\n>\n\n70\n\n<color\n\nrgba=\n\n\"0 1.0 1.0 1.0\"\n\n/>\n\n71\n\n</material>\n\n72\n\n</visual>\n\n73\n\n</link>\n\n74\n\n75\n\n<joint\n\nname=\n\n\"caster_joint\"\n\ntype=\n\n\"fixed\"\n\n>\n\n76\n\n<parent\n\nlink=\n\n\"base_link\"\n\n/>\n\n77\n\n<child\n\nlink=\n\n\"front_caster\"\n\n/>\n\n78\n\n<origin\n\nxyz=\n\n\"${caster_xoff} 0.0 ${-(base_height/2)}\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n79\n\n</joint>\n\n```\n\nLanguage: unknown\n\nFile: <buildtool_depend>\n\n```\n\n<exec_depend>\n\njoint_state_publisher\n\n</exec_depend>\n\n<exec_depend>\n\njoint_state_publisher_gui\n\n</exec_depend>\n\n<exec_depend>\n\nrobot_state_publisher\n\n</exec_depend>\n\n<exec_depend>\n\nrviz\n\n</exec_depend>\n\n<exec_depend>\n\nxacro\n\n</exec_depend>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139272-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 16962, "chroma:document": "</exec_depend>\n\n<exec_depend>\n\nxacro\n\n</exec_depend>\n\n```\n\nLanguage: unknown\n\nFile: display.launch.py\n\n```\n\nimport\n\nlaunch\n\nfrom\n\nlaunch.substitutions\n\nimport\n\nCommand\n\n,\n\nLaunchConfiguration\n\nimport\n\nlaunch_ros\n\nimport\n\nos\n\ndef\n\ngenerate_launch_description\n\n():\n\npkg_share\n\n=\n\nlaunch_ros\n\n.\n\nsubstitutions\n\n.\n\nFindPackageShare\n\n(\n\npackage\n\n=\n\n'sam_bot_description'\n\n)\n\n.\n\nfind\n\n(\n\n'sam_bot_description'\n\n)\n\ndefault_model_path\n\n=\n\nos\n\n.\n\npath\n\n.\n\njoin\n\n(\n\npkg_share\n\n,\n\n'src/description/sam_bot_description.urdf'\n\n)\n\ndefault_rviz_config_path\n\n=\n\nos\n\n.\n\npath\n\n.\n\njoin\n\n(\n\npkg_share\n\n,\n\n'rviz/urdf_config.rviz'\n\n)\n\nrobot_state_publisher_node\n\n=\n\nlaunch_ros\n\n.\n\nactions\n\n.\n\nNode\n\n(\n\npackage\n\n=\n\n'robot_state_publisher'\n\n,\n\nexecutable\n\n=\n\n'robot_state_publisher'\n\n,\n\nparameters\n\n=\n\n[{\n\n'robot_description'\n\n:\n\nCommand\n\n([\n\n'xacro '\n\n,\n\nLaunchConfiguration\n\n(\n\n'model'\n\n)])}]\n\n)\n\njoint_state_publisher_node\n\n=\n\nlaunch_ros\n\n.\n\nactions\n\n.\n\nNode\n\n(\n\npackage\n\n=\n\n'joint_state_publisher'\n\n,\n\nexecutable\n\n=\n\n'joint_state_publisher'"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139286-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 17941, "chroma:document": ",\n\nexecutable\n\n=\n\n'joint_state_publisher'\n\n,\n\nname\n\n=\n\n'joint_state_publisher'\n\n,\n\nparameters\n\n=\n\n[{\n\n'robot_description'\n\n:\n\nCommand\n\n([\n\n'xacro '\n\n,\n\ndefault_model_path\n\n])}],\n\ncondition\n\n=\n\nlaunch\n\n.\n\nconditions\n\n.\n\nUnlessCondition\n\n(\n\nLaunchConfiguration\n\n(\n\n'gui'\n\n))\n\n)\n\njoint_state_publisher_gui_node\n\n=\n\nlaunch_ros\n\n.\n\nactions\n\n.\n\nNode\n\n(\n\npackage\n\n=\n\n'joint_state_publisher_gui'\n\n,\n\nexecutable\n\n=\n\n'joint_state_publisher_gui'\n\n,\n\nname\n\n=\n\n'joint_state_publisher_gui'\n\n,\n\ncondition\n\n=\n\nlaunch\n\n.\n\nconditions\n\n.\n\nIfCondition\n\n(\n\nLaunchConfiguration\n\n(\n\n'gui'\n\n))\n\n)\n\nrviz_node\n\n=\n\nlaunch_ros\n\n.\n\nactions\n\n.\n\nNode\n\n(\n\npackage\n\n=\n\n'rviz2'\n\n,\n\nexecutable\n\n=\n\n'rviz2'\n\n,\n\nname\n\n=\n\n'rviz2'\n\n,\n\noutput\n\n=\n\n'screen'\n\n,\n\narguments\n\n=\n\n[\n\n'-d'\n\n,\n\nLaunchConfiguration\n\n(\n\n'rvizconfig'\n\n)],\n\n)\n\nreturn\n\nlaunch\n\n.\n\nLaunchDescription\n\n([\n\nlaunch\n\n.\n\nactions\n\n.\n\nDeclareLaunchArgument\n\n(\n\nname\n\n=\n\n'gui'\n\n,\n\ndefault_value\n\n=\n\n'True'\n\n,\n\ndescription\n\n=\n\n'Flag to enable joint_state_publisher_gui'\n\n),\n\nlaunch\n\n.\n\nactions\n\n."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13929a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 18932, "chroma:document": "),\n\nlaunch\n\n.\n\nactions\n\n.\n\nDeclareLaunchArgument\n\n(\n\nname\n\n=\n\n'model'\n\n,\n\ndefault_value\n\n=\n\ndefault_model_path\n\n,\n\ndescription\n\n=\n\n'Absolute path to robot urdf file'\n\n),\n\nlaunch\n\n.\n\nactions\n\n.\n\nDeclareLaunchArgument\n\n(\n\nname\n\n=\n\n'rvizconfig'\n\n,\n\ndefault_value\n\n=\n\ndefault_rviz_config_path\n\n,\n\ndescription\n\n=\n\n'Absolute path to rviz config file'\n\n),\n\njoint_state_publisher_node\n\n,\n\njoint_state_publisher_gui_node\n\n,\n\nrobot_state_publisher_node\n\n,\n\nrviz_node\n\n])\n\n```\n\nLanguage: unknown\n\nFile: urdf_config.rviz\n\n```\n\nPanels:\n\nClass:\n\nrviz_common/Displays\n\nHelp\n\nHeight:\n\n78\n\nName:\n\nDisplays\n\nProperty\n\nTree\n\nWidget:\n\nExpanded:\n\n/Global\n\nOptions1\n\n/Status1\n\n/RobotModel1/Links1\n\n/TF1\n\nSplitter\n\nRatio:\n\n0\n\n.5\n\nTree\n\nHeight:\n\n557\n\nVisualization\n\nManager:\n\nClass:\n\n\"\"\n\nDisplays:\n\nAlpha:\n\n0\n\n.5\n\nCell\n\nSize:\n\n1\n\nClass:\n\nrviz_default_plugins/Grid\n\nColor:\n\n160\n\n;\n\n160\n\n;\n\n164\n\nEnabled:\n\ntrue\n\nName:\n\nGrid\n\nAlpha:\n\n0\n\n.6\n\nClass:\n\nrviz_default_plugins/RobotModel\n\nDescription\n\nTopic:\n\nDepth:\n\n5\n\nDurability\n\nPolicy:\n\nVolatile"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1392ae-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 19887, "chroma:document": "Description\n\nTopic:\n\nDepth:\n\n5\n\nDurability\n\nPolicy:\n\nVolatile\n\nHistory\n\nPolicy:\n\nKeep\n\nLast\n\nReliability\n\nPolicy:\n\nReliable\n\nValue:\n\n/robot_description\n\nEnabled:\n\ntrue\n\nName:\n\nRobotModel\n\nVisual\n\nEnabled:\n\ntrue\n\nClass:\n\nrviz_default_plugins/TF\n\nEnabled:\n\ntrue\n\nName:\n\nTF\n\nMarker\n\nScale:\n\n0\n\n.3\n\nShow\n\nArrows:\n\ntrue\n\nShow\n\nAxes:\n\ntrue\n\nShow\n\nNames:\n\ntrue\n\nEnabled:\n\ntrue\n\nGlobal\n\nOptions:\n\nBackground\n\nColor:\n\n48\n\n;\n\n48\n\n;\n\n48\n\nFixed\n\nFrame:\n\nbase_link\n\nFrame\n\nRate:\n\n30\n\nName:\n\nroot\n\nTools:\n\nClass:\n\nrviz_default_plugins/Interact\n\nHide\n\nInactive\n\nObjects:\n\ntrue\n\nClass:\n\nrviz_default_plugins/MoveCamera\n\nClass:\n\nrviz_default_plugins/Select\n\nClass:\n\nrviz_default_plugins/FocusCamera\n\nClass:\n\nrviz_default_plugins/Measure\n\nLine\n\ncolor:\n\n128\n\n;\n\n128\n\n;\n\n0\n\nTransformation:\n\nCurrent:\n\nClass:\n\nrviz_default_plugins/TF\n\nValue:\n\ntrue\n\nViews:\n\nCurrent:\n\nClass:\n\nrviz_default_plugins/Orbit\n\nName:\n\nCurrent\n\nView\n\nTarget\n\nFrame:\n\n<Fixed\n\nFrame>\n\nValue:\n\nOrbit\n\n(\n\nrviz\n\n)\n\nSaved:\n\n~\n\n```\n\nLanguage: unknown\n\nFile: if(BUILD_TESTING)"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1392cc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 20847, "chroma:document": ")\n\nSaved:\n\n~\n\n```\n\nLanguage: unknown\n\nFile: if(BUILD_TESTING)\n\n```\n\ninstall\n\n(\n\nDIRECTORY\n\nsrc\n\nlaunch\n\nrviz\n\nDESTINATION\n\nshare/\n\n${\n\nPROJECT_NAME\n\n}\n\n)\n\n```\n\nLanguage: unknown\n\nFile: if(BUILD_TESTING)\n\n```\n\ncolcon\n\nbuild\n\n.\n\ninstall/setup.bash\n\n```\n\nLanguage: unknown\n\nFile: if(BUILD_TESTING)\n\n```\n\nros2\n\nlaunch\n\nsam_bot_description\n\ndisplay.launch.py\n\n```\n\nLanguage: unknown\n\nFile: if(BUILD_TESTING)\n\n```\n\n17\n\n<!-- Define inertial property macros  -->\n\n18\n\n<xacro:macro\n\nname=\n\n\"box_inertia\"\n\nparams=\n\n\"m w h d\"\n\n>\n\n19\n\n<inertial>\n\n20\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"${pi/2} 0 ${pi/2}\"\n\n/>\n\n21\n\n<mass\n\nvalue=\n\n\"${m}\"\n\n/>\n\n22\n\n<inertia\n\nixx=\n\n\"${(m/12) * (h*h + d*d)}\"\n\nixy=\n\n\"0.0\"\n\nixz=\n\n\"0.0\"\n\niyy=\n\n\"${(m/12) * (w*w + d*d)}\"\n\niyz=\n\n\"0.0\"\n\nizz=\n\n\"${(m/12) * (w*w + h*h)}\"\n\n/>\n\n23\n\n</inertial>\n\n24\n\n</xacro:macro>\n\n25\n\n26\n\n<xacro:macro\n\nname=\n\n\"cylinder_inertia\"\n\nparams=\n\n\"m r h\"\n\n>\n\n27\n\n<inertial>\n\n28\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"${pi/2} 0 0\"\n\n/>\n\n29\n\n<mass\n\nvalue=\n\n\"${m}\"\n\n/>\n\n30\n\n<inertia\n\nixx="}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1392e0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 21800, "chroma:document": "/>\n\n29\n\n<mass\n\nvalue=\n\n\"${m}\"\n\n/>\n\n30\n\n<inertia\n\nixx=\n\n\"${(m/12) * (3*r*r + h*h)}\"\n\nixy =\n\n\"0\"\n\nixz =\n\n\"0\"\n\niyy=\n\n\"${(m/12) * (3*r*r + h*h)}\"\n\niyz =\n\n\"0\"\n\nizz=\n\n\"${(m/2) * (r*r)}\"\n\n/>\n\n31\n\n</inertial>\n\n32\n\n</xacro:macro>\n\n33\n\n34\n\n<xacro:macro\n\nname=\n\n\"sphere_inertia\"\n\nparams=\n\n\"m r\"\n\n>\n\n35\n\n<inertial>\n\n36\n\n<mass\n\nvalue=\n\n\"${m}\"\n\n/>\n\n37\n\n<inertia\n\nixx=\n\n\"${(2/5) * m * (r*r)}\"\n\nixy=\n\n\"0.0\"\n\nixz=\n\n\"0.0\"\n\niyy=\n\n\"${(2/5) * m * (r*r)}\"\n\niyz=\n\n\"0.0\"\n\nizz=\n\n\"${(2/5) * m * (r*r)}\"\n\n/>\n\n38\n\n</inertial>\n\n39\n\n</xacro:macro>\n\n```\n\nLanguage: unknown\n\nFile: <linkname=\"base_link\">\n\n```\n\n52\n\n<collision>\n\n53\n\n<geometry>\n\n54\n\n<box\n\nsize=\n\n\"${base_length} ${base_width} ${base_height}\"\n\n/>\n\n55\n\n</geometry>\n\n56\n\n</collision>\n\n57\n\n58\n\n<xacro:box_inertia\n\nm=\n\n\"15\"\n\nw=\n\n\"${base_width}\"\n\nd=\n\n\"${base_length}\"\n\nh=\n\n\"${base_height}\"\n\n/>\n\n```\n\nLanguage: unknown\n\nFile: <linkname=\"${prefix}_link\">\n\n```\n\n83\n\n<collision>\n\n84\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"${pi/2} 0 0\"\n\n/>\n\n85\n\n<geometry>\n\n86\n\n<cylinder\n\nradius=\n\n\"${wheel_radius}\"\n\nlength="}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1392f4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up The URDF\uf0c1.txt", "start_index": 22759, "chroma:document": "<geometry>\n\n86\n\n<cylinder\n\nradius=\n\n\"${wheel_radius}\"\n\nlength=\n\n\"${wheel_width}\"\n\n/>\n\n87\n\n</geometry>\n\n88\n\n</collision>\n\n89\n\n90\n\n<xacro:cylinder_inertia\n\nm=\n\n\"0.5\"\n\nr=\n\n\"${wheel_radius}\"\n\nh=\n\n\"${wheel_width}\"\n\n/>\n\n```\n\nLanguage: unknown\n\nFile: <linkname=\"front_caster\">\n\n```\n\n114\n\n<collision>\n\n115\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n116\n\n<geometry>\n\n117\n\n<sphere\n\nradius=\n\n\"${(wheel_radius+wheel_zoff-(base_height/2))}\"\n\n/>\n\n118\n\n</geometry>\n\n119\n\n</collision>\n\n120\n\n121\n\n<xacro:sphere_inertia\n\nm=\n\n\"0.5\"\n\nr=\n\n\"${(wheel_radius+wheel_zoff-(base_height/2))}\"\n\n/>\n\n```\n\nLanguage: unknown\n\nFile: base_footprint\n\n```\n\ncolcon\n\nbuild\n\n.\n\ninstall/setup.bash\n\nros2\n\nlaunch\n\nsam_bot_description\n\ndisplay.launch.py\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139312-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/WaitAtWaypoint\uf0c1.txt", "start_index": 0, "chroma:document": "Title: WaitAtWaypoint\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/nav2_waypoint_follower\n\nplugins/wait_at_waypoint.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1 <nav2_waypoint_followerplugin>: nav2_waypoint_follower plugin name defined in thewaypoint_task_executor_plugin_idparameter inWaypoint Follower."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139326-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigate Through Poses\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Navigate Through Poses\uf0c1\n\nURL: https://docs.nav2.org/behavior_trees/trees/nav_through_poses_recovery.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\nCode Examples:\n\nLanguage: unknown\n\nFile: FollowPath\n\n```\n\n<root\n\nmain_tree_to_execute=\n\n\"MainTree\"\n\n>\n\n<BehaviorTree\n\nID=\n\n\"MainTree\"\n\n>\n\n<RecoveryNode\n\nnumber_of_retries=\n\n\"6\"\n\nname=\n\n\"NavigateRecovery\"\n\n>\n\n<PipelineSequence\n\nname=\n\n\"NavigateWithReplanning\"\n\n>\n\n<ControllerSelector\n\nselected_controller=\n\n\"{selected_controller}\"\n\ndefault_controller=\n\n\"FollowPath\"\n\ntopic_name=\n\n\"controller_selector\"\n\n/>\n\n<PlannerSelector\n\nselected_planner=\n\n\"{selected_planner}\"\n\ndefault_planner=\n\n\"GridBased\"\n\ntopic_name=\n\n\"planner_selector\"\n\n/>\n\n<RateController\n\nhz=\n\n\"0.333\"\n\n>\n\n<RecoveryNode\n\nnumber_of_retries=\n\n\"1\"\n\nname=\n\n\"ComputePathThroughPoses\"\n\n>\n\n<ReactiveSequence>\n\n<RemovePassedGoals\n\ninput_goals=\n\n\"{goals}\"\n\noutput_goals=\n\n\"{goals}\"\n\nradius=\n\n\"0.7\"\n\n/>\n\n<ComputePathThroughPoses\n\ngoals="}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13933a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigate Through Poses\uf0c1.txt", "start_index": 967, "chroma:document": "radius=\n\n\"0.7\"\n\n/>\n\n<ComputePathThroughPoses\n\ngoals=\n\n\"{goals}\"\n\npath=\n\n\"{path}\"\n\nplanner_id=\n\n\"{selected_planner}\"\n\nerror_code_id=\n\n\"{compute_path_error_code}\"\n\n/>\n\n</ReactiveSequence>\n\n<Sequence>\n\n<WouldAPlannerRecoveryHelp\n\nerror_code=\n\n\"{compute_path_error_code}\"\n\n/>\n\n<ClearEntireCostmap\n\nname=\n\n\"ClearGlobalCostmap-Context\"\n\nservice_name=\n\n\"global_costmap/clear_entirely_global_costmap\"\n\n/>\n\n</Sequence>\n\n</RecoveryNode>\n\n</RateController>\n\n<RecoveryNode\n\nnumber_of_retries=\n\n\"1\"\n\nname=\n\n\"FollowPath\"\n\n>\n\n<FollowPath\n\npath=\n\n\"{path}\"\n\ncontroller_id=\n\n\"{selected_controller}\"\n\nerror_code_id=\n\n\"{follow_path_error_code}\"\n\n/>\n\n<Sequence>\n\n<WouldAControllerRecoveryHelp\n\nerror_code=\n\n\"{follow_path_error_code}\"\n\n/>\n\n<ClearEntireCostmap\n\nname=\n\n\"ClearLocalCostmap-Context\"\n\nservice_name=\n\n\"local_costmap/clear_entirely_local_costmap\"\n\n/>\n\n</Sequence>\n\n</RecoveryNode>\n\n</PipelineSequence>\n\n<Sequence>\n\n<Fallback>\n\n<WouldAControllerRecoveryHelp\n\nerror_code=\n\n\"{follow_path_error_code}\"\n\n/>\n\n<WouldAPlannerRecoveryHelp"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13934e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigate Through Poses\uf0c1.txt", "start_index": 1926, "chroma:document": "\"{follow_path_error_code}\"\n\n/>\n\n<WouldAPlannerRecoveryHelp\n\nerror_code=\n\n\"{compute_path_error_code}\"\n\n/>\n\n</Fallback>\n\n<ReactiveFallback\n\nname=\n\n\"RecoveryFallback\"\n\n>\n\n<GoalUpdated/>\n\n<RoundRobin\n\nname=\n\n\"RecoveryActions\"\n\n>\n\n<Sequence\n\nname=\n\n\"ClearingActions\"\n\n>\n\n<ClearEntireCostmap\n\nname=\n\n\"ClearLocalCostmap-Subtree\"\n\nservice_name=\n\n\"local_costmap/clear_entirely_local_costmap\"\n\n/>\n\n<ClearEntireCostmap\n\nname=\n\n\"ClearGlobalCostmap-Subtree\"\n\nservice_name=\n\n\"global_costmap/clear_entirely_global_costmap\"\n\n/>\n\n</Sequence>\n\n<Spin\n\nspin_dist=\n\n\"1.57\"\n\nerror_code_id=\n\n\"{spin_error_code}\"\n\n/>\n\n<Wait\n\nwait_duration=\n\n\"5.0\"\n\n/>\n\n<BackUp\n\nbackup_dist=\n\n\"0.30\"\n\nbackup_speed=\n\n\"0.05\"\n\nerror_code_id=\n\n\"{backup_error_code}\"\n\n/>\n\n</RoundRobin>\n\n</ReactiveFallback>\n\n</Sequence>\n\n</RecoveryNode>\n\n</BehaviorTree>\n\n</root>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13936c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/DockRobot\uf0c1.txt", "start_index": 0, "chroma:document": "Title: DockRobot\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/DockRobot.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Output Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: DockRobot\n\n```\n\n<DockRobot\n\ndock_id=\n\n\"{dock_id}\"\n\nerror_code_id=\n\n\"{dock_error_code}\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139380-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dev Containers\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Dev Containers\uf0c1\n\nURL: https://docs.nav2.org/development_guides/devcontainer_docs/index.html#prerequisites\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## What, Why, How?\uf0c1 Lets briefly explain what dev containers are, why you should use them, and how they work.\n\n## What is a Dev Container?\uf0c1 A dev container is a Docker container that has all the tools and dependencies you need to develop the project. It runs in a self-contained environment and is isolated from other containers and your host machine. This lets you reliably develop for the project anywhere, notably for linux distributions targeted by ROS, regardless of your host machine\u2019s operating system."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139394-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dev Containers\uf0c1.txt", "start_index": 744, "chroma:document": "## Why use a Dev Container?\uf0c1 A dev container provides a common and consistent development environment. It ensures that everyone on the team is using the same tools and dependencies. It also makes it easy to switch between projects because each project can use a different container. This is especially useful if you work on multiple projects that use different versions of the same tools and dependencies, such as different versions of ROS."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1393a8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dev Containers\uf0c1.txt", "start_index": 1186, "chroma:document": "## How do Dev Containers work?\uf0c1 When you open the project in VS Code, VS Code checks for the dev container configuration nested within the.devcontainerfolder under the project\u2019s root directory. If it finds one, it can prompt you to reopen the project in a container. If you choose to do so, it launches the container, connects to it, and mounts your project folder inside the container. You can then use VS Code in the container just as you would locally. While setting up the container, VS Code can also attempt to passthrough useful aspects of your local environment, such as git user configurations, X11 sockets, and more. This is quite similar to earlier tools used to customize and run docker containers for development:\n\n## Prerequisites\uf0c1 To use dev containers, you\u2019ll need the following:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1393bc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dev Containers\uf0c1.txt", "start_index": 1982, "chroma:document": "## Getting started\uf0c1 Getting started using dev containers is as simple as opening the project in VS Code by either: following the notification prompt to reopen the project in a container, or explicitly opening the command palette (Crtl+Shift+P) and selectingRemote-Containers:ReopeninContainer. This will create a new container, install any extensions specified in the project\u2019s default.devcontainer/devcontainer.jsonconfig file, and mount the project\u2019s root directory as the workspace folder. Once the container is created, VS Code will connect to it and you can start developing. While waiting for the initial setup, feel free to stretch your legs, grab a coffee, or continue to read the following guides to learn more about creating and using dev containers, or how to visualize and leverage graphical user interfaces from a headless development environment."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1393d0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dev Containers\uf0c1.txt", "start_index": 2844, "chroma:document": "## Security\uf0c1 A word of caution when using dev containers: they are powerful tools, but can be a security concern, as the capability of arbitrary code execution facilitated by IDE extensions to enable such automation and convenience remains inherently dual use. Before launching a dev container, ensure you trust the workspaces and authors. For example, when reviewing a pull request, verify patches remain benign and do not introduce any malicious code. Although such vigilance is merited whenever compiling and running patched code, using containers with either elevated privileges or filesystem access renders this diligence even more prudent."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1393e4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/ClearCostmapExceptRegion\uf0c1.txt", "start_index": 0, "chroma:document": "Title: ClearCostmapExceptRegion\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/ClearCostmapExceptRegion.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n<ClearCostmapExceptRegion\n\nname=\n\n\"ClearLocalCostmap\n\nSubtree\"\n\nservice_name=\n\n\"local_costmap/clear_except_local_costmap\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1393f8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/ProgressCheckerSelector\uf0c1.txt", "start_index": 0, "chroma:document": "Title: ProgressCheckerSelector\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/ProgressCheckerSelector.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Output Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: transientlocal\n\n```\n\n<ProgressCheckerSelector\n\nselected_progress_checker=\n\n\"{selected_progress_checker}\"\n\ndefault_progress_checker=\n\n\"precise_progress_checker\"\n\ntopic_name=\n\n\"progress_checker_selector\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139416-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Graceful Controller\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Graceful Controller\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring-graceful-motion-controller.html#example\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Graceful Controller Parameters\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: initial_rotation\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:\n\nuse_sim_time\n\n:\n\nTrue\n\ncontroller_frequency\n\n:\n\n20.0\n\nmin_x_velocity_threshold\n\n:\n\n0.001\n\nmin_y_velocity_threshold\n\n:\n\n0.5\n\nmin_theta_velocity_threshold\n\n:\n\n0.001\n\nprogress_checker_plugins\n\n:\n\n[\n\n\"progress_checker\"\n\n]\n\n# progress_checker_plugin: \"progress_checker\" For Humble and older\n\ngoal_checker_plugins\n\n:\n\n[\n\n\"goal_checker\"\n\n]\n\ncontroller_plugins\n\n:\n\n[\n\n\"FollowPath\"\n\n]\n\nprogress_checker\n\n:\n\nplugin\n\n:\n\n\"nav2_controller::SimpleProgressChecker\"\n\nrequired_movement_radius\n\n:\n\n0.5\n\nmovement_time_allowance\n\n:\n\n10.0\n\ngoal_checker\n\n:\n\nplugin\n\n:\n\n\"nav2_controller::SimpleGoalChecker\"\n\nxy_goal_tolerance\n\n:\n\n0.25"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13942a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Graceful Controller\uf0c1.txt", "start_index": 991, "chroma:document": "xy_goal_tolerance\n\n:\n\n0.25\n\nyaw_goal_tolerance\n\n:\n\n0.25\n\nstateful\n\n:\n\nTrue\n\nFollowPath\n\n:\n\nplugin\n\n:\n\nnav2_graceful_controller::GracefulController\n\ntransform_tolerance\n\n:\n\n0.1\n\nmotion_target_dist\n\n:\n\n0.6\n\ninitial_rotation\n\n:\n\ntrue\n\ninitial_rotation_min_angle\n\n:\n\n0.75\n\nfinal_rotation\n\n:\n\ntrue\n\nallow_backward\n\n:\n\nfalse\n\nk_phi\n\n:\n\n3.0\n\nk_delta\n\n:\n\n2.0\n\nbeta\n\n:\n\n0.4\n\nlambda\n\n:\n\n2.0\n\nv_linear_min\n\n:\n\n0.1\n\nv_linear_max\n\n:\n\n1.0\n\nv_angular_max\n\n:\n\n5.0\n\nslowdown_radius\n\n:\n\n1.5\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13943e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/InitialPoseReceived\uf0c1.txt", "start_index": 0, "chroma:document": "Title: InitialPoseReceived\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/conditions/InitialPoseReceived.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n<InitialPoseReceived/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139452-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Binary Filter Parameters\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Binary Filter Parameters\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/costmap-plugins/binary_filter.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: <filtername>\n\n```\n\nglobal_costmap\n\n:\n\nglobal_costmap\n\n:\n\nros__parameters\n\n:\n\n...\n\nplugins\n\n:\n\n[\n\n\"static_layer\"\n\n,\n\n\"obstacle_layer\"\n\n,\n\n\"inflation_layer\"\n\n]\n\nfilters\n\n:\n\n[\n\n\"binary_filter\"\n\n]\n\n...\n\nbinary_filter\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::BinaryFilter\"\n\nenabled\n\n:\n\nTrue\n\nfilter_info_topic\n\n:\n\n\"/costmap_filter_info\"\n\ntransform_tolerance\n\n:\n\n0.1\n\ndefault_state\n\n:\n\nFalse\n\nbinary_state_topic\n\n:\n\n\"/binary_state\"\n\nflip_threshold\n\n:\n\n50.0\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139470-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/FollowPath\uf0c1.txt", "start_index": 0, "chroma:document": "Title: FollowPath\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/FollowPath.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Output Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: FollowPath\n\n```\n\n<FollowPath\n\npath=\n\n\"{path}\"\n\ncontroller_id=\n\n\"FollowPath\"\n\ngoal_checker_id=\n\n\"precise_goal_checker\"\n\nserver_name=\n\n\"FollowPath\"\n\nserver_timeout=\n\n\"10\"\n\nerror_code_id=\n\n\"{follow_path_error_code}\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139484-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Groot - Interacting with Behavior Trees\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Groot - Interacting with Behavior Trees\uf0c1\n\nURL: https://docs.nav2.org/tutorials/docs/using_groot.html#adding-a-custom-node\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Overview\uf0c1\n\nGrootis the companion application of theBehaviorTree.CPPlibrary used to create, edit, and visualize behavior trees.\n\nBehavior Trees are deeply integrated into Nav2, used as the main method of orchestrating task server logic across a complex navigation and autonomy stack.\n\nBehavior Trees, in short BTs, consist of many nodes completing different tasks and control the flow of logic, similar to a Hierarchical or Finite State Machine, but organized in a tree structure.\n\nThese nodes are of types:Action,Condition,Control, orDecorator, and are described in more detail inNavigation ConceptsandBehaviorTree.CPP."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139498-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Groot - Interacting with Behavior Trees\uf0c1.txt", "start_index": 873, "chroma:document": "Writing a New Behavior Tree Pluginoffers a well written example of creating a simpleActionnode if creating new BT nodes is of interest. This tutorial will focus solely on launching Groot, visualizing a Behavior Tree, and modifying that tree for a given customization, assuming a library of BT nodes. Luckily, Nav2 provides a robust number of BT nodes for your use out of the box, enumerated inNavigation Plugins.\n\nA BT configuration file in BehaviorTree.CPP is an XML file. This is used to dynamically load the BT node plugins at run-time from the appropriate libraries mapped to their names. The XML format is definedin detail here. Therefore, Groot needs to have a list of nodes it has access to and important metadata about them like their type and ports (or parameters). We refer to this as the \u201cpalette\u201d of nodes later in the tutorial.\n\nIn the video above you can see Groot side-by-side with RVIz and a test platform 100% equipped with ROS-enabled hardware from SIEMENS."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1394ac-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Groot - Interacting with Behavior Trees\uf0c1.txt", "start_index": 1850, "chroma:document": "Groot not only displays the current Behavior Tree while the robot is operating. Note: Before ROS 2 Humble, live Groot behavior tree monitoring during execution was supported in Nav2. This was removed due to buggy support in BT.CPP / Groot for changing behavior trees on the fly, seeGalactic to Humblefor more details.\n\n## Visualize Behavior Trees\uf0c1\n\nTo display a Behavior Tree like that inFigure 3, we will first start the Groot executable.\n\nOut of the box, Groot can only display Behavior Trees and nodes that are from the defaults in BT.CPP, since it does not know anything about Nav2 or your other projects.\n\nTherefore, we must point Groot to our palette, or index, of Nav2 / custom behavior tree nodes:\n\nIf you select the default treenavigate_w_replanning_and_recovery.xml, then a Groot editor should look likeFigure 3.\n\n## Edit Behavior Trees\uf0c1\n\nNow that you have a Nav2 BT open in Groot in editor mode, you should be able to trivially modify it using the GUI."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1394c0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Groot - Interacting with Behavior Trees\uf0c1.txt", "start_index": 2815, "chroma:document": "Starting from a screen like that shown inFigure 3, you can pull in new nodes from the side panel to add them to the workspace.\n\nYou may then connect the nodes using a \u201cdrag and drop\u201d motion between the node\u2019s input and output ports to assemble the new nodes into the tree.\n\nIf you select a given node, you can change metadata about it such as its name or values of parameterizable ports. When you\u2019re done modifying, simply save the new configuration file and use that on your robot the next time!\n\n## Adding A Custom Node\uf0c1\n\nEach node in the behavior tree holds a specialized function.\n\nSometimes, its useful to create new nodes and add them to your palette during the design process - perhaps before the implementations themselves exist.\n\nThis helps designers abstract away the implementation specifics of the nodes from the higher level logic of the tree itself and how they\u2019d like to interact with a given node (e.g. type, ports, etc)."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1394d4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Groot - Interacting with Behavior Trees\uf0c1.txt", "start_index": 3754, "chroma:document": "Within Groot, you may create new custom nodes to add to your tree and export these new nodes back to your palette.\n\nImplementing the node itself needs to be done separately from Groot, which is described inWriting a New Behavior Tree Plugin.\n\nCreating a new custom node can be started by clicking the orange marked icon inFigure 4, while Groot is in Editor mode.\n\nThis should load a new window, similar toFigure 5.\n\nIn this new window, it asks you to fill in the metadata about this new node, in order to create it.\n\nIt will ask you for standard information such as name (green box), type of node (orange box), and any optional ports for parameterization or access to blackboard variables (blue box).\n\nAfter completing, selectOKinFigure 5, the new custom node should appear in blue in theTreeNode Paletteas inFigure 6.\n\nBefore starting to create a new BT based on the new custom nodes, it is recommend to export the newly created nodes to save in case of Groot crashing."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1394e8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Groot - Interacting with Behavior Trees\uf0c1.txt", "start_index": 4726, "chroma:document": "This can be performed with the icon highlighted in green fromFigure 6.\n\nThe resulting XML output from the node created inFigure 5can be seen below.\n\nYou can see more examples inNav2\u2019s BT Node Palette XML.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: Action\n\n```\n\n<root>\n\n<TreeNodesModel>\n\n<Action\n\nID=\n\n\"MyAwesomeNewNode\"\n\n>\n\n<input_port\n\nname=\n\n\"key_name\"\n\ndefault=\n\n\"false\"\n\n>\n\ncoffee\n\n</input_port>\n\n<output_port\n\nname=\n\n\"key_name2\"\n\ndefault=\n\n\"42\"\n\n>\n\nSense\n\nof\n\nlife\n\n</output_port>\n\n<inout_port\n\nname=\n\n\"next_target\"\n\ndefault=\n\n\"pancakes\"\n\n>\n\nrolling\n\ntarget\n\n</inout_port>\n\n</Action>\n\n</TreeNodesModel>\n\n</root>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139506-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Loopback Simulator\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Loopback Simulator\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring\n\nloopback\n\nsim.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown File: /clock ``` loopback_simulator : ros__parameters : base_frame_id : \"base_footprint\" odom_frame_id : \"odom\" map_frame_id : \"map\" scan_frame_id : \"base_scan\" # tb4_loopback_simulator.launch.py remaps to 'rplidar_link' update_duration : 0.02 ```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13951a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/TransformAvailable\uf0c1.txt", "start_index": 0, "chroma:document": "Title: TransformAvailable\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/conditions/TransformAvailable.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n<TransformAvailable\n\nparent=\n\n\"odom\"\n\nchild=\n\n\"base_link\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13952e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/PathExpiringTimer\uf0c1.txt", "start_index": 0, "chroma:document": "Title: PathExpiringTimer\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/conditions/PathExpiringTimer.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n<PathExpiringTimer\n\nseconds=\n\n\"15\"\n\npath=\n\n\"{path}\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139542-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/GetPoseFromPath\uf0c1.txt", "start_index": 0, "chroma:document": "Title: GetPoseFromPath\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/GetPoseFromPath.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Output Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile:\n\n2\n\n```\n\n<GetPoseFromPath\n\npath=\n\n\"{path}\"\n\nindex=\n\n\"\n\n1\"\n\npose=\n\n\"{goal}\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139556-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/PathDistCritic\uf0c1.txt", "start_index": 0, "chroma:document": "Title: PathDistCritic\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/trajectory_critics/path_dist.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1 <name>: PathDistCritic critic name defined in the<dwb plugin>.criticsparameter defined inDWB Controller."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13956a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Collision Detector Node\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Collision Detector Node\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/collision_monitor/configuring-collision-detector-node.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Features\uf0c1\n\nSimilarly to the Collision Monitor, the Collision Detector uses robot\u2019s relative polygons to define \u201czones\u201d.\n\nHowever, unlike the Collision Monitor that uses different behavior models, the Collision Detector does not use any of them and therefore theaction_typeshould always be set tonone. If set to anything else, it will throw an error\n\nThe zones around the robot and the data sources are the same as for the Collision Monitor, with the exception of the footprint polygon, which is not supported by the Collision Detector.\n\n## Parameters\uf0c1\n\n## Polygons parameters\uf0c1\n\n<polygonname>is the corresponding polygon name ID selected for this type.\n\n## Observation sources parameters\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139592-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Collision Detector Node\uf0c1.txt", "start_index": 918, "chroma:document": "## Observation sources parameters\uf0c1\n\n<sourcename>is the corresponding data source name ID selected for this type.\n\n## Example\uf0c1\n\nHere is an example of configuration YAML for the Collision Detector.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: source_timeout:0.0\n\n```\n\ncollision_detector\n\n:\n\nros__parameters\n\n:\n\nbase_frame_id\n\n:\n\n\"base_footprint\"\n\nodom_frame_id\n\n:\n\n\"odom\"\n\ntransform_tolerance\n\n:\n\n0.5\n\nsource_timeout\n\n:\n\n5.0\n\nbase_shift_correction\n\n:\n\nTrue\n\npolygons\n\n:\n\n[\n\n\"PolygonFront\"\n\n]\n\nPolygonFront\n\n:\n\ntype\n\n:\n\n\"polygon\"\n\npoints\n\n:\n\n\"[[0.3,\n\n0.3],\n\n[0.3,\n\n0.3],\n\n[0.0,\n\n0.3],\n\n[0.0,\n\n0.3]]\"\n\naction_type\n\n:\n\n\"none\"\n\nmin_points\n\n:\n\n4\n\nvisualize\n\n:\n\nTrue\n\npolygon_pub_topic\n\n:\n\n\"polygon_front\"\n\nobservation_sources\n\n:\n\n[\n\n\"scan\"\n\n]\n\nscan\n\n:\n\nsource_timeout\n\n:\n\n0.2\n\ntype\n\n:\n\n\"scan\"\n\ntopic\n\n:\n\n\"scan\"\n\nenabled\n\n:\n\nTrue\n\npointcloud\n\n:\n\ntype\n\n:\n\n\"pointcloud\"\n\ntopic\n\n:\n\n\"/intel_realsense_r200_depth/points\"\n\nmin_height\n\n:\n\n0.1\n\nmax_height\n\n:\n\n0.5\n\nenabled\n\n:\n\nTrue\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1395a6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Roadmaps\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Roadmaps\uf0c1\n\nURL: https://docs.nav2.org/roadmap/roadmap.html#jazzy\n\nroadmap\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Jazzy Roadmap\uf0c1\n\n## Iron Roadmap\uf0c1\n\n## Humble Roadmap\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1395ba-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Smac Hybrid-A* Planner\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Smac Hybrid-A* Planner\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/smac/configuring-smac-hybrid.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: >=1\n\n```\n\nplanner_server\n\n:\n\nros__parameters\n\n:\n\nplanner_plugins\n\n:\n\n[\n\n\"GridBased\"\n\n]\n\nuse_sim_time\n\n:\n\nTrue\n\nGridBased\n\n:\n\nplugin\n\n:\n\n\"nav2_smac_planner::SmacPlannerHybrid\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\ndownsample_costmap\n\n:\n\nfalse\n\n# whether or not to downsample the map\n\ndownsampling_factor\n\n:\n\n1\n\n# multiplier for the resolution of the costmap layer (e.g. 2 on a 5cm costmap would be 10cm)\n\ntolerance\n\n:\n\n0.25\n\n# dist-to-goal heuristic cost (distance) for valid tolerance endpoints if exact goal cannot be found.\n\nallow_unknown\n\n:\n\ntrue\n\n# allow traveling in unknown space\n\nmax_iterations\n\n:\n\n1000000"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1395ce-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Smac Hybrid-A* Planner\uf0c1.txt", "start_index": 880, "chroma:document": "# allow traveling in unknown space\n\nmax_iterations\n\n:\n\n1000000\n\n# maximum total iterations to search for before failing (in case unreachable), set to -1 to disable\n\nmax_on_approach_iterations\n\n:\n\n1000\n\n# Maximum number of iterations after within tolerances to continue to try to find exact solution\n\nmax_planning_time\n\n:\n\n5.0\n\n# max time in s for planner to plan, smooth\n\nmotion_model_for_search\n\n:\n\n\"DUBIN\"\n\n# Hybrid-A* Dubin, Redds-Shepp\n\nangle_quantization_bins\n\n:\n\n72\n\n# Number of angle bins for search\n\nanalytic_expansion_ratio\n\n:\n\n3.5\n\n# The ratio to attempt analytic expansions during search for final approach.\n\nanalytic_expansion_max_length\n\n:\n\n3.0\n\n# For Hybrid/Lattice nodes: The maximum length of the analytic expansion to be considered valid to prevent unsafe shortcutting\n\nanalytic_expansion_max_cost\n\n:\n\n200.0\n\n# The maximum single cost for any part of an analytic expansion to contain and be valid, except when necessary on approach to goal\n\nanalytic_expansion_max_cost_override\n\n:\n\nfalse"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1395ec-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Smac Hybrid-A* Planner\uf0c1.txt", "start_index": 1838, "chroma:document": "analytic_expansion_max_cost_override\n\n:\n\nfalse\n\n#  Whether or not to override the maximum cost setting if within critical distance to goal (ie probably required)\n\nminimum_turning_radius\n\n:\n\n0.40\n\n# minimum turning radius in m of path / vehicle\n\nreverse_penalty\n\n:\n\n2.0\n\n# Penalty to apply if motion is reversing, must be => 1\n\nchange_penalty\n\n:\n\n0.0\n\n# Penalty to apply if motion is changing directions (L to R), must be >= 0\n\nnon_straight_penalty\n\n:\n\n1.2\n\n# Penalty to apply if motion is non-straight, must be => 1\n\ncost_penalty\n\n:\n\n2.0\n\n# Penalty to apply to higher cost areas when adding into the obstacle map dynamic programming distance expansion heuristic. This drives the robot more towards the center of passages. A value between 1.3 - 3.5 is reasonable.\n\nretrospective_penalty\n\n:\n\n0.015\n\nlookup_table_size\n\n:\n\n20.0\n\n# Size of the dubin/reeds-sheep distance window to cache, in meters.\n\ncache_obstacle_heuristic\n\n:\n\nfalse"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139600-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Smac Hybrid-A* Planner\uf0c1.txt", "start_index": 2733, "chroma:document": "cache_obstacle_heuristic\n\n:\n\nfalse\n\n# Cache the obstacle map dynamic programming distance expansion heuristic between subsequent replannings of the same goal location. Dramatically speeds up replanning performance (40x) if costmap is largely static.\n\ndebug_visualizations\n\n:\n\nfalse\n\n# For Hybrid nodes: Whether to publish expansions on the /expansions topic as an array of poses (the orientation has no meaning) and the path's footprints on the /planned_footprints topic. WARNING: heavy to compute and to display, for debug only as it degrades the performance.\n\nuse_quadratic_cost_penalty\n\n:\n\nFalse\n\ndownsample_obstacle_heuristic\n\n:\n\nTrue\n\nallow_primitive_interpolation\n\n:\n\nFalse\n\nsmooth_path\n\n:\n\nTrue\n\n# If true, does a simple and quick smoothing post-processing to the path\n\nsmoother\n\n:\n\nmax_iterations\n\n:\n\n1000\n\nw_smooth\n\n:\n\n0.3\n\nw_data\n\n:\n\n0.2\n\ntolerance\n\n:\n\n1.0e-10\n\ndo_refinement\n\n:\n\ntrue\n\nrefinement_num\n\n:\n\n2\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139614-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Collision Monitor\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Using Collision Monitor\uf0c1\n\nURL: https://docs.nav2.org/tutorials/docs/using_collision_monitor.html#requirements\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Overview\uf0c1\n\nThis tutorial shows how to use a Collision Monitor with Nav2 stack. Based on this tutorial, you can setup it for your environment and needs.\n\n## Requirements\uf0c1\n\nIt is assumed ROS2 and Nav2 dependent packages are installed or built locally.\n\nPlease make sure that Nav2 project is also built locally as it was made inBuild and Install.\n\n## Configuring Collision Monitor\uf0c1\n\nThe Collision Monitor node has its owncollision_monitor_node.launch.pylaunch-file and preset parameters in thecollision_monitor_params.yamlfile for demonstration, though its trivial to add this to Nav2\u2019s main launch file if being used in practice.\n\nFor the demonstration, two shapes will be created - an inner stop and a larger slowdown bounding boxes placed in the front of the robot:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139628-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Collision Monitor\uf0c1.txt", "start_index": 1007, "chroma:document": "If more than 3 points will appear inside a slowdown box, the robot will decrease its speed to30%from its value.\n\nFor the cases when obstacles are dangerously close to the robot, inner stop zone will work.\n\nFor this setup, the following lines should be added intocollision_monitor_params.yamlparameters file. Stop box is named asPolygonStopand slowdown bounding box - asPolygonSlow:\n\nFor the working configuration, at least one data source should be added.\n\nIn current demonstration, it is used laser scanner (thoughPointCloud2and Range/Sonar/IR sensors are also possible), which is described by the following lines for Collision Monitor node:\n\nSet topic names, frame ID-s and timeouts to work correctly with a default Nav2 setup.\n\nThe wholenav2_collision_monitor/params/collision_monitor_params.yamlfile in this case will look as follows:\n\n## Configuring Collision Monitor with VelocityPolygon\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13963c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Collision Monitor\uf0c1.txt", "start_index": 1847, "chroma:document": "## Configuring Collision Monitor with VelocityPolygon\uf0c1\n\nFor this part of tutorial, we will set up the Collision Monitor withVelocityPolygontype for astopaction.VelocityPolygonallows the user to setup multiple polygons to cover the range of the robot\u2019s velocity limits. For example, the user can configure different polygons for rotation, moving forward, or moving backward. The Collision Monitor will check the robot\u2019s velocity against each sub polygon to determine the appropriate polygon to be used for collision checking.\n\nIn general, here are the steps to configure the Collision Monitor withVelocityPolygontype:\n\nIn this example, we will consider anon-holonomicrobot with linear velocity limits of-1.0to1.0m/s and angular velocity limits of-1.0to1.0rad/s. Thelinear_minandlinear_maxparameters of the sub polygons should be set to the robot\u2019s linear velocity limits, while thetheta_minandtheta_maxparameters should be set to the robot\u2019s angular velocity limits."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13965a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Collision Monitor\uf0c1.txt", "start_index": 2814, "chroma:document": "Below is the example configuration using 4 sub-polygons to cover the full range of the robot\u2019s velocity limits:\n\nFor holomic robots:\n\nFor holomic robots, theholonomicproperty should be set totrue. In this scenario, thelinear_minandlinear_maxparameters should cover the robot\u2019s resultant velocity limits, while thetheta_minandtheta_maxparameters should cover the robot\u2019s angular velocity limits. Additionally, there will be 2 more parameters,direction_start_angleanddirection_end_angle, to specify the resultant velocity direction. The covered direction will always span fromdirection_start_angletodirection_end_anglein thecounter-clockwisedirection.\n\nBelow shows some common configurations for holonomic robots that cover multiple directions of the resultant velocity:\n\n## Preparing Nav2 stack\uf0c1\n\nThe Collision Monitor is designed to operate below Nav2 as an independent safety node.\n\nIt acts as a filter for thecmd_velmessages from the controller to avoid potential collisions."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13966e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Collision Monitor\uf0c1.txt", "start_index": 3793, "chroma:document": "If no such zone is triggered, then thecmd_velmessage is used.\n\nElse, it is scaled or set to stop as appropriate.\n\nBy default, the Collision Monitor is configured for usage with the Nav2 bringup package, running in parallel with thenavigation_launch.pylaunch file. For correct operation of the Collision Monitor with the Velocity Smoother, it is required to remove the Velocity Smoother\u2019scmd_vel_smoothedremapping in thenavigation_launch.pybringup script as presented below. This will make the output topic of the Velocity Smoother to be untouched, which will be the input to the newly added Collision Monitor:\n\nIf you have changed Collision Monitor\u2019s defaultcmd_vel_in_topicandcmd_vel_out_topicconfiguration, make sure Velocity Smoother\u2019s default output topiccmd_vel_smoothedshould match to the input velocitycmd_vel_in_topicparameter value of the Collision Monitor node, and the output velocitycmd_vel_out_topicparameter value should be actualcmd_velto fit the replacement.\n\n## Demo Execution\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139682-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Collision Monitor\uf0c1.txt", "start_index": 4769, "chroma:document": "## Demo Execution\uf0c1\n\nOnce Collision Monitor node has been tuned andcmd_veltopics adjusted, Collision Monitor node is ready to run.\n\nFor that, run Nav2 stack as written inGetting Started:\n\nIn parallel console, launch Collision Monitor node by using its launch-file:\n\nSince bothPolygonStopandPolygonSlowpolygons will have their own publishers, they could be added to visualization as shown at the picture below:\n\nSet the initial pose and then put Nav2 goal on map.\n\nThe robot will start its movement, slowing down while running near the obstacles, and stopping in close proximity to them:\n\nCode Examples:\n\nLanguage: unknown\n\nFile: PolygonSlow\n\n```\n\npolygons\n\n:\n\n[\n\n\"PolygonStop\"\n\n,\n\n\"PolygonSlow\"\n\n]\n\nPolygonStop\n\n:\n\ntype\n\n:\n\n\"polygon\"\n\npoints\n\n:\n\n\"[[0.4,\n\n0.3],\n\n[0.4,\n\n0.3],\n\n[0.0,\n\n0.3],\n\n[0.0,\n\n0.3]]\"\n\naction_type\n\n:\n\n\"stop\"\n\nmin_points\n\n:\n\n4\n\n# max_points: 3 for Humble\n\nvisualize\n\n:\n\nTrue\n\npolygon_pub_topic\n\n:\n\n\"polygon_stop\"\n\nPolygonSlow\n\n:\n\ntype\n\n:\n\n\"polygon\"\n\npoints\n\n:\n\n\"[[0.6,\n\n0.4],\n\n[0.6,\n\n0.4],\n\n[0.0,\n\n0.4],"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139696-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Collision Monitor\uf0c1.txt", "start_index": 5737, "chroma:document": "points\n\n:\n\n\"[[0.6,\n\n0.4],\n\n[0.6,\n\n0.4],\n\n[0.0,\n\n0.4],\n\n[0.0,\n\n0.4]]\"\n\naction_type\n\n:\n\n\"slowdown\"\n\nmin_points\n\n:\n\n4\n\n# max_points: 3 for Humble\n\nslowdown_ratio\n\n:\n\n0.3\n\nvisualize\n\n:\n\nTrue\n\npolygon_pub_topic\n\n:\n\n\"polygon_slowdown\"\n\n```\n\nLanguage: unknown\n\nFile: PointCloud2\n\n```\n\nobservation_sources\n\n:\n\n[\n\n\"scan\"\n\n]\n\nscan\n\n:\n\ntype\n\n:\n\n\"scan\"\n\ntopic\n\n:\n\n\"scan\"\n\n```\n\nLanguage: unknown\n\nFile: nav2_collision_monitor/params/collision_monitor_params.yaml\n\n```\n\ncollision_monitor\n\n:\n\nros__parameters\n\n:\n\nuse_sim_time\n\n:\n\nTrue\n\nbase_frame_id\n\n:\n\n\"base_footprint\"\n\nodom_frame_id\n\n:\n\n\"odom\"\n\ncmd_vel_in_topic\n\n:\n\n\"cmd_vel_smoothed\"\n\ncmd_vel_out_topic\n\n:\n\n\"cmd_vel\"\n\ntransform_tolerance\n\n:\n\n0.5\n\nsource_timeout\n\n:\n\n5.0\n\nstop_pub_timeout\n\n:\n\n2.0\n\nenable_stamped_cmd_vel\n\n:\n\nTrue\n\n# False for Jazzy or older by default\n\npolygons\n\n:\n\n[\n\n\"PolygonStop\"\n\n,\n\n\"PolygonSlow\"\n\n]\n\nPolygonStop\n\n:\n\ntype\n\n:\n\n\"polygon\"\n\npoints\n\n:\n\n\"[[0.4,\n\n0.3],\n\n[0.4,\n\n0.3],\n\n[0.0,\n\n0.3],\n\n[0.0,\n\n0.3]]\"\n\naction_type\n\n:\n\n\"stop\"\n\nmin_points\n\n:\n\n4"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1396b4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Collision Monitor\uf0c1.txt", "start_index": 6681, "chroma:document": "0.3],\n\n[0.0,\n\n0.3]]\"\n\naction_type\n\n:\n\n\"stop\"\n\nmin_points\n\n:\n\n4\n\n# max_points: 3 for Humble\n\nvisualize\n\n:\n\nTrue\n\npolygon_pub_topic\n\n:\n\n\"polygon_stop\"\n\nPolygonSlow\n\n:\n\ntype\n\n:\n\n\"polygon\"\n\npoints\n\n:\n\n\"[[0.6,\n\n0.4],\n\n[0.6,\n\n0.4],\n\n[0.0,\n\n0.4],\n\n[0.0,\n\n0.4]]\"\n\naction_type\n\n:\n\n\"slowdown\"\n\nmin_points\n\n:\n\n4\n\n# max_points: 3 for Humble\n\nslowdown_ratio\n\n:\n\n0.3\n\nvisualize\n\n:\n\nTrue\n\npolygon_pub_topic\n\n:\n\n\"polygon_slowdown\"\n\nobservation_sources\n\n:\n\n[\n\n\"scan\"\n\n]\n\nscan\n\n:\n\ntype\n\n:\n\n\"scan\"\n\ntopic\n\n:\n\n\"scan\"\n\n```\n\nLanguage: unknown\n\nFile: theta_max\n\n```\n\npolygons\n\n:\n\n[\n\n\"VelocityPolygonStop\"\n\n]\n\nVelocityPolygonStop\n\n:\n\ntype\n\n:\n\n\"velocity_polygon\"\n\naction_type\n\n:\n\n\"stop\"\n\nmin_points\n\n:\n\n6\n\nvisualize\n\n:\n\nTrue\n\nenabled\n\n:\n\nTrue\n\npolygon_pub_topic\n\n:\n\n\"velocity_polygon_stop\"\n\nvelocity_polygons\n\n:\n\n[\n\n\"rotation\"\n\n,\n\n\"translation_forward\"\n\n,\n\n\"translation_backward\"\n\n,\n\n\"stopped\"\n\n]\n\nholonomic\n\n:\n\nfalse\n\nrotation\n\n:\n\npoints\n\n:\n\n\"[[0.3,\n\n0.3],\n\n[0.3,\n\n0.3],\n\n[-0.3,\n\n0.3],\n\n[-0.3,\n\n0.3]]\"\n\nlinear_min\n\n:\n\n0.0\n\nlinear_max\n\n:\n\n0.05"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1396c8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Collision Monitor\uf0c1.txt", "start_index": 7637, "chroma:document": "0.3],\n\n[-0.3,\n\n0.3]]\"\n\nlinear_min\n\n:\n\n0.0\n\nlinear_max\n\n:\n\n0.05\n\ntheta_min\n\n:\n\n1.0\n\ntheta_max\n\n:\n\n1.0\n\ntranslation_forward\n\n:\n\npoints\n\n:\n\n\"[[0.35,\n\n0.3],\n\n[0.35,\n\n0.3],\n\n[-0.2,\n\n0.3],\n\n[-0.2,\n\n0.3]]\"\n\nlinear_min\n\n:\n\n0.0\n\nlinear_max\n\n:\n\n1.0\n\ntheta_min\n\n:\n\n1.0\n\ntheta_max\n\n:\n\n1.0\n\ntranslation_backward\n\n:\n\npoints\n\n:\n\n\"[[0.2,\n\n0.3],\n\n[0.2,\n\n0.3],\n\n[-0.35,\n\n0.3],\n\n[-0.35,\n\n0.3]]\"\n\nlinear_min\n\n:\n\n1.0\n\nlinear_max\n\n:\n\n0.0\n\ntheta_min\n\n:\n\n1.0\n\ntheta_max\n\n:\n\n1.0\n\n# This is the last polygon to be checked, it should cover the entire range of robot's velocities\n\n# It is used as the stopped polygon when the robot is not moving and as a fallback if the velocity\n\n# is not covered by any of the other sub-polygons\n\nstopped\n\n:\n\npoints\n\n:\n\n\"[[0.25,\n\n0.25],\n\n[0.25,\n\n0.25],\n\n[-0.25,\n\n0.25],\n\n[-0.25,\n\n0.25]]\"\n\nlinear_min\n\n:\n\n1.0\n\nlinear_max\n\n:\n\n1.0\n\ntheta_min\n\n:\n\n1.0\n\ntheta_max\n\n:\n\n1.0\n\n```\n\nLanguage: unknown\n\nFile: navigation_launch.py\n\n```\n\nNode\n\n(\n\npackage\n\n=\n\n'nav2_velocity_smoother'\n\n,\n\nexecutable\n\n=\n\n'velocity_smoother'\n\n,"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1396dc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Collision Monitor\uf0c1.txt", "start_index": 8615, "chroma:document": ",\n\nexecutable\n\n=\n\n'velocity_smoother'\n\n,\n\nname\n\n=\n\n'velocity_smoother'\n\n,\n\noutput\n\n=\n\n'screen'\n\n,\n\nrespawn\n\n=\n\nuse_respawn\n\n,\n\nrespawn_delay\n\n=\n\n2.0\n\n,\n\nparameters\n\n=\n\n[\n\nconfigured_params\n\n],\n\narguments\n\n=\n\n[\n\n'--ros-args'\n\n,\n\n'--log-level'\n\n,\n\nlog_level\n\n],\n\nremappings\n\n=\n\nremappings\n\n+\n\n[(\n\n'cmd_vel'\n\n,\n\n'cmd_vel_nav'\n\n),\n\n(\n\n'cmd_vel_smoothed'\n\n,\n\n'cmd_vel'\n\n)]),\n\n+\n\n[(\n\n'cmd_vel'\n\n,\n\n'cmd_vel_nav'\n\n)]),\n\n...\n\nComposableNode\n\n(\n\npackage\n\n=\n\n'nav2_velocity_smoother'\n\n,\n\nplugin\n\n=\n\n'nav2_velocity_smoother::VelocitySmoother'\n\n,\n\nname\n\n=\n\n'velocity_smoother'\n\n,\n\nparameters\n\n=\n\n[\n\nconfigured_params\n\n],\n\nremappings\n\n=\n\nremappings\n\n+\n\n[(\n\n'cmd_vel'\n\n,\n\n'cmd_vel_nav'\n\n),\n\n(\n\n'cmd_vel_smoothed'\n\n,\n\n'cmd_vel'\n\n)]),\n\n+\n\n[(\n\n'cmd_vel'\n\n,\n\n'cmd_vel_nav'\n\n)]),\n\n```\n\nLanguage: unknown\n\nFile: cmd_vel\n\n```\n\nros2\n\nlaunch\n\nnav2_bringup\n\ntb3_simulation_launch.py\n\nheadless:\n\n=\n\nFalse\n\n```\n\nLanguage: unknown\n\nFile: cmd_vel\n\n```\n\nros2\n\nlaunch\n\nnav2_collision_monitor\n\ncollision_monitor_node.launch.py\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1396f0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/StandardTrajectoryGenerator\uf0c1.txt", "start_index": 0, "chroma:document": "Title: StandardTrajectoryGenerator\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/dwb\n\nplugins/standard_traj_generator.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1 <dwbplugin>: DWB plugin name defined in thecontroller_plugin_idsparameter inController Server."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139704-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Iron to Jazzy\uf0c1\n\nURL: https://docs.nav2.org/migration/Iron.html#new\n\ncollision\n\nmonitor\n\nparameter\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## BehaviorTree.CPP upgraded to version 4.5+\uf0c1 Since we migrated from version 3.8 to 4.5, users must upgrade their XML and source code accordingly. You can refer to [this page](https://www.behaviortree.dev/docs/migration) for more details, but the main changes are:\n\n## Added TwistStamped Option for Commands\uf0c1 A new parameterenable_stamped_cmd_velhas been added to all of the publishers and subscribers ofcmd_veland related topics. This allows you to set the publication and subscription of TwistStamped messages over Twist messages to have frame and timestamp information of the set command. For now, this is default tofalseto not change current behavior, but it is planned to makeTwistStampedthe default behavior alongside Gazebo, ROS 2 Control, and related projects."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139718-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 995, "chroma:document": "## Add VelocityPolygon in Collision Monitor\uf0c1 PR #3708addsVelocityPolgontype in Collision Monitor. This allows the user to setup multiple polygons to cover the range of the robot\u2019s velocity limits. For example, the user can configure different polygons for rotation, moving forward, or moving backward. The Collision Monitor will check the robot\u2019s velocity against each sub polygon to determine the appropriate polygon to be used for collision checking. The tutorial is available in theConfiguring Collision Monitor with VelocityPolygonsection."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13972c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 1540, "chroma:document": "## Change polygon points parameter format in Collision Monitor\uf0c1 PR #4020changes the format of the Polygon points parameter fromvector<double>tostring. This makes the polygon description more uniform across the Collision Monitor and Costmap_2D. Now we can define a polygon\u2019s points in string that has avector<vector<double>>structure like this\"[[p1.x,p1.y],[p2.x,p2.y],[p3.x,p3.y],...]\"with a minimum of 4 points described. An example of a Square polygon will be written as follows."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139740-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 2023, "chroma:document": "## Introduction of Soft-Real Time Action Servers\uf0c1 PR #3914adds soft real-time prioritization to the controller server to better ensure resources to time sensitive portions of the codebase. The Simple Action Server now has arealtimeinput field exposed in the Controller Server via the parameteruse_realtime_prioritywhich will set the controller\u2019s execution thread to a higher priority than the rest of the system to meet scheduling deadlines. To use this feature, you use set the following inside of/etc/security/limits.confto give userspace access to elevated prioritization permissions. This is currently only enabled in the Controller Server, who\u2019s execution thread is sensitive to scheduling priorities, but could be set with other threads in the future if found necessary. The Collision Monitor and Velocity Smoothers also haduse_realtime_priorityadded as well!"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13975e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 2890, "chroma:document": "## opennav_coverageProject\uf0c1 A new metapackage exists in:https://github.com/open-navigation/opennav_coveragewhich contains complete coverage navigator plugins, BT nodes, behavior tree demos, and coverage planning server based onFields2Cover. See that project for more information. It is on long-term trajectory for inclusion intoNav2, but there are still yet a few missing features from Fields2Cover before we can integrate that into the main project to be up to snuff in terms of all the major features and capabilities users would expect from a coverage planning system. If you\u2019d like to see coverage planning in Nav2 directly, please consider contributingto the as-of-yet needed features described here."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139772-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 3597, "chroma:document": "## opennav_dockingProject\uf0c1 A new metapackage exists in:https://github.com/open-navigation/opennav_dockingwhich contains complete automatic charging dock framework, BT nodes, plugins, and demos. This allows for docking of any type of robot with any type of charging dock in a repeatable and generalized way. It will be integrated into Nav2 directly soon (Update June 2024: within Nav2 stack directlynav2_docking!) SeeUsing Docking Serverfor a tutorial on using this new capability! Thanks to NVIDIA for sponsoring this package!"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139786-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 4125, "chroma:document": "## Introduce a new Multi-Robot Bringup Launch\uf0c1 PR #3572introduces a new way of bringup tb3 multi-robot that names ascloned_tb3_simulation_launch.pyfor simulation.cloned_tb3_simulation_launch.pyenables to bring up multiple robots with same parameter that described innav2_multirobot_param_all.yaml. And multiple robots are separated by namespaces which are given as a Launch Arguments. Existingmulti_tb3_simulation_launch.pywhich was utilized in previous is replaced withunique_tb3_simulation_launch.py, allowing for multiple unique robot instances utilizingnav2_multirobot_params_<N>.yamlconfiguration files.\n\n## New option for the Voxel and Obstacle Layers\uf0c1 PR #3612adds a new MaxWithoutUnknownOverwrite option to combination_method parameter in Voxel and Obstacle Layers. This can be used to make sure that the static map is the dominant source of information, and easily prevent the robot to go through places that are not present in the static map."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13979a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 5079, "chroma:document": "## use_interpolation RPP Parameter Depreciated\uf0c1 After a distribution of testing by many users, we have depreciated the use_interpolation parameter and it is now default on at all times without the ability to disable. It improves velocity smoothness and overall quality of tracking positively in all cases.\n\n## Changes to MPPI Goal Critic\uf0c1 The MPPI Goal critic\u2019s formulation is changed to better keep up with speed on approach to goal instead of preemptively slowing too significantly. It also allows you to better use the weight to adjust the degree at which it slows more naturally. This change involves adjusting thethreshold_to_considerto be the same as your prediction horizon (e.g. samples * dt * max speed) for both the goal critic and path follower critic to have a good hand-off between them without deceleration."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1397ae-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 5902, "chroma:document": "## Changes to MPPI Path Angle Critic\uf0c1 MPPI\u2019s Path Angle critic now has amodesetting to adjust behavior depending on robot\u2019s desired behavioral traits. Previously, it penalized path orientations that deviated far the the robot\u2019s forward orientation to turn the robot towards sharp changes in the path. This is still default (mode:0), but other modes now exist too. mode:1sets the penalization of path\u2019s relative directions by either forward orientation or the opposite for reversing to allow for true bidirectional motion when one way or another is not preferable for a symmetric robot. This uses only the path\u2019s relative points to the robot to decide which direction to incentivize. mode:2instead uses the path\u2019s orientations when a feasible path is given from the Smac Planners or the Smoother server\u2019s algorithms. This way, the globally planned orientations are followed rather than the based solely on the path\u2019s relative points. This is useful for non-circular robots in highly confined settings where there may be"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1397c2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 6867, "chroma:document": "robots in highly confined settings where there may be restricted opportunities to change directions so following the global path\u2019s orientation are required to end in the orientation you require."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1397d6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 7063, "chroma:document": "## Changes to MPPI Path Handling For Directionality\uf0c1 MPPI\u2019s Path Align Critic and Path Handler object now have options to utilize the path\u2019s orientation information to force the controller to change directions when and only when requested by a feasible planner. Whenenforce_path_inversionistrue, the path handler will prune the path to the first time the directions change to force the controller to plan to the inversion point and then be set the rest of the path, once in tolerance. The Path Align critic also contains a parameteruse_path_orientationswhich can be paired with it to incentivize aligning the path containing orientation information to better attempt to achieve path inversions where requestedandnot do them when not requested. See MPPI\u2019s configuration guide for complete information."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1397ea-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 7865, "chroma:document": "## Addition of new MPPI Cost Critic\uf0c1 Analog to theObstacleCritic, theCostCriticis another obstacle avoiding critic alternative if theObstacleCriticis not working well for you. This critic uses the inflated costs in the costmap to score rather than distance to obstacles as theObstaclesCriticdoes. See the configuration guide for more information.\n\n## MPPI Acceleration\uf0c1 New to Jazzy, MPPI is 45% faster due to a weeks long optimization campaign. Enjoy!\n\n## Move Error Code Enumerations\uf0c1 PR #3693moves the enumeration codes from the goal to the result section.\n\n## Substitution in parameter file\uf0c1 Enabled substitution in parameter file. For example, you can write the following For more information about substitutions syntax, seehere\n\n## Allow Behavior Server Plugins to Access The Action Result\uf0c1 PR #3704allows behavior servers plugins to access and modify the action result."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1397fe-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 8743, "chroma:document": "## Smac Planner Debug Param Name Change\uf0c1 debug_visualizationsreplacesviz_expansionsparameter in Hybrid-A* to reflect the new inclusion of footprint debug information being published as well.\n\n## Smac Planner On Approach to Goal Shortcutting Solutions\uf0c1 PR #3962 adds new paramsanalytic_expansion_max_costandanalytic_expansion_max_cost_overridein extension ofanalytic_expansion_max_lengthin Humble to further limit potential shortcutting of paths near obstacles in close proximity to the goal. It uses a maximum cost parameter (default200) to tell if an expansion is closer to an obstacle than a user would like. If the expansion is critically close to the goal, then it may override this constraint ifanalytic_expansion_max_cost_overrideisfalse- allowing the constraint to be overridden to find a successful path solution, as it may be required. This PR also introduces additional analytic expansion scoring logic and edge case handling to improve path qualities by an analog heuristic function."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13981c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 9739, "chroma:document": "## Added GPS Waypoint Follower Server\uf0c1 This PR 2814adds thefollow_gps_waypointsaction server innav2_waypoint_follower. This server accepts a set of GPS goals instead of cartesian goals and provides all the other functionalities available onnav2_waypoint_follower. A new tutorial demonstrating its functionality was also added onPR 70 on navigation2_tutorialsand can be found on the General Tutorials directory on this website.\n\n## Smac Planner Hybrid-A* New Features\uf0c1 New featuresallow_primitive_interpolationwhich allows for more primitives in the search set,use_quadratic_cost_penaltyto impact the cost penalty order in the traversal and heuristic functions, anddownsample_obstacle_heuristicto optionally not downsample the obstacle heuristic\u2019s costmap were added. The default behavior will remain the same. If you would like to use these new features, please check out the Smac Planner Hybrid-A* configuration guide."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139830-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 10660, "chroma:document": "## New node in nav2_collision_monitor: Collision Detector\uf0c1 In thisPR #3693A new node was introduced in the nav2_collision_monitor: Collision Detector. It works similarly to the Collision Monitor, but does not affect the robot\u2019s velocity. It will only inform that data from the configured sources has been detected within the configured polygons via message to thecollision_detector_statetopic that might be used by any external module (e.g. switching LED or sound alarm in case of collision).\n\n## Dynamic enabling/disabling of sources/polygons in Collision Monitor/Detector\uf0c1 In thisPR #3825we added the ability to dynamically enable/disable sources and polygons in the Collision Monitor/Detector."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139844-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 11358, "chroma:document": "## Expose action server\u2019s result timeout\uf0c1 In thisPR #3787the timeout for action server\u2019s result was exposed in all nodes having action servers. This is because in thisPR #1012in rcl a change was introduced which makes action servers discard a goal handle if the result is not produced within 10 seconds, when the default was set to 15 minutes before. Since some actions in Nav2 may take more than 10 seconds to complete, the user has now the ability to set this value through theaction_server_result_timeoutparameter, which defaults to 15 minutes in thebt_navigatorsandwaypoint_followerand to 10 seconds in all other nodes."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139858-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 11983, "chroma:document": "## RewrittenYaml could add new parameters to YAMLs\uf0c1 NowRewrittenYamlwidely used in Nav2 launch-scripts, could do not only substitutions of ROS-parameters existing in original YAML, but rather additions of new parameters, that did not exist in the YAML. Certainly, these parameters should be declared for target ROS-nodes, otherwise they won\u2019t be processed in run-time. In such functionality, they should be expressed in absolute values, separated by a dot. For example, the rewrite for aprune_distanceparameter of aFollowPathnode will look like'controller_server.ros__parameters.FollowPath.prune_distance':'1.0'in aparam_rewritesdictionary ofRewrittenYaml()argument. The change was intoroduced in the scope ofPR #3785fix.\n\n## Simple Commander API Allows Multi-Robot Namespacing\uf0c1 The Simple Navigator API now allows multi-robot namespacing by exposing anamespacefield in the constructor to allow you to specify the Nav2 stacks\u2019 namespace for a robot or system. Seethis PR for details."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13986c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 12968, "chroma:document": "## Change duration type in wait_action node\uf0c1 In thisPR #3871the type of duration variable in wait_action node is changed from int to double, which allows you to use floating values for wait_action.\n\n## The costmap activation fails when required transforms are not available\uf0c1 In thisPR #3866the parameterinitial_transform_timeoutis added to the costmap. The activation of the costmap now fails, if the transformation from the robot base frame to the global frame does not become available during this timeout.\n\n## Subtrees Obtain Shared Resources\uf0c1 PR #3911gives all sub-trees in BT.CPP the same shared resources as the main tree (node, shared timeouts, etc)."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139880-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 13627, "chroma:document": "## Collision Monitor: added watchdog mechanism based onsource_timeoutparameter with default blocking behavior\uf0c1 PR #3880adds a watchdog mechanism that stops the robot if a source data is not published yet, or if no new data is received within thesource_timeout`parameter, or if impossible to transform data to base frame.source_timeoutparameter can now be set per source: ifsource_timeoutis not set for a source, the value of the nodesource_timeoutparameter is used. Additionally, this watchdog mechanism can be disabled by settingsource_timeout:0.0."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139894-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 14178, "chroma:document": "## BtActionServer: use native library haltTree()\uf0c1 PR #3950changes the method used byBehaviorTreeEngine::haltAllActionsto halt the BT nodes to the bt.cpp native methodhaltTree(). Before this change, only the active BT node was halted when finishing the action. After this change, all BT nodes halt() methods are called. This is very convenient to handle cleaning operation (switch off your lights when leaving) in halt(). Also updated nav2_behavior_tree::BtActionServer::haltTree() to use the same. It is used nowhere in nav2 but is useful for external users (like me) that want for instance to halt the tree on preemption.\n\n## Global Frame Removed from 2 BT Nodes\uf0c1 The Global Frame was removed fromRemovePassedGoalsandGoalReachedBT nodes and instead using theframe_idof the goal\u2019s headers for transformation."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1398a8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 14988, "chroma:document": "## Introduction ofCostmapUpdate.msg\uf0c1 PR #3965introduces a new type of message -CostmapUpdate.msg. It is the update message related to theCostmap.msg. Now instead of sending the whole costmap in every message, such as withCostmap.msg, theCostmapUpdate.msgincludes only the area of the costmap that has changed since the previous update message. TheCostmap.msgis sent only once at the beginning, followed by the messages of theCostmapUpdate.msgtype. The idea is to mimic theOccupancyGrid.msgandOccupancyGridUpdate.msgbehavior. To activate this feature, the Costmap2D ROS parameteralways_send_full_costmaphas to be set tofalse. To subscribe toCostmap.msgandCostmapUpdate.msgit is recommended to use theCostmapSubscriberclass.\n\n## Full Stack Uses Node Clocks\uf0c1 The stack no longer contains wall timers or wall rates. It will now use the node clocks. This will be ROS Time for simulation whenuse_sim_timeis true. Else, it uses a steady clock."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1398bc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 15926, "chroma:document": "## New Graceful Motion Controller\uf0c1 PR #4021introduces a new type of controller for differential robots based on a pose-following kinematic control law that generates a smooth and comfortable trajectory. SeeGraceful Controllerfor more information.\n\n## Plugin Libraries in BT Navigator Only Includes Custom Nodes\uf0c1 New to Jazzy, theplugin_lib_namesparameter implicitly includes all Nav2 BT nodes automatically. It is only required now to specify additional user-generated BT plugins to load."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1398d0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 16416, "chroma:document": "## New RViz Plugin for selecting Planners, Controllers, Goal Checkers, Progress Checkers and Smoothers\uf0c1 In PR #4091a new RViz plugin was added to select the planner, controller, goal checker, progress checker, and smoother on the fly. The primary goal of this plugin is to facilitate the developers and easy integration testing of their configuration before deploying the robot in the intended application. In order to facilitate the dynamic selection of the specified components, the BT selector nodes for all these components were utilized and were updated to all the relevant BT nodes. Here we can see the working demo of the plugin: In the GIF, it can be seen that there are two controller_ids namely,FollowPathandHighSpeedFollowPath. By default, the one defined in the Behavior tree is utilized. In this case, theFollowPathis the default controller_id. The difference between the two controller_ids is that HighSpeedFollowPath has a higher max velocity compared to the FollowPath. This difference can be well noted in"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1398ee-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 17383, "chroma:document": "to the FollowPath. This difference can be well noted in the GIF."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139902-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 17449, "chroma:document": "## RPP new optionalinterpolate_curvature_after_goalbehavior and fix conflict betweenuse_rotate_to_headingandallow_reversing\uf0c1 In PR #4140a new optionalinterpolate_curvature_after_goalparameter (defaultfalse) was added that activates the interpolation of a carrot after the goal in order to maintain a constant curvature lookahead distance. This is to avoid instabilities at the end of the path on the generation of the angular speed. The carrot used for the linear speed computation stays the same. Interpolation is based on the orientation of the vector formed by the last 2 poses of the path. Hence paths of length 1 are rejected wheninterpolate_curvature_after_goalistrue. It can be used only whenuse_fixed_curvature_lookahead:true. Additionally, the conflict betweenuse_rotate_to_headingandallow_reversingwas fixed souse_rotate_to_headingcan now be used backward."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139916-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 18317, "chroma:document": "## Cancel Checker Interface For GlobalPlanner\uf0c1 PR #4148introduces a new interface for theGlobalPlannerto allow for the cancellation of the current planning task. Before the planners would continue to plan even if the goal was cancelled, now they can check it and stop planning if the goal is cancelled. New interface forGlobalPlanner::createPlan: This is implemented for all the planners in the stack, you can check them for the example use ofcancel_checkerfunction (simply checkcancel_checker()). Smac and Theta* planners have a new parameterterminal_checking_intervalwhich is the frequency of the cancel or timeout checking in terms of number of iterations.\n\n## New BtActionServer/BtNavigator parameter\uf0c1 PR #4209introduces a new boolean parameteralways_reload_bt_xml, which enables the possibility to always reload a requested behavior tree XML description, regardless of the currently active XML. This allows keeping the action server running while changing/developing the XML description."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13992a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 19311, "chroma:document": "## New collision monitor parameter\uf0c1 PR #4207introduces a new boolean parameterpolygon_subscribe_transient_local(value is false by default), which set the QoS durability for polygon topic or footprint topic subscription.\n\n## New graceful cancellation API for Controllers\uf0c1 PR #4136introduces a new graceful cancellation API for controllers. Previously when a goal was canceled, the controller would stop the robot immediately. This API allows the controller to stop the robot in a more graceful way. The new API is implemented in theRegulatedPurePursuitControllerby adding a new parametercancel_deceleration. So when the goal is canceled, a constant deceleration will be used while continuing to track the path to stop the robot instead of stopping immediately. This API can be should be added to all controllers that have acceleration limits."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13993e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 20154, "chroma:document": "## Standardization of Plugin Naming with Double Colons (::)\uf0c1 `PR #4220`_standardizes plugin naming across the Navigation2 package to use double colons (::), replacing the previous mixed use of slashes (/) and double colons. Affected plugins include:\n\n## Collision monitor: dynamic radius for circle type polygons\uf0c1 PR #4226introduces usage of parameter<polygon_name>.polygon_sub_topicfor circle type polygons. If parameter<polygon_name>.radiusis not set, collision monitor node subscribes to topic<polygon_name>.polygon_sub_topic(subscription type isstd_msgs/msg/Float32), and the current circle polygon radius will be updating accordingly to received messages on topic."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13995c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 20825, "chroma:document": "## Static Layer: new parameterfootprint_clearing_enabled\uf0c1 PR #4282introduces usage of parameterfootprint_clearing_enabledfor the static layer. It works similarly to thefootprint_clearing_enabledparameter in the obstacle and voxel layer. If set totrue, the static layer will clear the costmap cells that are within the robot\u2019s footprint. It isfalseby default to keep the previous behavior.\n\n## Lifecycle Node: added bond_heartbeat_period parameter (and allow disabling the bond mechanism)\uf0c1 PR #4342adds the parameterbond_heartbeat_periodto the lifecycle nodes to customize the bond mechanism publishing period (on the/bondtopic). Default value unchanged to 0.1s. Disabled if inferior or equal to 0.0."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139970-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 21526, "chroma:document": "## Rotation Shim Controller: new parameterrotate_to_goal_heading\uf0c1 PR #4332introduces usage of parameterrotate_to_goal_headingfor the rotation shim controller. It allows the rotation shim controller to take back control when reaching the XY goal tolerance to perform a clean rotation towards the goal heading. Some controllers will do this internally, but it is a useful option for others.\n\n## MPPI Controller: Addition of acceleration constraints\uf0c1 PR #4352adds new parametersax_max,ax_min,ay_max,az_maxfor the MPPI controller. These parameters will enable the MPPI controller to generate local trajectories within the specified acceleration constraints.\n\n## RegulatedPurePursuit Controller [RPP]: new parameteruse_cancel_deceleration\uf0c1 PR #4441adds a new parameter use_cancel_deceleration for the regulated pure pursuit controllers. This parameter enables the controller to use a constant deceleration to stop the robot gracefully instead of stopping immediately when a goal is canceled.\n\nCode Examples:\n\nLanguage: unknown"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139984-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Iron to Jazzy\uf0c1.txt", "start_index": 22514, "chroma:document": "Code Examples:\n\nLanguage: unknown\n\nFile: \"[[p1.x,p1.y],[p2.x,p2.y],[p3.x,p3.y],...]\"\n\n```\n\nPolygonFront\n\n:\n\ntype\n\n:\n\n\"polygon\"\n\npoints\n\n:\n\n\"[[0.3,\n\n0.3],\n\n[0.3,\n\n0.3],\n\n[0.0,\n\n0.3],\n\n[0.0,\n\n0.3]]\"\n\naction_type\n\n:\n\n\"none\"\n\nmin_points\n\n:\n\n4\n\nvisualize\n\n:\n\nTrue\n\npolygon_pub_topic\n\n:\n\n\"polygon_front\"\n\n```\n\nLanguage: unknown\n\nFile: /etc/security/limits.conf\n\n```\n\n<username> soft rtprio 99\n\n<username> hard rtprio 99\n\n```\n\nLanguage: unknown\n\nFile: ObstaclesCritic\n\n```\n\nbt_navigator\n\n:\n\nros__parameters\n\n:\n\ndefault_nav_to_pose_bt_xml\n\n:\n\n$(find\n\npkg\n\nshare my_package)/behavior_tree/my_nav_to_pose_bt.xml\n\n```\n\nLanguage: unknown\n\nFile: GlobalPlanner::createPlan\n\n```\n\nvirtual\n\nnav_msgs\n\n::\n\nmsg\n\n::\n\nPath\n\ncreatePlan\n\n(\n\nconst\n\ngeometry_msgs\n\n::\n\nmsg\n\n::\n\nPoseStamped\n\n&\n\nstart\n\n,\n\nconst\n\ngeometry_msgs\n\n::\n\nmsg\n\n::\n\nPoseStamped\n\n&\n\ngoal\n\n,\n\nstd\n\n::\n\nfunction\n\n<\n\nbool\n\n()\n\n>\n\ncancel_checker\n\n)\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1399a2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Configuration Guide\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Configuration Guide\uf0c1\n\nURL: https://docs.nav2.org/configuration/index.html\n\nSection: configuration/index.html\n\n--------------------------------------------------------------------------------"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1399b6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/PlannerSelector\uf0c1.txt", "start_index": 0, "chroma:document": "Title: PlannerSelector\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/PlannerSelector.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Output Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: transientlocal\n\n```\n\n<PlannerSelector\n\nselected_planner=\n\n\"{selected_planner}\"\n\ndefault_planner=\n\n\"GridBased\"\n\ntopic_name=\n\n\"planner_selector\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1399ca-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Kinematic Parameters\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Kinematic Parameters\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/dwb\n\nparams/kinematic.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1 <dwbplugin>: DWB plugin name defined in thecontroller_plugin_idsparameter inController Server."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1399de-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Behavior Server\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Behavior Server\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring-behavior-server.html#backup-behavior-parameters\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Behavior Server Parameters\uf0c1\n\n## Default Plugins\uf0c1\n\nWhen thebehavior_pluginsparameter is not overridden, the following default plugins are loaded:\n\n## Spin Behavior Parameters\uf0c1\n\nSpin distance is given from the action request\n\n## BackUp Behavior Parameters\uf0c1\n\nBackup distance, speed and time_allowance is given from the action request.\n\n## DriveOnHeading Behavior Parameters\uf0c1\n\nDriveOnHeading distance, speed and time_allowance is given from the action request.\n\n## AssistedTeleop Behavior Parameters\uf0c1\n\nAssistedTeleop time_allowance is given in the action request\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: plugin\n\n```\n\nbehavior_server\n\n:\n\nros__parameters\n\n:\n\nbehavior_plugins\n\n:\n\n[\n\n\"spin\"\n\n,\n\n\"backup\"\n\n,\n\n\"drive_on_heading\"\n\n,\n\n\"wait\"\n\n]\n\nspin\n\n:\n\nplugin"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb1399f2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Behavior Server\uf0c1.txt", "start_index": 960, "chroma:document": "\"backup\"\n\n,\n\n\"drive_on_heading\"\n\n,\n\n\"wait\"\n\n]\n\nspin\n\n:\n\nplugin\n\n:\n\n\"nav2_behaviors::Spin\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\nbackup\n\n:\n\nplugin\n\n:\n\n\"nav2_behaviors::BackUp\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\ndrive_on_heading\n\n:\n\nplugin\n\n:\n\n\"nav2_behaviors::DriveOnHeading\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\nwait\n\n:\n\nplugin\n\n:\n\n\"nav2_behaviors::Wait\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\n```\n\nLanguage: unknown\n\nFile: TwistStamped\n\n```\n\nbehavior_server\n\n:\n\nros__parameters\n\n:\n\nlocal_costmap_topic\n\n:\n\nlocal_costmap/costmap_raw\n\nlocal_footprint_topic\n\n:\n\nlocal_costmap/published_footprint\n\nglobal_costmap_topic\n\n:\n\nglobal_costmap/costmap_raw\n\nglobal_footprint_topic\n\n:\n\nglobal_costmap/published_footprint\n\ncycle_frequency\n\n:\n\n10.0\n\nbehavior_plugins\n\n:\n\n[\n\n\"spin\"\n\n,\n\n\"backup\"\n\n,\n\n\"drive_on_heading\"\n\n,\n\n\"wait\"\n\n,\n\n\"assisted_teleop\"\n\n]\n\nspin\n\n:\n\nplugin\n\n:\n\n\"nav2_behaviors::Spin\""}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139a10-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Behavior Server\uf0c1.txt", "start_index": 1893, "chroma:document": "]\n\nspin\n\n:\n\nplugin\n\n:\n\n\"nav2_behaviors::Spin\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\nbackup\n\n:\n\nplugin\n\n:\n\n\"nav2_behaviors::BackUp\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\ndrive_on_heading\n\n:\n\nplugin\n\n:\n\n\"nav2_behaviors::DriveOnHeading\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\nwait\n\n:\n\nplugin\n\n:\n\n\"nav2_behaviors::Wait\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\nassisted_teleop\n\n:\n\nplugin\n\n:\n\n\"nav2_behaviors::AssistedTeleop\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\nlocal_frame\n\n:\n\nodom\n\nglobal_frame\n\n:\n\nmap\n\nrobot_base_frame\n\n:\n\nbase_link\n\ntransform_timeout\n\n:\n\n0.1\n\nsimulate_ahead_time\n\n:\n\n2.0\n\nmax_rotational_vel\n\n:\n\n1.0\n\nmin_rotational_vel\n\n:\n\n0.4\n\nrotational_acc_lim\n\n:\n\n3.2\n\nenable_stamped_cmd_vel\n\n:\n\ntrue\n\n# default false in Jazzy or older\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139a24-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/NavigateThroughPoses\uf0c1.txt", "start_index": 0, "chroma:document": "Title: NavigateThroughPoses\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/NavigateThroughPoses.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Output Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n<NavigateThroughPoses\n\ngoals=\n\n\"{goals}\"\n\nserver_name=\n\n\"NavigateThroughPoses\"\n\nserver_timeout=\n\n\"10\"\n\nerror_code_id=\n\n\"{navigate_through_poses_error_code}\"\n\nbehavior_tree=\n\n\"<some\n\npath>/behavior_trees/navigate_through_poses_w_replanning_and_recovery.xml\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139a38-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/RecoveryNode\uf0c1.txt", "start_index": 0, "chroma:document": "Title: RecoveryNode\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/controls/RecoveryNode.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n<RecoveryNode\n\nnumber_of_retries=\n\n\"1\"\n\n>\n\n<!-\n\nAdd tree components here--\n\n>\n\n</RecoveryNode>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139a56-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/PoseProgressChecker\uf0c1.txt", "start_index": 0, "chroma:document": "Title: PoseProgressChecker\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/nav2_controller\n\nplugins/pose_progress_checker.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1 <nav2_controllerplugin>: nav2_controller plugin name defined in theprogress_checker_plugin_idparameter inController Server."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139a6a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/TruncatePathLocal\uf0c1.txt", "start_index": 0, "chroma:document": "Title: TruncatePathLocal\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/TruncatePathLocal.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Output Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n<TruncatePathLocal\n\ninput_path=\n\n\"{path}\"\n\noutput_path=\n\n\"{path_local}\"\n\ndistance_forward=\n\n\"3.5\"\n\ndistance_backward=\n\n\"2.0\"\n\nrobot_frame=\n\n\"base_link\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139a7e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigate To Pose With Consistent Replanning And If Path Becomes Invalid\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Navigate To Pose With Consistent Replanning And If Path Becomes Invalid\uf0c1\n\nURL: https://docs.nav2.org/behavior_trees/trees/nav_to_pose_with_consistent_replanning_and_if_path_becomes_invalid.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\nCode Examples:\n\nLanguage: unknown\n\nFile: FollowPath\n\n```\n\n<root\n\nmain_tree_to_execute=\n\n\"MainTree\"\n\n>\n\n<BehaviorTree\n\nID=\n\n\"MainTree\"\n\n>\n\n<RecoveryNode\n\nnumber_of_retries=\n\n\"6\"\n\nname=\n\n\"NavigateRecovery\"\n\n>\n\n<PipelineSequence>\n\n<ControllerSelector\n\nselected_controller=\n\n\"{selected_controller}\"\n\ndefault_controller=\n\n\"FollowPath\"\n\ntopic_name=\n\n\"controller_selector\"\n\n/>\n\n<PlannerSelector\n\nselected_planner=\n\n\"{selected_planner}\"\n\ndefault_planner=\n\n\"GridBased\"\n\ntopic_name=\n\n\"planner_selector\"\n\n/>\n\n<RateController\n\nhz=\n\n\"1.0\"\n\nname=\n\n\"RateControllerComputePathToPose\"\n\n>\n\n<RecoveryNode\n\nnumber_of_retries=\n\n\"1\"\n\nname=\n\n\"RecoveryComputePathToPose\"\n\n>\n\n<Fallback\n\nname=\n\n\"FallbackComputePathToPose\"\n\n>"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139a92-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigate To Pose With Consistent Replanning And If Path Becomes Invalid\uf0c1.txt", "start_index": 969, "chroma:document": ">\n\n<Fallback\n\nname=\n\n\"FallbackComputePathToPose\"\n\n>\n\n<ReactiveSequence\n\nname=\n\n\"CheckIfNewPathNeeded\"\n\n>\n\n<Inverter>\n\n<GlobalUpdatedGoal/>\n\n</Inverter>\n\n<IsPathValid\n\npath=\n\n\"{path}\"\n\n/>\n\n</ReactiveSequence>\n\n<ComputePathToPose\n\ngoal=\n\n\"{goal}\"\n\npath=\n\n\"{path}\"\n\nplanner_id=\n\n\"{selected_planner}\"\n\nerror_code_id=\n\n\"{compute_path_error_code}\"\n\n/>\n\n</Fallback>\n\n<ClearEntireCostmap\n\nname=\n\n\"ClearGlobalCostmap-Context\"\n\nservice_name=\n\n\"global_costmap/clear_entirely_global_costmap\"\n\n/>\n\n</RecoveryNode>\n\n</RateController>\n\n<RecoveryNode\n\nnumber_of_retries=\n\n\"1\"\n\nname=\n\n\"RecoveryFollowPath\"\n\n>\n\n<FollowPath\n\npath=\n\n\"{path}\"\n\ncontroller_id=\n\n\"{selected_controller}\"\n\nerror_code_id=\n\n\"{follow_path_error_code}\"\n\n/>\n\n<ClearEntireCostmap\n\nname=\n\n\"ClearLocalCostmap-Context\"\n\nservice_name=\n\n\"local_costmap/clear_entirely_local_costmap\"\n\n/>\n\n</RecoveryNode>\n\n</PipelineSequence>\n\n<ReactiveFallback\n\nname=\n\n\"FallbackRecoveries\"\n\n>\n\n<GoalUpdated/>\n\n<RoundRobin\n\nname=\n\n\"RecoveryActions\"\n\n>\n\n<Sequence\n\nname=\n\n\"ClearingActions\"\n\n>"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139aa6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigate To Pose With Consistent Replanning And If Path Becomes Invalid\uf0c1.txt", "start_index": 1928, "chroma:document": "\"RecoveryActions\"\n\n>\n\n<Sequence\n\nname=\n\n\"ClearingActions\"\n\n>\n\n<ClearEntireCostmap\n\nname=\n\n\"ClearLocalCostmap-Subtree\"\n\nservice_name=\n\n\"local_costmap/clear_entirely_local_costmap\"\n\n/>\n\n<ClearEntireCostmap\n\nname=\n\n\"ClearGlobalCostmap-Subtree\"\n\nservice_name=\n\n\"global_costmap/clear_entirely_global_costmap\"\n\n/>\n\n</Sequence>\n\n<Spin\n\nname=\n\n\"SpinRecovery\"\n\nspin_dist=\n\n\"1.57\"\n\n/>\n\n<Wait\n\nname=\n\n\"WaitRecovery\"\n\nwait_duration=\n\n\"5.0\"\n\n/>\n\n<BackUp\n\nname=\n\n\"BackUpRecovery\"\n\nbackup_dist=\n\n\"0.30\"\n\nbackup_speed=\n\n\"0.05\"\n\n/>\n\n</RoundRobin>\n\n</ReactiveFallback>\n\n</RecoveryNode>\n\n</BehaviorTree>\n\n</root>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139aba-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Adding a New Nav2 Task Server\uf0c1\n\nURL: https://docs.nav2.org/tutorials/docs/adding_a_nav2_task_server.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Lifecycle Nodes\uf0c1\n\nThe Lifecycle node is the first key component of a nav2 task server. Lifecycle nodes were introduced in ROS 2 to systematically manage the bringup and shutdown of the different nodes involved in the robot\u2019s operation. The use of Lifecycle nodes ensures that all nodes are successfully instantiated before they begin their execution and Nav2 shuts down all nodes if there is any unresponsive node.\n\nLifecycle nodes contain state machine transitions that enable deterministic behavior in ROS 2 servers. The Lifecycle node transitions in Nav2 are handled by theLifecycleManager. The Lifecycle Manager transitions the states of the Lifecycle nodes and provides greater control over the state of a system."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139ace-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 955, "chroma:document": "The primary states of a Lifecycle node areUnconfigured,Inactive,Active, andFinalized. A Lifecycle node starts in anUnconfiguredstate after being instantiated. The Lifecycle Manager transitions a node fromUnconfiguredtoInactiveby implementing theConfiguratingtransition. TheConfiguratingtransition sets up all configuration parameters and prepares any required setup such as memory allocation and the set up of the static publication and subscription topics. A node in theInactivestate is allowed to reconfigure its parameters and but cannot perform any processing. From theInactivestate, the Lifecycle Manager implements theActivatingtransition state to transition the node fromInactivetoActive, which is the main state. A node in theActivestate is allowed to perform any processing operation. In case a node crashes, the Lifecycle Manager shuts down the system to prevent any critical failures. On shutdown, the necessary cleanup operations are performed and the nodes are transitioned to theFinalizedstate"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139aec-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 1901, "chroma:document": "performed and the nodes are transitioned to theFinalizedstate viaDeactivating,CleaningUp, andShuttingDowntransition states."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139b00-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 2026, "chroma:document": "You may wish to integrate your own nodes into the Nav2 framework or add new lifecycle nodes to your system. As an example, we will add a new notional lifecycle nodesensor_driver, and have it be controlled via the Nav2 Lifecycle Manager to ensure sensor feeds are available before activating navigation. You can do so by adding asensor_drivernode in your launch file and adding it to the list of nodes to be activated by thelifecycle_managerbefore navigation, as shown in the example below."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139b14-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 2517, "chroma:document": "In the snippet above, the nodes to be handled by the Lifecycle Manager are set using thenode_namesparameter. Thenode_namesparameter takes in an ordered list of nodes to bringup through the Lifecycle transition. As shown in the snippet, thenode_namesparameter takes inlifecycle_nodeswhich contains the list of nodes to be added to the Lifecycle Manager. The Lifecycle Manager implements bringup transitions (ConfiguringandActivating) to the nodes one-by-one and in order, while the nodes are processed in reverse order for shutdown transitions. Hence, thesensor_driveris listed first before the other navigation servers so that the sensor data is available before the navigation servers are activated."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139b28-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 3219, "chroma:document": "Two other parameters of the Lifecycle Manager areautostartandbond_timeout. Setautostarttotrueif you want to set the transition nodes to theActivestate on startup. Otherwise, you will need to manually trigger Lifecycle Manager to transition up the system. Thebond_timeoutsets the waiting time to decide when to transition down all of the nodes if a node is not responding.\n\n## Composition\uf0c1\n\nComposition is the second key component nav2 task servers that was introduced to reduce the memory and CPU resources by putting multiple nodes in a single process. In Nav2, Composition can be used to compose all Nav2 nodes in a single process instead of launching them separately. This is useful for deployment on embedded systems where developers need to optimize resource usage.\n\nIn the following section, we give an example on how to add a new Nav2 server, which we notionally call theroute_server, to our system."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139b3c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 4127, "chroma:document": "We make use of the launch files to compose different servers into a single process. The process is established by theComposableNodeContainercontainer that is populated with composition nodes viaComposableNode. This container can then be launched and used the same as any other Nav2 node.\n\n## Error codes\uf0c1\n\nYour nav2 task server may also wish to return a \u2018error_code\u2019 in its action response (though not required). If there are semantically meaningful and actionable types of failures for your system, this is a systemic way to communicate those failures which may be automatically aggregated into the responses of the navigation system to your application.\n\nIt is important to note that error codes from 0-9999 are reserved for internal nav2 servers with each server offset by 100 while external servers start at 10000 and end at 65535.\n\nThe table below shows the current servers along with the expected error code structure."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139b50-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 5053, "chroma:document": "Error codes are attached to the response of the action message. An example can be seen below for the route server. Note that by convention we set the error code field within the message definition toerror_code.\n\nAs stated in the message, the priority order of the errors should match the message order, 0 is reserved for NONE and the first error code in the sequence is reserved for UNKNOWN.\n\nSince the the route server is a external server, the errors codes start at 10000 and go up to 10099.\n\nIn order to propagate your server\u2019s error code to the rest of the system it must be added to the nav2_params.yaml file.\n\nTheerror_code_id_namesinside of the BT Navigator define what error codes to look for on the blackboard by the server. The lowest error code of the sequence is then returned - whereas the code enums increase the higher up in the software stack - giving higher priority to lower-level failures.\n\n## Conclusion\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139b64-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 5963, "chroma:document": "## Conclusion\uf0c1\n\nIn this section of the guide, we have discussed Lifecycle Nodes, Composition and Error Codes which are new and important concepts in ROS 2. We also showed how to implement Lifecycle Nodes, Composition and Error Codes to your newly created nodes/servers with Nav2. These three concepts are helpful to efficiently run your system and therefore are encouraged to be used throughout Nav2.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: lifecycle_manager\n\n```\n\nlifecycle_nodes\n\n=\n\n[\n\n'sensor_driver'\n\n,\n\n'controller_server'\n\n,\n\n'smoother_server'\n\n,\n\n'planner_server'\n\n,\n\n'behavior_server'\n\n,\n\n'bt_navigator'\n\n,\n\n'waypoint_follower'\n\n]\n\n...\n\nNode\n\n(\n\npackage\n\n=\n\n'nav2_sensor_driver'\n\n,\n\nexecutable\n\n=\n\n'sensor_driver'\n\n,\n\nname\n\n=\n\n'sensor_driver'\n\n,\n\noutput\n\n=\n\n'screen'\n\n,\n\nparameters\n\n=\n\n[\n\nconfigured_params\n\n],\n\nremappings\n\n=\n\nremappings\n\n),\n\nNode\n\n(\n\npackage\n\n=\n\n'nav2_lifecycle_manager'\n\n,\n\nexecutable\n\n=\n\n'lifecycle_manager'\n\n,\n\nname\n\n=\n\n'lifecycle_manager_navigation'\n\n,\n\noutput\n\n=\n\n'screen'\n\n,\n\nparameters"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139b82-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 6946, "chroma:document": ",\n\noutput\n\n=\n\n'screen'\n\n,\n\nparameters\n\n=\n\n[{\n\n'autostart'\n\n:\n\nautostart\n\n},\n\n{\n\n'node_names'\n\n:\n\nlifecycle_nodes\n\n}]),\n\n```\n\nLanguage: unknown\n\nFile: ComposableNode()\n\n```\n\ncontainer\n\n=\n\nComposableNodeContainer\n\n(\n\nname\n\n=\n\n'my_container'\n\n,\n\nnamespace\n\n=\n\n''\n\n,\n\npackage\n\n=\n\n'rclcpp_components'\n\n,\n\nexecutable\n\n=\n\n'component_container'\n\n,\n\ncomposable_node_descriptions\n\n=\n\n[\n\nComposableNode\n\n(\n\npackage\n\n=\n\n'nav2_route_server'\n\n,\n\nplugin\n\n=\n\n'nav2_route_server::RouteServer'\n\n,\n\nname\n\n=\n\n'nav2_route_server'\n\n),\n\n],\n\noutput\n\n=\n\n'screen'\n\n,\n\n)\n\n```\n\nLanguage: unknown\n\nFile: package.xml\n\n```\n\n<exec_depend>\n\nnav2_route_server\n\n</exec_depend>\n\n```\n\nLanguage: unknown\n\nFile: error_code\n\n```\n\n# Error codes\n\n# Note: The expected priority order of the errors should match the message order\n\nuint16\n\nNONE\n\n=\n\n0\n\n# 0 is reserved for NONE\n\nuint16\n\nUNKNOWN\n\n=\n\n10000\n\n# first error code in the sequence is reserved for UNKNOWN\n\n# User Error codes below\n\nint16\n\nINVALID_START\n\n=\n\n10001\n\nint16\n\nNO_VALID_ROUTE\n\n=\n\n10002"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139b96-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Adding a New Nav2 Task Server\uf0c1.txt", "start_index": 7899, "chroma:document": "INVALID_START\n\n=\n\n10001\n\nint16\n\nNO_VALID_ROUTE\n\n=\n\n10002\n\n#goal definition\n\nroute_msgs/PoseStamped\n\ngoal\n\nroute_msgs/PoseStamped\n\nstart\n\nstring\n\nroute_id\n\n---\n\n#result definition\n\nnav_msgs/Route\n\nroute\n\nbuiltin_interfaces/Duration\n\nroute_time\n\nuint16\n\nerror_code\n\n---\n\n```\n\nLanguage: unknown\n\nFile: error_code\n\n```\n\nerror_code_id_names\n\n:\n\ncompute_path_error_code_id\n\nfollow_path_error_code_id\n\nroute_error_code_id\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139baa-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Humble to Iron\uf0c1\n\nURL: https://docs.nav2.org/migration/Humble.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## New Behavior-Tree Navigator Plugins\uf0c1 New inPR 3345, the navigator types are exposed to users as plugins that can be replaced or new navigator types added. The default behaviors of navigate to pose and navigate through poses continue to be default behavior but are now customizable with new action interface definitions. These plugins implement thenav2_core::BehaviorTreeNavigatorbase class, which must process the action request, feedback, and completion messages. The behavior tree is handled by this base class with as much general logic as possible abstracted away from users to minimize repetition. SeeWriting a New Navigator Pluginfor a tutorial about writing new navigator plugins."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139bbe-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 885, "chroma:document": "## Added Collision Monitor\uf0c1 PR 2982adds new safety layer operating independently of Nav2 stack which ensures the robot to control the collisions with near obstacles, obtained from different sensors (LaserScan, PointCloud, IR, Sonars, etc\u2026). SeeCollision Monitorfor more details. It is not included in the default bringup batteries included fromnav2_bringup.\n\n## Removed use_sim_time from yaml\uf0c1 PR #3131makes it possible to set the use_sim_time parameter from the launch file for multiple nodes instead of individually via the yaml files. If using the Nav2 launch files, you can optionally remove the use_sim_time parameter from your yaml files and set it via a launch argument.\n\n## Run-time Speed up of Smac Planner\uf0c1 The core data structure of the graph implementation in the Smac Planner framework was swapped out inPR 3201to using a specialized unordered map implementation. This speeds up the planner by 10% on trivial requests and reports up to 30% on complex plans that involve numerous rehashings."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139bd2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 1890, "chroma:document": "## Recursive Refinement of Smac and Simple Smoothers\uf0c1 The number of recursive refinements for the Simple and Smac Planner Smoothers have been exposed under therefinement_numparameter. Previous behavior had this hardcoded ifdo_refinement=Trueto4. Now, default is2to help decrease out-of-the-box over smoothing reducing in paths closer to collision than probably ideal, but old behavior can be achieved by changing this to4.\n\n## Simple Commander Python API\uf0c1 PR 3159and follow-up PRs add in Costmap API in Python3 simple commander to receiveOccupancyGridmessages from Nav2 and be able to work with them natively in Python3, analog to the C++ Costmap API. It also includes a line iterator and collision checking object to perform footprint or other collision checking in Python3. See the Simple Commander API for more details.\n\n## Smac Planner Start Pose Included in Path\uf0c1 PR 3168adds the starting pose to the Smac Planners that was previously excluded during backtracing."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139be6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 2860, "chroma:document": "## Parameterizable Collision Checking in RPP\uf0c1 PR 3204adds makes collision checking for RPP optional (default on).\n\n## Expanded Planner Benchmark Tests\uf0c1 PR 3218adds launch files and updated scripts for performing objective random planning tests across the planners in Nav2 for benchmarking and metric computation.\n\n## Smac Planner Path Tolerances\uf0c1 PR 3219adds path tolerances to Hybrid-A* and State Lattice planners to return approximate paths if exact paths cannot be found, within a configurable tolerance aroun the goal pose.\n\n## costmap_2d_node default constructor\uf0c1 PR #3222changes the constructor used by the standalone costmap node. The new constructor does not set a name and namespace internally so it can be set via the launch file."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139bfa-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 3602, "chroma:document": "## Feedback for Navigation Failures\uf0c1 PR #3146updates the global planners to throw exceptions on planning failures. These exceptions get reported back to the planner server which in turn places a error code on the Behavior Tree Navigator\u2019s blackboard for use in contextual error handling in the autonomy application. The following errors codes are supported (with more to come as necessary): Unknown, TF Error, Start or Goal Outside of Map, Start or Goal Occupied, Timeout, or No Valid Path Found. PR #3248updates the compute path through poses action to report planning failures. These exceptions get reported back to the planner server which in turn places a error code on the Behavior Tree Navigator\u2019s blackboard for use in contextual error handling in the autonomy application. The following errors codes are supported (with more to come as necessary): Unknown, TF Error, Start or Goal Outside of Map, Start or Goal Occupied, Timeout, No Valid Path Found and No Waypoints given. PR #3227updates the controllers to throw"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139c0e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 4564, "chroma:document": "No Waypoints given. PR #3227updates the controllers to throw exceptions on failures. These exceptions get reported back to the controller server which in turn places a error code on the Behavior Tree Navigatior\u2019s blackboard for use in contextual error handling in the autonomy application. The following error codes are supported (with more to come as necessary): Unknown, TF Error, Invalid Path, Patience Exceeded, Failed To Make Progress, or No Valid Control. PR #3251pipes the highest priority error code through the bt_navigator and defines the error code structure. A new parameter for the the BT Navigator called \u201cerror_code_id_names\u201d was added to the nav2_params.yaml to define the error codes to compare. The lowest error in the \u201cerror_code_id_names\u201d is then returned in the action request (navigate to pose, navigate through poses waypoint follower), whereas the code enums increase the higher up in the software stack - giving higher priority to lower-level failures. The error codes produced from the servers"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139c2c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 5520, "chroma:document": "lower-level failures. The error codes produced from the servers follow the guidelines stated below. Error codes from 0 to 9999 are reserved for nav2 while error codes from 10000-65535 are reserved for external servers. Each server has two \u201creserved\u201d error codes. 0 is reserved for NONE and the first error code in the sequence is reserved for UNKNOWN. The current implemented servers with error codes are: This pr also updates the waypoint follower server to throw exceptions on failures. These exceptions get reported back to the server which in turn places a error code on the Behavior Tree Navigator\u2019s blackboard for use in contextual error handling in the autonomy application. The following errors codes are supported (with more to come as necessary): Unknown and Task Executor Failed. SeeAdding a New Nav2 Task Serverand the PR for additional information."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139c40-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 6383, "chroma:document": "## Costmap Filters\uf0c1 Costmap Filters now are have an ability to be enabled/disabled in run-time by callingtoggle_filterservice for appropriate filter (PR #3229). Added new binary flip filter, allowing e.g. to turn off camera in sensitive areas, turn on headlights/leds/other safety things or switch operating mode when robot is inside marked on mask areas (PR #3228).\n\n## Savitzky-Golay Smoother\uf0c1 Adding a new smoother algorithm, the Savitzky-Golay smoother to the smoother server plugin list. See the configuration guideSavitzky-Golay Smootherfor more details.\n\n## Changes to Map yaml file path for map_server node in Launch\uf0c1 PR #3174adds a way to set the path to map yaml file for the map_server node either from the yaml file or using the launch configuration parametermapgiving priority to the launch configuration parameter.yaml_filenameis no longer strictly required to be present innav2_params.yaml."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139c54-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 7290, "chroma:document": "## SmootherSelector BT Node\uf0c1 PR #3283adds a BT node to set the smoother based on a topic or a default. See the configuration guideSimple Smootherfor more details.\n\n## Publish Costmap Layers\uf0c1 PR #3320adds the ability for the nav2_costmap_2d package to publish out costmap data associated with each layer.\n\n## Give Behavior Server Access to Both Costmaps\uf0c1 PR #3255adds the ability for a behavior to access the local and global costmap. To update behaviors, any reference to the global_frame must be updated to the local_frame parameter along with theconfigurationmethod which now takes in the local and global collision checkers. Lastly,getResourceInfomust be overridden to returnCostmapInfoType::LOCAL. Other options includeGLOBALif the behavior useses global costmap and/or footprint) orBOTHif both are required. This allows us to only create and maintain the minimum amount of expensive resources."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139c68-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 8190, "chroma:document": "## New Model Predictive Path Integral Controller\uf0c1 The new Nav2 MPPI Controller is a predictive controller - a successor to TEB and pure path tracking MPC controllers - with Nav2. It uses a sampling based approach to select optimal trajectories, optimizing between successive iterations. It contains plugin-based objective functions for customization and extension for various behaviors and behavioral attributes. See the README.md andModel Predictive Path Integral Controllerpage for more detail."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139c7c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 8688, "chroma:document": "## Behavior Tree Uses Error Codes\uf0c1 PR #3324adds three new condition nodes to check for error codes on the blackboard set by action BT nodes which contain them. TheAreErrorCodesPresentcondition node allows the user to specify the error code from the server along with the error codes to match against. TheWouldAControllerRecoveryHelpchecks if the active error code is UNKNOWN, PATIENCE_EXCEEDED, FAILED_TO_MAKE_PROGRESS or NO_VALID_CONTROL. If the error code is a match, the condition returnsSUCCESS. These error code are potentially able to be cleared by a controller recovery. TheWouldAPlannerRecoveryHelpchecks if the active error code is UNKNOWN, NO_VALID_CONTROL, or TIMEOUT. If the error code is a match, the condition returnsSUCCESS. These error code are potentially able to be cleared by a planner recovery. TheWouldASmootherRecoveryHelpchecks if the active error code is UNKNOWN, TIMEOUT, FAILED_TO_SMOOTH_PATH, or SMOOTHED_PATH_IN_COLLISION. If the error code is a match, the condition returnsSUCCESS. These error"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139c90-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 9652, "chroma:document": "code is a match, the condition returnsSUCCESS. These error code are potentially able to be cleared by a smoother recovery."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139ca4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 9776, "chroma:document": "## Load, Save and Loop Waypoints from the Nav2 Panel in RViz\uf0c1 PR #3165provides three new functionalities for the nav2 panel in RViz, they are: Looping functionality is not specific to the nav2 panel in RViz. Users utilizing nav2_waypoint_follower can take advantage of the changes made to the FollowWaypoint action, by specifying the desired number of loops in the action request that will be eventually sent to the nav2_waypoint_follower server.\n\n## DWB Forward vs Reverse Pruning\uf0c1 PR #3374adds a newforward_prune_distanceparameter in the DWB controller. It replaces theprune_distancefor forward path shortening, enabled through theshorten_transformed_planboolean parameter. This change allows to use different values for forward and backward path shortening."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139cb8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 10538, "chroma:document": "## More stable regulation on curves for long lookahead distances\uf0c1 PR #3414adds a newuse_fixed_curvature_lookaheadparameter to the RPP controller. This makes slowing down on curve not dependent on the instantaneous lookahead point, but instead on a fixed distance set by the parametercurvature_lookahead_dist.\n\n## Publish Collision Monitor State\uf0c1 PR #3504adds a newstate_topicparameter to the CollisionMonitor. If specified, this optional parameter enables the state topic publisher. The topic reports the currently activated polygon action type and name.\n\n## Renamed ROS-parameter in Collision Monitor\uf0c1 PR #3513renamesmax_pointsparameter tomin_pointsand changes its meaning. Formerlymax_pointsmeant the maximum number of points inside the area still not triggering the action, whilemin_points- is a minimal number of points starting from the action to be initiated. In other wordsmin_pointsnow should be adjusted asmax_points+1."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139cd6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 11468, "chroma:document": "## New safety behavior model \u201climit\u201d in Collision Monitor\uf0c1 PR #3519adds a new collision monitor behavior modellimitthat restricts maximum linear and angular speed to specific values (linear_limitandangular_limit) if enough points are in the given shape.\n\n## Velocity smoother applies deceleration when timeout\uf0c1 PR #3512makes the VelocitySmoother apply the deceleration when the input command timeout.\n\n## PoseProgressChecker plugin\uf0c1 PR #3530adds a newnav2_controller::PoseProgressCheckerplugin. It builds on the behavior of theSimpleProgressCheckerby adding a new parameterrequired_movement_angle, allowing the plugin to considers that there is still progress when there is no translation movement, from the moment there is a rotation movement superior torequired_movement_anglewithin themovement_time_allowance."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139cea-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 12282, "chroma:document": "## Allow multiple goal checkers and change parameter progress_checker_plugin(s) name and type\uf0c1 PR #3555initializes the progress checker plugin(s) in the same way as for the goal checker and controller plugins: it is now a list of string and was renamed fromprogress_checker_plugintoprogress_checker_plugins, and the type changed fromstringtovector<string>. This allows the initialization of multiple progress checkers that can be chosen from the addedprogress_checker_idfieldof theFollowPathaction. Beware that it is a breaking change and that configuration files will need to be updated.\n\n## IsBatteryChargingCondition BT Node\uf0c1 PR #3553adds a BT node to check if the battery is charging. See the configuration guideIsBatteryChargingfor more details.\n\n## Behavior Server Error Codes\uf0c1 PR #3569updates the behavior server plugins to provide error codes on failure."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139cfe-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Humble to Iron\uf0c1.txt", "start_index": 13146, "chroma:document": "## New Denoise Costmap Layer Plugin\uf0c1 PR #2567adds the new plugin for filtering noise on the costmap. Due to errors inVoxelLayerorObstacleLayermeasurements, salt and pepper noise may appear on thecostmap. This noise creates false obstacles that prevent the robot from finding the best path on the map. The newDenoiseLayerplugin is designed to filter out noise-induced standalone obstacles or small obstacles groups. This plugin allows you to add layer that will filter local or global costmap. More information aboutDenoiseLayerplugin and how it works could be foundhere.\n\n## SmacPlannerHybrid viz_expansions parameter\uf0c1 PR #3577adds a new parameter for visualising SmacPlannerHybrid expansions for debug purpose."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139d12-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/RemoveInCollisionGoals\uf0c1.txt", "start_index": 0, "chroma:document": "Title: RemoveInCollisionGoals\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/RemoveInCollisionGoals.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Output Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_footprint=false\n\n```\n\n<RemoveInCollisionGoals\n\ninput_goals=\n\n\"{goals}\"\n\noutput_goals=\n\n\"{goals}\"\n\ncost_threshold=\n\n\"254.0\"\n\nuse_footprint=\n\n\"true\"\n\nservice_name=\n\n\"/global_costmap/get_cost_global_costmap\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139d26-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Odometry Calibration\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Odometry Calibration\uf0c1\n\nURL: https://docs.nav2.org/behavior_trees/trees/odometry_calibration.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n<root\n\nmain_tree_to_execute=\n\n\"MainTree\"\n\n>\n\n<BehaviorTree\n\nID=\n\n\"MainTree\"\n\n>\n\n<Repeat\n\nnum_cycles=\n\n\"3\"\n\n>\n\n<Sequence\n\nname=\n\n\"Drive in a square\"\n\n>\n\n<DriveOnHeading\n\ndist_to_travel=\n\n\"2.0\"\n\nspeed=\n\n\"0.2\"\n\ntime_allowance=\n\n\"12\"\n\n/>\n\n<Spin\n\nspin_dist=\n\n\"1.570796\"\n\nis_recovery=\n\n\"false\"\n\n/>\n\n<DriveOnHeading\n\ndist_to_travel=\n\n\"2.0\"\n\nspeed=\n\n\"0.2\"\n\ntime_allowance=\n\n\"12\"\n\n/>\n\n<Spin\n\nspin_dist=\n\n\"1.570796\"\n\nis_recovery=\n\n\"false\"\n\n/>\n\n<DriveOnHeading\n\ndist_to_travel=\n\n\"2.0\"\n\nspeed=\n\n\"0.2\"\n\ntime_allowance=\n\n\"12\"\n\n/>\n\n<Spin\n\nspin_dist=\n\n\"1.570796\"\n\nis_recovery=\n\n\"false\"\n\n/>\n\n<DriveOnHeading\n\ndist_to_travel=\n\n\"2.0\"\n\nspeed=\n\n\"0.2\"\n\ntime_allowance=\n\n\"12\"\n\n/>\n\n<Spin\n\nspin_dist=\n\n\"1.570796\"\n\nis_recovery=\n\n\"false\"\n\n/>\n\n</Sequence>"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139d3a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Odometry Calibration\uf0c1.txt", "start_index": 960, "chroma:document": "spin_dist=\n\n\"1.570796\"\n\nis_recovery=\n\n\"false\"\n\n/>\n\n</Sequence>\n\n</Repeat>\n\n</BehaviorTree>\n\n</root>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139d4e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Navigating with Speed Limits\uf0c1\n\nURL: https://docs.nav2.org/tutorials/docs/navigation2_with_speed_filter.html#enable-speed-filter\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Overview\uf0c1\n\nThis tutorial shows how to simply utilize Speed Filter which is designed to limit the maximum speed of robots in speed restriction areas marked on a map. This functionality is being covered bySpeedFiltercostmap filter plugin which will be enabled and used in this document.\n\n## Requirements\uf0c1\n\nIt is assumed that ROS 2, Gazebo and TurtleBot3 packages are installed or built locally. Please make sure that the Nav2 project is also built locally as it was made inBuild and Install.\n\n## Tutorial Steps\uf0c1\n\n## 1. Prepare filter mask\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139d62-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 749, "chroma:document": "## Tutorial Steps\uf0c1\n\n## 1. Prepare filter mask\uf0c1\n\nAs was written inNavigation Concepts, any Costmap Filter (including Speed Filter) is reading the data marked in a filter mask file. All information about filter masks, their types, detailed structure and how to make a new one is written in aNavigating with Keepout Zonestutorial at1.Preparefiltermaskschapter. The principal of drawing the filter mask for Speed Filter is the same as for Keepout Filter (to annotate a map with the requested zones), except thatOccupancyGridmask values have another meaning: these values are encoded speed limits for the areas corresponding to the cell on map.\n\nLet\u2019s look, how it is being decoded. As we know,OccupancyGridvalues are belonging to the[0..100]range. For Speed Filter0value means no speed limit in the area corresponding zero-cell on mask. Values from[1..100]range are being linearly converted into a speed limit value by the following formula:\n\nwhere:\n\nThe decodedspeed_limitvalue may have one of two meanings:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139d76-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 1696, "chroma:document": "The decodedspeed_limitvalue may have one of two meanings:\n\nThe meaning used by Speed Filter is being read fromnav2_msgs/CostmapFilterInfomessages.\n\nIn this tutorial we will use the first type of speed restriction expressed in a percent from maximum robot speed.\n\nCreate a new image with a PGM/PNG/BMP format: copyturtlebot3_world.pgmmain map which will be used in a world simulation from a Nav2 repository to a newspeed_mask.pgmfile. Openspeed_mask.pgmin your favourite raster graphics editor and fill speed restricted areas with grey colors. In our example darker colors will indicate areas with higher speed restriction:\n\nArea \u201cA\u201d is filled with40%gray color, area \u201cB\u201d - with70%gray, that means that speed restriction will take100%-40%=60%in area \u201cA\u201d and100%-70%=30%in area \u201cB\u201d from maximum speed value allowed for this robot."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139d8a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 2526, "chroma:document": "We will usescalemap mode with no thresholds. In this mode darker colors will have higherOccupancyGridvalues. E.g. for area \u201cB\u201d with70%of grayOccupancyGriddata will be equal to70. So in order to hit the target, we need to choosebase=100.0andmultiplier=-1.0. This will reverse the scaleOccupancyGridvalues to a desired one. No thresholds (free_threshoccupied_thresh) were chosen for the convenience in theyamlfile: to have 1:1 full range conversion of lightness value from filter mask -> to speed restriction percent.\n\nAfter all speed restriction areas will be filled, save thespeed_mask.pgmimage.\n\nLike all other maps, the filter mask should have its own YAML metadata file. Copyturtlebot3_world.yamltospeed_mask.yaml. Openspeed_mask.yamland update the fields as shown below (as mentioned before for thescalemode to use whole color lightness range there should be no thresholds:free_thresh=0.0andoccupied_thresh=1.0):"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139d9e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 3444, "chroma:document": "Since Costmap2D does not support orientation, the last third \u201cyaw\u201d component of theoriginvector should be equal to zero (for example:origin:[1.25,-5.18,0.0]). Savespeed_mask.yamland the new filter mask is ready to use.\n\n## 2. Configure Costmap Filter Info Publisher Server\uf0c1\n\nEach costmap filter reads incoming meta-information (such as filter type or data conversion coefficients) in messages ofnav2_msgs/CostmapFilterInfotype. These messages are being published byCostmap Filter Info Publisher Server. The server is running as a lifecycle node. According to thedesign document,nav2_msgs/CostmapFilterInfomessages are going in a pair withOccupancyGridfilter mask topic. Therefore, along with Costmap Filter Info Publisher Server there should be enabled a new instance of Map Server configured to publish filter masks."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139dbc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 4263, "chroma:document": "In order to enable Speed Filter in your configuration, both servers should be enabled as lifecycle nodes in Python launch-file. For example, this might look as follows, though adding them as Composition Nodes to your Navigation Component Container is also possible:\n\nwhere theparams_filevariable should be set to a YAML-file having ROS parameters for Costmap Filter Info Publisher Server and Map Server nodes. These parameters and their meaning are listed atMap Server / Saverpage. Please, refer to it for more information. The example ofparams_filecould be found below:\n\nNote, that:\n\nReady-to-go standalone Python launch-script, YAML-file with ROS parameters and filter mask example for Speed Filter could be found in anav2_costmap_filters_demodirectory ofnavigation2_tutorialsrepository. To simply run Filter Info Publisher Server and Map Server tuned on Turtlebot3 standard simulation written atGetting Started, build the demo and launchcostmap_filter_info.launch.pyas follows:\n\n## 3. Enable Speed Filter\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139dd0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 5245, "chroma:document": "## 3. Enable Speed Filter\uf0c1\n\nCostmap Filters are Costmap2D plugins. You can enable theSpeedFilterplugin in Costmap2D by addingspeed_filterto thepluginsparameter innav2_params.yaml. The Speed Filter plugin should have the following parameters defined:\n\nFull list of parameters supported bySpeedFilterare listed at theSpeed Filter Parameterspage.\n\nYou can place the plugin either in theglobal_costmapsection innav2_params.yamlto have speed restriction mask applied to global costmap or in thelocal_costmapto apply speed mask to the local costmap. However,SpeedFilterplugin should never be enabled simultaneously for global and local costmaps. Otherwise, it can lead to unwanted multiple \u201cspeed restriction\u201d - \u201cno restriction\u201d message chains on speed restriction boundaries, that will cause jerking of the robot or another unpredictable behaviour.\n\nIn this tutorial, we will enable Speed Filter for the global costmap. For this use the following configuration:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139de4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 6203, "chroma:document": "As stated in thedesign, Speed Filter publishes speed restrictingmessagestargeted for a Controller Server so that it could restrict maximum speed of the robot when it needed. Controller Server has aspeed_limit_topicROS parameter for that, which should be set to the same as inspeed_filterplugin value. This topic in the map server could also be used to any number of other speed-restricted applications beyond the speed limiting zones, such as dynamically adjusting maximum speed by payload mass.\n\nSetspeed_limit_topicparameter of a Controller Server to the same value as it set forspeed_filterplugin:\n\n## 4. Run Nav2 stack\uf0c1\n\nAfter Costmap Filter Info Publisher Server and Map Server were launched and Speed Filter was enabled for global/local costmap, run Nav2 stack as written inGetting Started:\n\nFor better visualization of speed filter mask, in RViz in the leftDisplayspane unfoldMapand changeTopicfrom/map-> to/speed_filter_mask."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139df8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 7138, "chroma:document": "Set the goal behind the speed restriction areas and check that the filter is working properly: robot should slow down when going through a speed restricting areas. Below is how it might look (first picture shows speed filter enabled for the global costmap, second -speed_mask.pgmfilter mask):\n\nCode Examples:\n\nLanguage: unknown\n\nFile: [1..100]\n\n```\n\nspeed_limit\n\n=\n\nfilter_mask_data\n\nmultiplier\n\n+\n\nbase\n\n;\n\n```\n\nLanguage: unknown\n\nFile: occupied_thresh=1.0\n\n```\n\nimage\n\n:\n\nturtlebot3_world.pgm\n\n>\n\nimage\n\n:\n\nspeed_mask.pgm\n\nmode\n\n:\n\ntrinary\n\n>\n\nmode\n\n:\n\nscale\n\noccupied_thresh\n\n:\n\n0.65\n\nfree_thresh\n\n:\n\n0.196\n\n>\n\noccupied_thresh\n\n:\n\n1.0\n\nfree_thresh\n\n:\n\n0.0\n\n```\n\nLanguage: unknown\n\nFile: OccupancyGrid\n\n```\n\nimport\n\nos\n\nfrom\n\nament_index_python.packages\n\nimport\n\nget_package_share_directory\n\nfrom\n\nlaunch\n\nimport\n\nLaunchDescription\n\nfrom\n\nlaunch.actions\n\nimport\n\nDeclareLaunchArgument\n\nfrom\n\nlaunch.substitutions\n\nimport\n\nLaunchConfiguration\n\nfrom\n\nlaunch_ros.actions\n\nimport\n\nNode\n\nfrom\n\nnav2_common.launch\n\nimport"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139e0c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 8109, "chroma:document": "import\n\nNode\n\nfrom\n\nnav2_common.launch\n\nimport\n\nRewrittenYaml\n\ndef\n\ngenerate_launch_description\n\n():\n\n# Get the launch directory\n\ncostmap_filters_demo_dir\n\n=\n\nget_package_share_directory\n\n(\n\n'nav2_costmap_filters_demo'\n\n)\n\n# Create our own temporary YAML files that include substitutions\n\nlifecycle_nodes\n\n=\n\n[\n\n'filter_mask_server'\n\n,\n\n'costmap_filter_info_server'\n\n]\n\n# Parameters\n\nnamespace\n\n=\n\nLaunchConfiguration\n\n(\n\n'namespace'\n\n)\n\nuse_sim_time\n\n=\n\nLaunchConfiguration\n\n(\n\n'use_sim_time'\n\n)\n\nautostart\n\n=\n\nLaunchConfiguration\n\n(\n\n'autostart'\n\n)\n\nparams_file\n\n=\n\nLaunchConfiguration\n\n(\n\n'params_file'\n\n)\n\nmask_yaml_file\n\n=\n\nLaunchConfiguration\n\n(\n\n'mask'\n\n)\n\n# Declare the launch arguments\n\ndeclare_namespace_cmd\n\n=\n\nDeclareLaunchArgument\n\n(\n\n'namespace'\n\n,\n\ndefault_value\n\n=\n\n''\n\n,\n\ndescription\n\n=\n\n'Top-level namespace'\n\n)\n\ndeclare_use_sim_time_cmd\n\n=\n\nDeclareLaunchArgument\n\n(\n\n'use_sim_time'\n\n,\n\ndefault_value\n\n=\n\n'true'\n\n,\n\ndescription\n\n=\n\n'Use simulation (Gazebo) clock if true'\n\n)\n\ndeclare_autostart_cmd\n\n="}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139e20-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 9100, "chroma:document": ")\n\ndeclare_autostart_cmd\n\n=\n\nDeclareLaunchArgument\n\n(\n\n'autostart'\n\n,\n\ndefault_value\n\n=\n\n'true'\n\n,\n\ndescription\n\n=\n\n'Automatically startup the nav2 stack'\n\n)\n\ndeclare_params_file_cmd\n\n=\n\nDeclareLaunchArgument\n\n(\n\n'params_file'\n\n,\n\ndefault_value\n\n=\n\nos\n\n.\n\npath\n\n.\n\njoin\n\n(\n\ncostmap_filters_demo_dir\n\n,\n\n'params'\n\n,\n\n'speed_params.yaml'\n\n),\n\ndescription\n\n=\n\n'Full path to the ROS 2 parameters file to use'\n\n)\n\ndeclare_mask_yaml_file_cmd\n\n=\n\nDeclareLaunchArgument\n\n(\n\n'mask'\n\n,\n\ndefault_value\n\n=\n\nos\n\n.\n\npath\n\n.\n\njoin\n\n(\n\ncostmap_filters_demo_dir\n\n,\n\n'maps'\n\n,\n\n'speed_mask.yaml'\n\n),\n\ndescription\n\n=\n\n'Full path to filter mask yaml file to load'\n\n)\n\n# Make re-written yaml\n\nparam_substitutions\n\n=\n\n{\n\n'use_sim_time'\n\n:\n\nuse_sim_time\n\n,\n\n'yaml_filename'\n\n:\n\nmask_yaml_file\n\n}\n\nconfigured_params\n\n=\n\nRewrittenYaml\n\n(\n\nsource_file\n\n=\n\nparams_file\n\n,\n\nroot_key\n\n=\n\nnamespace\n\n,\n\nparam_rewrites\n\n=\n\nparam_substitutions\n\n,\n\nconvert_types\n\n=\n\nTrue\n\n)\n\n# Nodes launching commands\n\nstart_lifecycle_manager_cmd\n\n=\n\nNode\n\n(\n\npackage\n\n="}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139e34-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 10071, "chroma:document": "start_lifecycle_manager_cmd\n\n=\n\nNode\n\n(\n\npackage\n\n=\n\n'nav2_lifecycle_manager'\n\n,\n\nexecutable\n\n=\n\n'lifecycle_manager'\n\n,\n\nname\n\n=\n\n'lifecycle_manager_costmap_filters'\n\n,\n\nnamespace\n\n=\n\nnamespace\n\n,\n\noutput\n\n=\n\n'screen'\n\n,\n\nemulate_tty\n\n=\n\nTrue\n\n,\n\n# https://github.com/ros2/launch/issues/188\n\nparameters\n\n=\n\n[{\n\n'use_sim_time'\n\n:\n\nuse_sim_time\n\n},\n\n{\n\n'autostart'\n\n:\n\nautostart\n\n},\n\n{\n\n'node_names'\n\n:\n\nlifecycle_nodes\n\n}])\n\nstart_map_server_cmd\n\n=\n\nNode\n\n(\n\npackage\n\n=\n\n'nav2_map_server'\n\n,\n\nexecutable\n\n=\n\n'map_server'\n\n,\n\nname\n\n=\n\n'filter_mask_server'\n\n,\n\nnamespace\n\n=\n\nnamespace\n\n,\n\noutput\n\n=\n\n'screen'\n\n,\n\nemulate_tty\n\n=\n\nTrue\n\n,\n\n# https://github.com/ros2/launch/issues/188\n\nparameters\n\n=\n\n[\n\nconfigured_params\n\n])\n\nstart_costmap_filter_info_server_cmd\n\n=\n\nNode\n\n(\n\npackage\n\n=\n\n'nav2_map_server'\n\n,\n\nexecutable\n\n=\n\n'costmap_filter_info_server'\n\n,\n\nname\n\n=\n\n'costmap_filter_info_server'\n\n,\n\nnamespace\n\n=\n\nnamespace\n\n,\n\noutput\n\n=\n\n'screen'\n\n,\n\nemulate_tty\n\n=\n\nTrue\n\n,\n\n# https://github.com/ros2/launch/issues/188"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139e52-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 11031, "chroma:document": "=\n\nTrue\n\n,\n\n# https://github.com/ros2/launch/issues/188\n\nparameters\n\n=\n\n[\n\nconfigured_params\n\n])\n\nld\n\n=\n\nLaunchDescription\n\n()\n\nld\n\n.\n\nadd_action\n\n(\n\ndeclare_namespace_cmd\n\n)\n\nld\n\n.\n\nadd_action\n\n(\n\ndeclare_use_sim_time_cmd\n\n)\n\nld\n\n.\n\nadd_action\n\n(\n\ndeclare_autostart_cmd\n\n)\n\nld\n\n.\n\nadd_action\n\n(\n\ndeclare_params_file_cmd\n\n)\n\nld\n\n.\n\nadd_action\n\n(\n\ndeclare_mask_yaml_file_cmd\n\n)\n\nld\n\n.\n\nadd_action\n\n(\n\nstart_lifecycle_manager_cmd\n\n)\n\nld\n\n.\n\nadd_action\n\n(\n\nstart_map_server_cmd\n\n)\n\nld\n\n.\n\nadd_action\n\n(\n\nstart_costmap_filter_info_server_cmd\n\n)\n\nreturn\n\nld\n\n```\n\nLanguage: unknown\n\nFile: params_file\n\n```\n\ncostmap_filter_info_server\n\n:\n\nros__parameters\n\n:\n\nuse_sim_time\n\n:\n\ntrue\n\ntype\n\n:\n\n1\n\nfilter_info_topic\n\n:\n\n\"/costmap_filter_info\"\n\nmask_topic\n\n:\n\n\"/speed_filter_mask\"\n\nbase\n\n:\n\n100.0\n\nmultiplier\n\n:\n\n1.0\n\nfilter_mask_server\n\n:\n\nros__parameters\n\n:\n\nuse_sim_time\n\n:\n\ntrue\n\nframe_id\n\n:\n\n\"map\"\n\ntopic_name\n\n:\n\n\"/speed_filter_mask\"\n\nyaml_filename\n\n:\n\n\"speed_mask.yaml\"\n\n```\n\nLanguage: unknown"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139e66-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 11961, "chroma:document": "yaml_filename\n\n:\n\n\"speed_mask.yaml\"\n\n```\n\nLanguage: unknown\n\nFile: costmap_filter_info.launch.py\n\n```\n\n$\n\nmkdir\n\np\n\n~/tutorials_ws/src\n\n$\n\ncd\n\n~/tutorials_ws/src\n\n$\n\ngit\n\nclone\n\nhttps://github.com/ros-navigation/navigation2_tutorials.git\n\n$\n\ncd\n\n~/tutorials_ws\n\n$\n\ncolcon\n\nbuild\n\n--symlink-install\n\n--packages-select\n\nnav2_costmap_filters_demo\n\n$\n\nsource\n\n~/tutorials_ws/install/setup.bash\n\n$\n\nros2\n\nlaunch\n\nnav2_costmap_filters_demo\n\ncostmap_filter_info.launch.py\n\nparams_file:\n\n=\n\nsrc/navigation2_tutorials/nav2_costmap_filters_demo/params/speed_params.yaml\n\nmask:\n\n=\n\nsrc/navigation2_tutorials/nav2_costmap_filters_demo/maps/speed_mask.yaml\n\n```\n\nLanguage: unknown\n\nFile: SpeedFilter\n\n```\n\nglobal_costmap:\n\nglobal_costmap:\n\nros__parameters:\n\n...\n\nplugins: [\"static_layer\", \"obstacle_layer\", \"inflation_layer\"]\n\nfilters: [\"speed_filter\"]\n\n...\n\nspeed_filter:\n\nplugin: \"nav2_costmap_2d::SpeedFilter\"\n\nenabled: True\n\nfilter_info_topic: \"/costmap_filter_info\"\n\nspeed_limit_topic: \"/speed_limit\"\n\n```\n\nLanguage: unknown"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139e7a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Navigating with Speed Limits\uf0c1.txt", "start_index": 12920, "chroma:document": "speed_limit_topic: \"/speed_limit\"\n\n```\n\nLanguage: unknown\n\nFile: speed_filter\n\n```\n\ncontroller_server:\n\nros__parameters:\n\n...\n\nspeed_limit_topic: \"/speed_limit\"\n\n```\n\nLanguage: unknown\n\nFile: speed_filter\n\n```\n\nros2\n\nlaunch\n\nnav2_bringup\n\ntb3_simulation_launch.py\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139e8e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Eloquent to Foxy\uf0c1\n\nURL: https://docs.nav2.org/migration/Eloquent.html#eloquent\n\nmigration\n\nSection: concepts/index.html\n\n--------------------------------------------------------------------------------"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139ea2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 210, "chroma:document": "## General\uf0c1 The lifecycle manager was split into 2 unique lifecycle managers. They are thenavigation_lifecycle_managerandlocalization_lifecycle_manager. This gives each process their own manager to allow users to switch between SLAM and localization without effecting Navigation. It also reduces the redundant code innav2_bringup. The lifecycle manager also now containsBondconnections to each lifecycle server. This means that if a server crashes or exits, the lifecycle manager will be constantly checking and transition down its lifecycle nodes for safety. This acts as a watchdog during run-time to complement the lifecycle manager\u2019s transitioning up and down from active states. Seethis PR for details. A fix to the BT navigator was added to remove a rare issue where it may crash due to asynchronous issues. As a result, a behavior tree is created for each navigation request rather than resetting an existing tree. The creation of this tree will add a small amount of latency. Proposals to reduce this latency will"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139ec0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 1169, "chroma:document": "small amount of latency. Proposals to reduce this latency will be considered before the next release."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139ed4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 1272, "chroma:document": "## Server Updates\uf0c1 All plugin servers (controller, planner, recovery) now supports the use of multiple plugins. This can be done by loading a map of plugins, mapping the name of the plugin to its intended use-case. Each server defines a parameter where the list of names for the plugins to be loaded can be defined. The type of plugin to be mapped to a particular name has to be defined using thepluginparameter in the plugin namespace for each name defined in the server plugin list. Each name in the plugin parameter list is expected to have thepluginparameter defined. An example:controller_serverdefines the parametercontroller_pluginswhere a list of plugin names can be defined: FollowPathcontroller is of typedwb_local_planner/DWBLocalPlannerandDynamicFollowPathof typeteb_local_planner/TEBLocalPlanner. Each plugin will load the parameters in their namespace, e.g.FollowPath.max_vel_x, rather than globally in the server namespace. This will allow multiple plugins of the same type with different parameters and"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139ee8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 2227, "chroma:document": "multiple plugins of the same type with different parameters and reduce conflicting parameter names. DWB Contains new parameters as an update relative to the ROS 1 updates,see here for more information. Additionally, the controller and planner interfaces were updated to include astd::stringnameparameter on initialization. This was added to the interfaces to allow the plugins to know the namespace it should load its parameters in. E.g. for a controller to find the parameterFollowPath.max_vel_x, it must be given its name,FollowPathto get this parameter. All plugins will be expected to look up parameters in the namespace of its given name."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139efc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 2872, "chroma:document": "## New Plugins\uf0c1 Many new behavior tree nodes were added. These behavior tree nodes are now BT plugins and dynamically loadable at run-time using behavior tree cpp v3. The default behavior trees have been upgraded to stop the recovery behaviours and trigger a replanning when the navigation goal is preempted. Seenav2_behavior_treefor a full listing, orNavigation Pluginsfor the current list of behavior tree plugins and their descriptions. These plugins are set as default in thenav2_bt_navigatorbut may be overridden by thebt_pluginsparameter to include your specific plugins. Original GitHub tickets:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139f10-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 3476, "chroma:document": "## Map Server Re-Work\uf0c1 map_saverwas re-worked and divided into 2 parts: CLI and server. CLI part is a command-line tool that listens incoming map topic, saves map once into a file and finishes its work. This part is remained to be almost untouched: CLI executable was renamed frommap_savertomap_saver_cliwithout changing its functionality. Server is a new part. It spins in the background and can be used to save map continuously through asave_mapservice. By each service request it tries to listen incoming map topic, receive a message from it and write obtained map into a file. map_serverwas dramatically simplified and cleaned-up.OccGridLoaderwas merged withMapServerclass as it is intended to work only with oneOccupancyGridtype of messages in foreseeable future. Map Server now has newmap_iodynamic library. All functions saving/loadingOccupancyGridmessages were moved frommap_serverandmap_saverhere. These functions could be easily called from any part of external ROS 2 code even if Map Server node was not started."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139f2e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 4436, "chroma:document": "of external ROS 2 code even if Map Server node was not started. map_loaderwas completely removed fromnav2_util. All its functionality already present inmap_io. Please use it in your code instead. Please refer to theoriginal GitHub ticketandMap Server READMEfor more information."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139f42-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 4716, "chroma:document": "## New Particle Filter Messages\uf0c1 New particle filter messages for particle clouds were added to include the particle weights along with their poses.nav2_msgs/Particledefines a single particle with a pose and a weight in a particle cloud.nav2_msgs/ParticleClouddefines a set of particles, each with a pose and a weight. AMCLnow publishes its particle cloud as anav2_msgs/ParticleCloudinstead of ageometry_msgs/PoseArray. See here for more information."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139f56-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 5168, "chroma:document": "## Selection of Behavior Tree in each navigation action\uf0c1 TheNavigateToPoseaction allows now to select in the action request the behavior tree to be used bybt_navigatorfor carrying out the navigation action through thestringbehavior_treefield. This field indicates the absolute path of the xml file that will be used to use to carry out the action. If no file is specified, leaving this field empty, the default behavior tree specified in thedefault_bt_xml_filenameparameterwill be used. This functionality has been discussed inthe ticket #1780, and carried out inthe pull request #1784.\n\n## FollowPoint Capability\uf0c1 A new behavior treefollowpoint.xmlhas added. This behavior tree makes a robot follow a dynamically generated point, keeping a certain distance from the target. This can be used for moving target following maneuvers. This functionality has been discussed inthe ticket #1660, and carried out inthe pull request #1859."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139f74-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Eloquent to Foxy\uf0c1.txt", "start_index": 6100, "chroma:document": "## New Costmap Layer\uf0c1 The range sensor costmap has not been ported to navigation2 asnav2_costmap_2d::RangeSensorLayer\". It uses the same probabilistic model as theROS1layer as well as much of the same interface. Documentation on parameters has been added to docs/parameters and the docs.nav2.org underConfigurationGuide.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: controller_plugins\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:\n\ncontroller_plugins\n\n:\n\n[\n\n\"FollowPath\"\n\n,\n\n\"DynamicFollowPath\"\n\n]\n\nFollowPath\n\n:\n\nplugin\n\n:\n\n\"dwb_core/DWBLocalPlanner\"\n\nmax_vel_x\n\n:\n\n0.26\n\nDynamicFollowPath\n\n:\n\nplugin\n\n:\n\n\"teb_local_planner/TEBLocalPlanner\"\n\nmax_vel_x\n\n:\n\n0.5\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139f88-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Tuning Guide\uf0c1\n\nURL: https://docs.nav2.org/tuning/index.html\n\nSection: tuning/index.html\n\n--------------------------------------------------------------------------------"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139f9c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 178, "chroma:document": "## Inflation Potential Fields\uf0c1 Many users and ecosystem navigation configuration files the maintainers find are really missing the point of the inflation layer. While it\u2019s true that you can simply inflate a small radius around the walls to weight against critical collisions, thetruevalue of the inflation layer is creating a consistent potential field around the entire map. Some of the most popular tuning guides for ROS Navigation / Nav2 evencall this out specificallythat there\u2019s substantial benefit to creating a gentle potential field across the width of the map - after inscribed costs are applied - yet very few users do this in practice. This habit actually results in paths produced by NavFn, Theta*, and Smac Planner to be somewhat suboptimal. They really want to look for a smooth potential field rather than wide open 0-cost spaces in order to stay in the middle of spaces and deal with close-by moving obstacles better. It will allow search to be weighted towards freespace far before the search algorithm"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139fb0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 1136, "chroma:document": "be weighted towards freespace far before the search algorithm runs into the obstacle that the inflation is caused by, letting the planner give obstacles as wide of a berth as possible. So it is the maintainers\u2019 recommendation, as well as all other cost-aware search planners available in ROS, to increase your inflation layer cost scale and radius in order to adequately produce a smooth potential across the entire map. For very large open spaces, its fine to have 0-cost areas in the middle, but for halls, aisles, and similar;please create a smooth potential to provide the best performance."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139fc4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 1732, "chroma:document": "## Robot Footprint vs Radius\uf0c1 Nav2 allows users to specify the robot\u2019s shape in 2 ways: a geometricfootprintor the radius of a circle encompassing the robot. In ROS (1), it was pretty reasonable to always specify a radius approximation of the robot, since the global planning algorithms didn\u2019t use it and the local planners / costmaps were set up with the circular assumption baked in. However, in Nav2, we now have multiple planning and controller algorithms that make use of the full SE2 footprint. If your robot is non-circular, it is recommended that you give the planners and controllers the actual, geometric footprint of your robot. This will allow the planners and controllers to plan or create trajectories into tighter spaces. For example, if you have a very long but skinny robot, the circular assumption wouldn\u2019t allow a robot to plan into a space only a little wider than your robot, since the robot would not fit length-wise. The kinematically feasible planners (e.g. Smac Hybrid-A*, Smac State Lattice) will"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139fe2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 2699, "chroma:document": "planners (e.g. Smac Hybrid-A*, Smac State Lattice) will use the SE2 footprint for collision checking to create kinematically feasible plans, if provided with the actual footprint. As of December, 2021 all of the controller plugins support full footprint collision checking to ensure safe path tracking. If you provide a footprint of your robot, it will be used to make sure trajectories are valid and it is recommended you do so. It will prevent a number of \u201cstuck robot\u201d situations that could have been easily avoided. If your robot is truly circular, continue to use therobot_radiusparameter. The three valid reasons for a non-circular robot to use the radius instead:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb139ff6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 3371, "chroma:document": "## Rotate in Place Behavior\uf0c1 Using theRotation Shim Controller, a robot will simply rotate in place before starting to track a holonomic path. This allows a developer to tune a controller plugin to be optimized for path tracking and give you clean rotations, out of the box. This was added due to quirks in some existing controllers whereas tuning the controller for a task can make it rigid \u2013 or the algorithm simply doesn\u2019t rotate in place when working with holonomic paths (if that\u2019s a desirable trait). The result is an awkward, stuttering, or whipping around behavior when your robot\u2019s initial and path heading\u2019s are significantly divergent. Giving a controller a better starting point to start tracking a path makes tuning the controllers significantly easier and creates more intuitive results for on-lookers (in one maintainer\u2019s opinion). Note: If using a non-holonomic, kinematically feasible planner (e.g. Smac Hybrid-A*, Smac State Lattice), this is not a necessary behavioral optimization. This class of planner"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a00a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 4332, "chroma:document": "not a necessary behavioral optimization. This class of planner will create plans that take into account the robot\u2019s starting heading, not requiring any rotation behaviors. This behavior is most optimially for:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a01e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 4543, "chroma:document": "## Planner Plugin Selection\uf0c1 Nav2 provides a number of planning plugins out of the box. For a first-time setup, seeSetting Up Navigation Pluginsfor a more verbose breakdown of algorithm styles within Nav2, andNavigation Pluginsfor a full accounting of the current list of plugins available (which may be updated over time). In general though, the following table is a good guide for the optimal planning plugin for different types of robot bases: If you are using a non-circular robot with very limited compute, it may be worth assessing the benefits of using one of the holonomic planners (e.g. particle assumption planners). It is the recommendation of the maintainers to start using one of the more advanced algorithms appropriate for your platformfirst, but to scale back the planner if need be. The run-time of the feasible planners are typically on par (or sometimes faster) than their holonomic counterparts, so don\u2019t let the more recent nature of them fool you. Since the planning problem is primarily driven by the"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a032-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 5503, "chroma:document": "fool you. Since the planning problem is primarily driven by the robot type, the table accurately summarizes the advice to users by the maintainers. Within the circular robot regime, the choice of planning algorithm is dependent on application and desirable behavior. NavFn will typically make broad, sweeping curves; Theta* prefers straight lines and supports them at any angle; and Smac 2D is essentially a classical A* algorithm with cost-aware penalties."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a050-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 5962, "chroma:document": "## Controller Plugin Selection\uf0c1 Nav2 provides a number of controller plugins out of the box. For a first-time setup, seeSetting Up Navigation Pluginsfor a more verbose breakdown of algorithm styles within Nav2, andNavigation Pluginsfor a full accounting of the current list of plugins available (which may be updated over time). In general though, the following table is a good first-order description of the controller plugins available for different types of robot bases: All of the above controllers can handle both circular and arbitrary shaped robots in configuration. Regulated Pure Pursuit is good for exact path following and is typically paired with one of the kinematically feasible planners (eg State Lattice, Hybrid-A*, etc) since those paths are known to be drivable given hard physical constraints. However, it can also be applied to differential drive robots who can easily pivot to match any holonomic path. This is the plugin of choice if you simply want your robot to follow the path, rather exactly,"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a064-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 6918, "chroma:document": "you simply want your robot to follow the path, rather exactly, without any dynamic obstacle avoidance or deviation. It is simple and geometric, as well as slowing the robot in the presence of near-by obstaclesandwhile making sharp turns. DWB and MPPI are both options that will track paths, but also diverge from the path if there are dynamic obstacles present (in order to avoid them). DWB does this through scoring multiple trajectories on a set of critics. These trajectories are also generated via plugins that can be replaced, but support out of the box Omni and Diff robot types within the valid velocity and acceleration restrictions. These critics are plugins that can be selected at run-time and contain weights that may be tuned to create the desired behavior, such as minimizing path distance, minimizing distance to the goal or headings, and other action penalties that can be designed. This does require a bit of tuning for a given platform, application, and desired behavior, but it is possible to tune DWB to"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a078-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 7886, "chroma:document": "and desired behavior, but it is possible to tune DWB to do nearly any single thing well. MPPI on the other hand implements an optimization based approach, using randomly perturbed samples of the previous optimal trajectory to maximize a set of plugin-based objective functions. In that regard, it is similar to DWB however MPPI is a far more modern and advanced technique that will deal with dynamic agents in the environment and create intelligent behavior due to the optimization based trajectory planning, rather then DWB\u2019s constant action model. MPPI however does have moderately higher compute costs, but it is highly recommended to go this route and has received considerable development resources and attention due to its power. This typically works pretty well out of the box, but to tune for specific behaviors, you may have to retune some of the parameters. The README.md file for this package contains details on how to tune it efficiently. The Rotation Shim Plugin helps assist plugins like TEB and DWB (among"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a08c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 8851, "chroma:document": "Shim Plugin helps assist plugins like TEB and DWB (among others) to rotate the robot in place towards a new path\u2019s heading before starting to track the path. This allows you to tune your local trajectory planner to operate with a desired behavior without having to worry about being able to rotate on a dime with a significant deviation in angular distance over a very small euclidean distance. Some controllers when heavily tuned for accurate path tracking are constrained in their actions and don\u2019t very cleanly rotate to a new heading. Other controllers have a \u2018spiral out\u2019 behavior because their sampling requires some translational velocity, preventing it from simply rotating in place. This helps alleviate that problem and makes the robot rotate in place very smoothly. Finally, Vector Pursuit is another good path tracking solution and just like RPP, is paired with a kinematically feasible planner. It is a bit more advanced than RPP in the sense it also takes path heading into account. Vector Pursuit can handle"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a0aa-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 9810, "chroma:document": "also takes path heading into account. Vector Pursuit can handle complex paths at high speeds, but it is still a simple geometric controller thus requiring low computation resources."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a0be-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 9993, "chroma:document": "## Caching Obstacle Heuristic in Smac Planners\uf0c1 Smac\u2019s Hybrid-A* and State Lattice Planners provide an option,cache_obstacle_heuristic. This can be used to cache the heuristic to use between replannings to the same goal pose, which can increase the speed of the plannersignificantly(40-300% depending on many factors). The obstacle heuristic is used to steer the robot into the middle of spaces, respecting costs, and drives the kinematically feasible search down the corridors towards a valid solution. Think of it like a 2D cost-aware search to \u201cprime\u201d the planner about where it should go when it needs to expend more effort in the fully feasible search / SE2 collision checking. This is useful to speed up performance to achieve better replanning speeds. However, if you cache this heuristic, it will not be updated with the most current information in the costmap to steer search. During planning, the planner will still make use of the newest cost information for collision checking,thusly this will not impact the"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a0d2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 10959, "chroma:document": "for collision checking,thusly this will not impact the safety of the path. However, it may steer the search down newly blocked corridors or guide search towards areas that may have new dynamic obstacles in them, which can slow things down significantly if entire solution spaces are blocked. Therefore, it is the recommendation of the maintainers to enable this only when working in largely static (e.g. not many moving things or changes, not using live sensor updates in the global costmap, etc) environments when planning across large spaces to singular goals. Between goal changes to Nav2, this heuristic will be updated with the most current set of information, so it is not very helpful if you change goals very frequently."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a0e6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 11689, "chroma:document": "## Costmap2D Plugins\uf0c1 Costmap2D has a number of plugins that you can use (including the availability for you to create your own!). In addition, costmap filters: -KeepoutFilter: Marks keepout, higher weighted, or lower weighted zones in the costmap -SpeedFilter: Reduces or increases robot speeds based on position -BinaryFilter: Enables or disables a binary topic when in particular zones Note: When the costmap filters can be paired with theVectorObjectserver to use vectorized zones rather than map rastered zones sharing the same software."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a0fa-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Tuning Guide\uf0c1.txt", "start_index": 12233, "chroma:document": "## Nav2 Launch Options\uf0c1 Nav2\u2019s launch files are made to be very configurable. Obviously for any serious application, a user should usenav2_bringupas the basis of their navigation launch system, but should be moved to a specific repository for a users\u2019 work. A typical thing to do is to have a<robot_name>_navconfiguration package containing the launch and parameter files. Withinnav2_bringup, there is a main entryfiletb3_simulation_launch.py. This is the main file used for simulating the robot and contains the following configurations:\n\n## Other Pages We\u2019d Love To Offer\uf0c1 If you are willing to chip in, some ideas are inhttps://github.com/ros-navigation/docs.nav2.org/issues/204, but we\u2019d be open to anything you think would be insightful!"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a10e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Model Predictive Path Integral Controller\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring-mppic.html#path-align-critic\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## MPPI Parameters\uf0c1\n\n## Trajectory Visualization\uf0c1\n\n## Path Handler\uf0c1\n\n## Ackermann Motion Model\uf0c1\n\n## Constraint Critic\uf0c1\n\nThis critic penalizes trajectories that have components outside of the set dynamic or kinematic constraints\n\n## Goal Angle Critic\uf0c1\n\nThis critic incentivizes navigating to achieve the angle of the goal posewhen in reasonable proximity to goal\n\n## Goal Critic\uf0c1\n\nThis critic incentivizes navigating spatially towards the goal when in reasonable proximity to goal\n\n## Obstacles Critic\uf0c1\n\nThis critic incentivizes navigating away from obstacles and critical collisions using either a circular robot point-check or full SE2 footprint check using distances from obstacles.\n\n## Cost Critic\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a122-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 948, "chroma:document": "## Cost Critic\uf0c1\n\nThis critic incentivizes navigating away from obstacles and critical collisions using either a circular robot point-check or full SE2 footprint check using the costmap values.\n\n## Path Align Critic\uf0c1\n\nThis critic incentivizes aligning with the global path, if relevant. It does not implement path following behavior.\n\n## Path Angle Critic\uf0c1\n\nThis critic penalizes trajectories at a high relative angle to the path. This helps the robot make sharp turns when necessary due to large accumulated angular errors.\n\n## Path Follow Critic\uf0c1\n\nThis critic incentivizes making progress along the path. This is what drives the robot forward along the path.\n\n## Prefer Forward Critic\uf0c1\n\nThis critic incentivizes moving in the forward direction, rather than reversing.\n\n## Twirling Critic\uf0c1\n\nThis critic penalizes unnecessary \u2018twisting\u2019 with holonomic vehicles. It adds a constraint on the rotation angle to keep it consistent.\n\n## Velocity Deadband Critic\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a136-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 1876, "chroma:document": "## Velocity Deadband Critic\uf0c1\n\nThis critic penalizes velocities that fall below the deadband threshold, helping to mitigate hardware limitations on certain platforms.\n\n## Example\uf0c1\n\n## Notes to Users\uf0c1\n\n## General Words of Wisdom\uf0c1\n\nThemodel_dtparameter generally should be set to the duration of your control frequency. So if your control frequency is 20hz, this should be0.05. However, you may also set it lowerbut not larger.\n\nVisualization of the trajectories usingvisualizeuses compute resources to back out trajectories for visualization and therefore slows compute time. It is not suggested that this parameter is set totrueduring a deployed use, but is a useful debug instrument while tuning the system, but use sparingly. Visualizing 2000 batches @ 56 points at 30 hz isa lot."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a14a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 2659, "chroma:document": "The most common parameters you might want to start off changing are the velocity profiles (vx_max,vx_min,wz_max, andvy_maxif holonomic) and themotion_modelto correspond to your vehicle. Its wise to consider theprune_distanceof the path plan in proportion to your maximum velocity and prediction horizon. The only deeper parameter that will likely need to be adjusted for your particular settings is the Obstacle critics\u2019repulsion_weightsince the tuning of this is proprtional to your inflation layer\u2019s radius. Higher radii should correspond to reducedrepulsion_weightdue to the penalty formation (e.g.inflation_radius-min_dist_to_obstacle). If this penalty is too high, the robot will slow significantly when entering cost-space from non-cost space or jitter in narrow corridors. It is noteworthy, but likely not necessary to be changed, that the Obstacle critic may use the full footprint information ifconsider_footprint=true, though comes at an increased compute cost."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a168-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 3632, "chroma:document": "Otherwise, the parameters have been closely pre-tuned by your friendly neighborhood navigator to give you a decent starting point that hopefully you only need to retune for your specific desired behavior lightly (if at all). Varying costmap parameters or maximum speeds are the actions which require the most attention, as described below:\n\n## Prediction Horizon, Costmap Sizing, and Offsets\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a17c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 3973, "chroma:document": "## Prediction Horizon, Costmap Sizing, and Offsets\uf0c1\n\nAs this is a predictive planner, there is some relationship between maximum speed, prediction times, and costmap size that users should keep in mind while tuning for their application. If a controller server costmap is set to 3.0m in size, that means that with the robot in the center, there is 1.5m of information on either side of the robot. When your prediction horizon (time_steps*model_dt) at maximum speed (vx_max) is larger than this, then your robot will be artificially limited in its maximum speeds and behavior by the costmap limitation. For example, if you predict forward 3 seconds (60 steps @ 0.05s per step) at 0.5m/s maximum speed, theminimumrequired costmap radius is 1.5m - or 3m total width."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a190-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 4738, "chroma:document": "The same applies to the Path Follow and Align offsets from furthest. In the same example if the furthest point we can consider is already at the edge of the costmap, then further offsets are thresholded because they\u2019re unusable. So its important while selecting these parameters to make sure that the theoretical offsets can exist on the costmap settings selected with the maximum prediction horizon and velocities desired. Setting the threshold for consideration in the path follower + goal critics as the same as your prediction horizon can make sure you have clean hand-offs between them, as the path follower will otherwise attempt to slow slightly once it reaches the final goal pose as its marker."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a1a4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 5443, "chroma:document": "The Path Follow critic cannot drive velocities greater than the projectable distance of that velocity on the available path on the rolling costmap. The Path Align criticoffset_from_furthestrepresents the number of path points a trajectory passes through while tracking the path. If this is set either absurdly low (e.g. 5) it can trigger when a robot is simply trying to start path tracking causing some suboptimal behaviors and local minima while starting a task. If it is set absurdly high (e.g. 50) relative to the path resolution and costmap size, then the critic may never trigger or only do so when at full-speed. A balance here is wise. A selection of this value to be ~30% of the maximum velocity distance projected is good (e.g. if a planner produces points every 2.5cm, 60 can fit on the 1.5m local costmap radius. If the max speed is 0.5m/s with a 3s prediction time, then 20 points represents 33% of the maximum speed projected over the prediction horizon onto the path). When in"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a1b8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 6373, "chroma:document": "projected over the prediction horizon onto the path). When in doubt,prediction_horizon_s*max_speed/path_resolution/3.0is a good baseline."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a1cc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 6512, "chroma:document": "## Obstacle, Inflation Layer, and Path Following\uf0c1\n\nThere also exists a relationship between the costmap configurations and the Obstacle critic configurations. If the Obstacle critic is not well tuned with the costmap parameters (inflation radius, scale) it can cause the robot to wobble significantly as it attempts to take finitely lower-cost trajectories with a slightly lower cost in exchange for jerky motion. It may also perform awkward maneuvers when in free-space to try to maximize time in a small pocket of 0-cost over a more natural motion which involves moving into some low-costed region. Finally, it may generally refuse to go into costed space at all when starting in a free 0-cost space if the gain is set disproportionately higher than the Path Follow scoring to encourage the robot to move along the path. This is due to the critic cost of staying in free space becoming more attractive than entering even lightly costed space in exchange for progression along the task."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a1e0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 7501, "chroma:document": "Thus, care should be taken to select weights of the obstacle critic in conjunction with the costmap inflation radius and scale so that a robot does not have such issues. How I (Steve, your friendly neighborhood navigator) tuned this was to first create the appropriate obstacle critic behavior desirable in conjunction with the inflation layer parameters. Its worth noting that the Obstacle critic converts the cost into a distance from obstacles, so the nature of the distribution of costs in the inflation isn\u2019t overly significant. However, the inflation radius and the scale will define the cost at the end of the distribution where free-space meets the lowest cost value within the radius. So testing for quality behavior when going over that threshold should be considered."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a1f4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 8281, "chroma:document": "As you increase or decrease your weights on the Obstacle, you may notice the aforementioned behaviors (e.g. won\u2019t overcome free to non-free threshold). To overcome them, increase the FollowPath critic cost to increase the desire for the trajectory planner to continue moving towards the goal. Make sure to not overshoot this though, keep them balanced. A desirable outcome is smooth motion roughly in the center of spaces without significant close interactions with obstacles. It shouldn\u2019t be perfectly following a path yet nor should the output velocity be wobbling jaggedly."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a208-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 8859, "chroma:document": "Once you have your obstacle avoidance behavior tuned and matched with an appropriate path following penalty, tune the Path Align critic to align with the path. If you design exact-path-alignment behavior, its possible to skip the obstacle critic step as highly tuning the system to follow the path will give it less ability to deviate to avoid obstacles (though it\u2019ll slow and stop). Tuning the critic weight for the Obstacle critic high will do the job to avoid near-collisions but the repulsion weight is largely unnecessary to you. For others wanting more dynamic behavior, itcanbe beneficial to slowly lower the weight on the obstacle critic to give the path alignment critic some more room to work. If your path was generated with a cost-aware planner (like all provided by Nav2) and providing paths sufficiently far from obstacles for your satisfaction, the impact of a slightly reduced Obstacle critic with a Path Alignment critic will do you well. Not over-weighting the path align critic will allow the robot to"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a226-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 9819, "chroma:document": "over-weighting the path align critic will allow the robot to  deviate from the path to get around dynamic obstacles in the scene or other obstacles not previous considered during path planning. It is subjective as to the best behavior for your application, but it has been shown that MPPI can be an exact path tracker and/or avoid dynamic obstacles very fluidly and everywhere in between. The defaults provided are in the generally right regime for a balanced initial trade-off."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a23a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 10299, "chroma:document": "Code Examples:\n\nLanguage: unknown\n\nFile: inflation_radius\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:\n\ncontroller_frequency\n\n:\n\n30.0\n\nFollowPath\n\n:\n\nplugin\n\n:\n\n\"nav2_mppi_controller::MPPIController\"\n\ntime_steps\n\n:\n\n56\n\nmodel_dt\n\n:\n\n0.05\n\nbatch_size\n\n:\n\n2000\n\nvx_std\n\n:\n\n0.2\n\nvy_std\n\n:\n\n0.2\n\nwz_std\n\n:\n\n0.4\n\nvx_max\n\n:\n\n0.5\n\nvx_min\n\n:\n\n0.35\n\nvy_max\n\n:\n\n0.5\n\nwz_max\n\n:\n\n1.9\n\nax_max\n\n:\n\n3.0\n\nax_min\n\n:\n\n3.0\n\nay_max\n\n:\n\n3.0\n\naz_max\n\n:\n\n3.5\n\niteration_count\n\n:\n\n1\n\nprune_distance\n\n:\n\n1.7\n\ntransform_tolerance\n\n:\n\n0.1\n\ntemperature\n\n:\n\n0.3\n\ngamma\n\n:\n\n0.015\n\nmotion_model\n\n:\n\n\"DiffDrive\"\n\nvisualize\n\n:\n\nfalse\n\nreset_period\n\n:\n\n1.0\n\n# (only in Humble)\n\nregenerate_noises\n\n:\n\nfalse\n\nTrajectoryVisualizer\n\n:\n\ntrajectory_step\n\n:\n\n5\n\ntime_step\n\n:\n\n3\n\nAckermannConstraints\n\n:\n\nmin_turning_r\n\n:\n\n0.2\n\ncritics\n\n:\n\n[\n\n\"ConstraintCritic\"\n\n,\n\n\"CostCritic\"\n\n,\n\n\"GoalCritic\"\n\n,\n\n\"GoalAngleCritic\"\n\n,\n\n\"PathAlignCritic\"\n\n,\n\n\"PathFollowCritic\"\n\n,\n\n\"PathAngleCritic\"\n\n,\n\n\"PreferForwardCritic\"\n\n]\n\nConstraintCritic\n\n:\n\nenabled\n\n:\n\ntrue"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a24e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 11271, "chroma:document": "]\n\nConstraintCritic\n\n:\n\nenabled\n\n:\n\ntrue\n\ncost_power\n\n:\n\n1\n\ncost_weight\n\n:\n\n4.0\n\nGoalCritic\n\n:\n\nenabled\n\n:\n\ntrue\n\ncost_power\n\n:\n\n1\n\ncost_weight\n\n:\n\n5.0\n\nthreshold_to_consider\n\n:\n\n1.4\n\nGoalAngleCritic\n\n:\n\nenabled\n\n:\n\ntrue\n\ncost_power\n\n:\n\n1\n\ncost_weight\n\n:\n\n3.0\n\nthreshold_to_consider\n\n:\n\n0.5\n\nPreferForwardCritic\n\n:\n\nenabled\n\n:\n\ntrue\n\ncost_power\n\n:\n\n1\n\ncost_weight\n\n:\n\n5.0\n\nthreshold_to_consider\n\n:\n\n0.5\n\n# ObstaclesCritic:\n\n#   enabled: true\n\n#   cost_power: 1\n\n#   repulsion_weight: 1.5\n\n#   critical_weight: 20.0\n\n#   consider_footprint: false\n\n#   collision_cost: 10000.0\n\n#   collision_margin_distance: 0.1\n\n#   near_goal_distance: 0.5\n\n#   inflation_radius: 0.55 # (only in Humble)\n\n#   cost_scaling_factor: 10.0 # (only in Humble)\n\nCostCritic\n\n:\n\nenabled\n\n:\n\ntrue\n\ncost_power\n\n:\n\n1\n\ncost_weight\n\n:\n\n3.81\n\ncritical_cost\n\n:\n\n300.0\n\nconsider_footprint\n\n:\n\ntrue\n\ncollision_cost\n\n:\n\n1000000.0\n\nnear_goal_distance\n\n:\n\n1.0\n\ntrajectory_point_step\n\n:\n\n2\n\nPathAlignCritic\n\n:\n\nenabled\n\n:\n\ntrue\n\ncost_power\n\n:\n\n1\n\ncost_weight\n\n:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a262-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Model Predictive Path Integral Controller\uf0c1.txt", "start_index": 12240, "chroma:document": ":\n\nenabled\n\n:\n\ntrue\n\ncost_power\n\n:\n\n1\n\ncost_weight\n\n:\n\n14.0\n\nmax_path_occupancy_ratio\n\n:\n\n0.05\n\ntrajectory_point_step\n\n:\n\n4\n\nthreshold_to_consider\n\n:\n\n0.5\n\noffset_from_furthest\n\n:\n\n20\n\nuse_path_orientations\n\n:\n\nfalse\n\nPathFollowCritic\n\n:\n\nenabled\n\n:\n\ntrue\n\ncost_power\n\n:\n\n1\n\ncost_weight\n\n:\n\n5.0\n\noffset_from_furthest\n\n:\n\n5\n\nthreshold_to_consider\n\n:\n\n1.4\n\nPathAngleCritic\n\n:\n\nenabled\n\n:\n\ntrue\n\ncost_power\n\n:\n\n1\n\ncost_weight\n\n:\n\n2.0\n\noffset_from_furthest\n\n:\n\n4\n\nthreshold_to_consider\n\n:\n\n0.5\n\nmax_angle_to_furthest\n\n:\n\n1.0\n\nmode\n\n:\n\n0\n\n# VelocityDeadbandCritic:\n\n#   enabled: true\n\n#   cost_power: 1\n\n#   cost_weight: 35.0\n\n#   deadband_velocities: [0.05, 0.05, 0.05]\n\n# TwirlingCritic:\n\n#   enabled: true\n\n#   twirling_cost_power: 1\n\n#   twirling_cost_weight: 10.0\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a280-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/AreErrorCodesPresent\uf0c1.txt", "start_index": 0, "chroma:document": "Title: AreErrorCodesPresent\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/conditions/AreErrorCodesPresent.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Example\uf0c1 Error codes to check are defined in another port. Error codes to check are defined to be 101, 107 and 119.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: FAILURE\n\n```\n\n<AreErrorCodesPresent\n\nerror_code=\n\n\"{error_code}\"\n\nerror_codes_to_check=\n\n\"{error_codes_to_check}\"\n\n/>\n\n```\n\nLanguage: unknown\n\nFile: FAILURE\n\n```\n\n<AreErrorCodesPresent\n\nerror_code=\n\n\"{error_code}\"\n\nerror_codes_to_check=\n\n\"101,107,119\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a294-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Camera Calibration\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Camera Calibration\uf0c1\n\nURL: https://docs.nav2.org/tutorials/docs/camera_calibration.html#tutorial-steps\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Overview\uf0c1\n\nThis tutorial shows how to obtain calibration parameters for monocular camera.\n\n## Requirements\uf0c1\n\n1- Install Camera Calibration Parser, Camera Info Manager and Launch Testing Ament Cmake using operating system\u2019s package manager:\n\n2- Image Pipeline need to be built from source in your workspace with:\n\nAlso, make sure you have the following:\n\n## Tutorial Steps\uf0c1\n\n1- Start a terminal in your GUI\n\n2- Launch the ROS driver for your specific camera.\n\n3- Make sure camera is publishing images over ROS. This can be tested by running:\n\n4- This will show you all the topics published make sure that there is an image_raw topic /camera/image_raw. To confirm that its a real topic and actually publishing check topic hz:\n\n5- Start the camera calibration node"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a2a8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Camera Calibration\uf0c1.txt", "start_index": 957, "chroma:document": "5- Start the camera calibration node\n\n6- In order to get a good calibration you will need to move the checkerboard around in the camera frame such that:\n\n7- As the checkerboard is moved around the 4 bars on the calibration sidebar increases in length. When all then the 4 bars are green and enough data is available for calibration the CALIBRATE button will light up. Click it to see the results. It takes around the minute for calibration to take place.\n\n8- After the calibration is completed the save and commit buttons light up. And you can also see the result in terminal.\n\n9-Press the save button to see the result. Data is saved to  \u201c/tmp/calibrationdata.tar.gz\u201d\n\n11-In the folder images used for calibration are available and also \u201cost.yaml\u201d and \u201cost.txt\u201d. You can use the yaml file which contains the calibration parameters as directed by the camera driver.\n\nCode Examples:\n\nLanguage: unknown"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a2bc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Camera Calibration\uf0c1.txt", "start_index": 1824, "chroma:document": "Code Examples:\n\nLanguage: unknown\n\nFile: ros2runcamera_calibrationcameracalibrator--size7x9--square0.02--ros-args-rimage:=/my_camera/image_raw-pcamera:=/my_camera\n\n```\n\nCamera\n\nName\n\n:\n\nc\n\n,\n\n--\n\ncamera_name\n\nname\n\nof\n\nthe\n\ncamera\n\nto\n\nappear\n\nin\n\nthe\n\ncalibration\n\nfile\n\nChessboard\n\nOptions\n\n:\n\nYou\n\nmust\n\nspecify\n\none\n\nor\n\nmore\n\nchessboards\n\nas\n\npairs\n\nof\n\n--\n\nsize\n\nand\n\n--\n\nsquare\n\noptions\n\n.\n\np\n\nPATTERN\n\n,\n\n--\n\npattern\n\n=\n\nPATTERN\n\ncalibration\n\npattern\n\nto\n\ndetect\n\n'chessboard'\n\n,\n\n'circles'\n\n,\n\n'acircles'\n\n,\n\n'charuco'\n\ns\n\nSIZE\n\n,\n\n--\n\nsize\n\n=\n\nSIZE\n\nchessboard\n\nsize\n\nas\n\nNxM\n\n,\n\ncounting\n\ninterior\n\ncorners\n\n(\n\ne\n\n.\n\ng\n\n.\n\na\n\nstandard\n\nchessboard\n\nis\n\n7\n\nx7\n\n)\n\nq\n\nSQUARE\n\n,\n\n--\n\nsquare\n\n=\n\nSQUARE\n\nchessboard\n\nsquare\n\nsize\n\nin\n\nmeters\n\nROS\n\nCommunication\n\nOptions\n\n:\n\n--\n\napproximate\n\n=\n\nAPPROXIMATE\n\nallow\n\nspecified\n\nslop\n\n(\n\nin\n\nseconds\n\n)\n\nwhen\n\npairing\n\nimages\n\nfrom\n\nunsynchronized\n\nstereo\n\ncameras\n\n--\n\nno\n\nservice\n\ncheck\n\ndisable\n\ncheck\n\nfor\n\nset_camera_info\n\nservices\n\nat\n\nstartup\n\nCalibration"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a2d0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Camera Calibration\uf0c1.txt", "start_index": 2782, "chroma:document": "for\n\nset_camera_info\n\nservices\n\nat\n\nstartup\n\nCalibration\n\nOptimizer\n\nOptions\n\n:\n\n--\n\nfix\n\nprincipal\n\npoint\n\nfix\n\nthe\n\nprincipal\n\npoint\n\nat\n\nthe\n\nimage\n\ncenter\n\n--\n\nfix\n\naspect\n\nratio\n\nenforce\n\nfocal\n\nlengths\n\n(\n\nfx\n\n,\n\nfy\n\n)\n\nare\n\nequal\n\n--\n\nzero\n\ntangent\n\ndist\n\nset\n\ntangential\n\ndistortion\n\ncoefficients\n\n(\n\np1\n\n,\n\np2\n\n)\n\nto\n\nzero\n\nk\n\nNUM_COEFFS\n\n,\n\n--\n\nk\n\ncoefficients\n\n=\n\nNUM_COEFFS\n\nnumber\n\nof\n\nradial\n\ndistortion\n\ncoefficients\n\nto\n\nuse\n\n(\n\nup\n\nto\n\n6\n\n,\n\ndefault\n\n2\n\n)\n\n--\n\ndisable_calib_cb_fast_check\n\nuses\n\nthe\n\nCALIB_CB_FAST_CHECK\n\nflag\n\nfor\n\nfindChessboardCorners\n\nThis\n\nwill\n\nopen\n\na\n\ncalibration\n\nwindow\n\nwhich\n\nhighlight\n\nthe\n\ncheckerboard\n\n.\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a2e4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/XYTheta Iterator\uf0c1.txt", "start_index": 0, "chroma:document": "Title: XYTheta Iterator\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/dwb\n\nparams/iterator.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1 <dwbplugin>: DWB plugin name defined in thecontroller_plugin_idsparameter inController Server."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a2f8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dynamic Object Following\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Dynamic Object Following\uf0c1\n\nURL: https://docs.nav2.org/tutorials/docs/navigation2_dynamic_point_following.html#run-dynamic-object-following-in-nav2-simulation\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Overview\uf0c1\n\nThis tutorial shows how to use Nav2 for a different task other than going from point A to point B. In this case, we will use Nav2 to follow a moving object at a distance indefinitely.\n\nThis task is useful in cases such as following a person or another robot. Below are some sample videos of applications that could be created using this capability. The \u201cCarry My Luggage\u201d RoboCup @ Home test, in which theCATIE Roboticsteam performs the test successfully and this real (future) world application:\n\nThe requirements for this task are as follows:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a316-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dynamic Object Following\uf0c1.txt", "start_index": 797, "chroma:document": "The requirements for this task are as follows:\n\nThe detection of the dynamic object (like a person) to follow is outside the scope of this tutorial. As shown in the following diagram, your application should provide a detector for the object(s) of interest,\n\nsend the initial pose to theNavigateToPoseaction, and update it on a topic for the duration of the task. Many different types of detectors exist that you can leverage for this application:\n\n## Tutorial Steps\uf0c1\n\n## 0- Create the Behavior Tree\uf0c1\n\nLet\u2019s start from this simple behavior tree. This behavior tree replans a new path at 1 hz and passes that path to the controller to follow:\n\nFirst, let\u2019s make this behavior run until there\u2019s a failure. For this purpose, we will use theKeepRunningUntilFailurecontrol node."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a32a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dynamic Object Following\uf0c1.txt", "start_index": 1572, "chroma:document": "We will then use the decoratorGoalUpdaterto accept updates of the dynamic object pose we\u2019re trying to follow. This node takes as input the current goal and subscribes to the topic/goal_update. It sets the new goal asupdated_goalif a new goal on that topic is received.\n\nTo stay at a certain distance from the target, we will use the action nodeTruncatePath. This node modifies a path making it shorter so we don\u2019t try to navigate into the object of interest. We can set up the desired distance to the goal using the input portdistance.\n\nNow, you may save this behavior tree and use it in our navigation task.\n\nFor reference, this exact behavior tree ismade availableto you batteries included in thenav2_bt_navigatorpackage.\n\n## 1- Setup Rviz clicked point\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a348-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dynamic Object Following\uf0c1.txt", "start_index": 2297, "chroma:document": "## 1- Setup Rviz clicked point\uf0c1\n\nWe are going to use RViz instead of a full application so you can test at home without finding a detector to get started. We will use the \u201cclicked point\u201d button on the toolbar to substitute object detections to provide goal updates to Nav2. This button allows you to\n\npublish coordinates in the topic/clicked_point. This point needs to be sent to the behavior tree, using the programclicked_point_to_pose, fromthis repo. Clone\n\nthis repo in your workspace, build, and type in a terminal.\n\nros2runnav2_test_utilsclicked_point_to_pose\n\nOptionally, you can remap this topic in your rviz configuration file togoal_updates.\n\n## 2- Run Dynamic Object Following in Nav2 Simulation\uf0c1\n\nStart Nav2 in one terminal:\n\nros2launchnav2_bringuptb3_simulation_launch.pydefault_bt_xml_filename:=/path/to/bt.xml"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a35c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dynamic Object Following\uf0c1.txt", "start_index": 3123, "chroma:document": "Open RViz and, after initialize the robot position, command the robot to navigate to any position. Use the button clicked point to simulate a new detection of the object of interest, as shown in the video in the head of this tutorial.\n\nWhen you have a detector detecting your obstacle at a higher rate (1 hz, 10 hz, 100 hz) you will see a far more reactive robot following your detected object of interest!\n\nCode Examples:\n\nLanguage: unknown\n\nFile: NavigateToPose\n\n```\n\n<root\n\nmain_tree_to_execute=\n\n\"MainTree\"\n\n>\n\n<BehaviorTree\n\nID=\n\n\"MainTree\"\n\n>\n\n<PipelineSequence\n\nname=\n\n\"NavigateWithReplanning\"\n\n>\n\n<RateController\n\nhz=\n\n\"1.0\"\n\n>\n\n<ComputePathToPose\n\ngoal=\n\n\"{goal}\"\n\npath=\n\n\"{path}\"\n\nplanner_id=\n\n\"GridBased\"\n\n/>\n\n</RateController>\n\n<FollowPath\n\npath=\n\n\"{path}\"\n\ncontroller_id=\n\n\"FollowPath\"\n\n/>\n\n</PipelineSequence>\n\n</BehaviorTree>\n\n</root>\n\n```\n\nLanguage: unknown\n\nFile: KeepRunningUntilFailure\n\n```\n\n<root\n\nmain_tree_to_execute=\n\n\"MainTree\"\n\n>\n\n<BehaviorTree\n\nID=\n\n\"MainTree\"\n\n>\n\n<PipelineSequence\n\nname="}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a370-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dynamic Object Following\uf0c1.txt", "start_index": 4076, "chroma:document": ">\n\n<BehaviorTree\n\nID=\n\n\"MainTree\"\n\n>\n\n<PipelineSequence\n\nname=\n\n\"NavigateWithReplanning\"\n\n>\n\n<RateController\n\nhz=\n\n\"1.0\"\n\n>\n\n<ComputePathToPose\n\ngoal=\n\n\"{goal}\"\n\npath=\n\n\"{path}\"\n\nplanner_id=\n\n\"GridBased\"\n\n/>\n\n</RateController>\n\n<KeepRunningUntilFailure>\n\n<FollowPath\n\npath=\n\n\"{path}\"\n\ncontroller_id=\n\n\"FollowPath\"\n\n/>\n\n</KeepRunningUntilFailure>\n\n</PipelineSequence>\n\n</BehaviorTree>\n\n</root>\n\n```\n\nLanguage: unknown\n\nFile: updated_goal\n\n```\n\n<root\n\nmain_tree_to_execute=\n\n\"MainTree\"\n\n>\n\n<BehaviorTree\n\nID=\n\n\"MainTree\"\n\n>\n\n<PipelineSequence\n\nname=\n\n\"NavigateWithReplanning\"\n\n>\n\n<RateController\n\nhz=\n\n\"1.0\"\n\n>\n\n<GoalUpdater\n\ninput_goal=\n\n\"{goal}\"\n\noutput_goal=\n\n\"{updated_goal}\"\n\n>\n\n<ComputePathToPose\n\ngoal=\n\n\"{updated_goal}\"\n\npath=\n\n\"{path}\"\n\nplanner_id=\n\n\"GridBased\"\n\n/>\n\n</GoalUpdater>\n\n</RateController>\n\n<KeepRunningUntilFailure>\n\n<FollowPath\n\npath=\n\n\"{path}\"\n\ncontroller_id=\n\n\"FollowPath\"\n\n/>\n\n</KeepRunningUntilFailure>\n\n</PipelineSequence>\n\n</BehaviorTree>\n\n</root>\n\n```\n\nLanguage: unknown\n\nFile: distance\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a384-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Dynamic Object Following\uf0c1.txt", "start_index": 5042, "chroma:document": "</root>\n\n```\n\nLanguage: unknown\n\nFile: distance\n\n```\n\n<root\n\nmain_tree_to_execute=\n\n\"MainTree\"\n\n>\n\n<BehaviorTree\n\nID=\n\n\"MainTree\"\n\n>\n\n<PipelineSequence\n\nname=\n\n\"NavigateWithReplanning\"\n\n>\n\n<RateController\n\nhz=\n\n\"1.0\"\n\n>\n\n<Sequence>\n\n<GoalUpdater\n\ninput_goal=\n\n\"{goal}\"\n\noutput_goal=\n\n\"{updated_goal}\"\n\n>\n\n<ComputePathToPose\n\ngoal=\n\n\"{updated_goal}\"\n\npath=\n\n\"{path}\"\n\nplanner_id=\n\n\"GridBased\"\n\n/>\n\n</GoalUpdater>\n\n<TruncatePath\n\ndistance=\n\n\"1.0\"\n\ninput_path=\n\n\"{path}\"\n\noutput_path=\n\n\"{truncated_path}\"\n\n/>\n\n</Sequence>\n\n</RateController>\n\n<KeepRunningUntilFailure>\n\n<FollowPath\n\npath=\n\n\"{truncated_path}\"\n\ncontroller_id=\n\n\"FollowPath\"\n\n/>\n\n</KeepRunningUntilFailure>\n\n</PipelineSequence>\n\n</BehaviorTree>\n\n</root>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a398-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Costmap 2D\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Costmap 2D\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring-costmaps.html#default-plugins\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Costmap2D ROS Parameters\uf0c1\n\n## Default Plugins\uf0c1\n\nWhen thepluginsparameter is not overridden, the following default plugins are loaded:\n\n## Plugin Parameters\uf0c1\n\n## Costmap Filters Parameters\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: plugin\n\n```\n\nlocal_costmap\n\n:\n\nros__parameters\n\n:\n\nplugins\n\n:\n\n[\n\n\"obstacle_layer\"\n\n,\n\n\"voxel_layer\"\n\n,\n\n\"inflation_layer\"\n\n]\n\nobstacle_layer\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::ObstacleLayer\"\n\nvoxel_layer\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::VoxelLayer\"\n\ninflation_layer\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::InflationLayer\"\n\n```\n\nLanguage: unknown\n\nFile: plugin\n\n```\n\nlocal_costmap\n\n:\n\nros__parameters\n\n:\n\nfilters\n\n:\n\n[\n\n\"keepout_filter\"\n\n,\n\n\"speed_filter\"\n\n]\n\nkeepout_filter\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::KeepoutFilter\"\n\nspeed_filter\n\n:\n\nplugin\n\n:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a3b6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Costmap 2D\uf0c1.txt", "start_index": 960, "chroma:document": "\"nav2_costmap_2d::KeepoutFilter\"\n\nspeed_filter\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::SpeedFilter\"\n\n```\n\nLanguage: unknown\n\nFile: plugins\n\n```\n\nglobal_costmap\n\n:\n\nglobal_costmap\n\n:\n\nros__parameters\n\n:\n\nfootprint_padding\n\n:\n\n0.03\n\nupdate_frequency\n\n:\n\n1.0\n\npublish_frequency\n\n:\n\n1.0\n\nglobal_frame\n\n:\n\nmap\n\nrobot_base_frame\n\n:\n\nbase_link\n\nuse_sim_time\n\n:\n\nTrue\n\nrobot_radius\n\n:\n\n0.22\n\n# radius set and used, so no footprint points\n\nresolution\n\n:\n\n0.05\n\nplugins\n\n:\n\n[\n\n\"static_layer\"\n\n,\n\n\"obstacle_layer\"\n\n,\n\n\"voxel_layer\"\n\n,\n\n\"inflation_layer\"\n\n]\n\nobstacle_layer\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::ObstacleLayer\"\n\nenabled\n\n:\n\nTrue\n\nobservation_sources\n\n:\n\nscan\n\nfootprint_clearing_enabled\n\n:\n\ntrue\n\nmax_obstacle_height\n\n:\n\n2.0\n\ncombination_method\n\n:\n\n1\n\nscan\n\n:\n\ntopic\n\n:\n\n/scan\n\nobstacle_max_range\n\n:\n\n2.5\n\nobstacle_min_range\n\n:\n\n0.0\n\nraytrace_max_range\n\n:\n\n3.0\n\nraytrace_min_range\n\n:\n\n0.0\n\nmax_obstacle_height\n\n:\n\n2.0\n\nmin_obstacle_height\n\n:\n\n0.0\n\nclearing\n\n:\n\nTrue\n\nmarking\n\n:\n\nTrue\n\ndata_type\n\n:\n\n\"LaserScan\"\n\ninf_is_valid\n\n:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a3d4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Costmap 2D\uf0c1.txt", "start_index": 1919, "chroma:document": "marking\n\n:\n\nTrue\n\ndata_type\n\n:\n\n\"LaserScan\"\n\ninf_is_valid\n\n:\n\nfalse\n\nvoxel_layer\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::VoxelLayer\"\n\nenabled\n\n:\n\nTrue\n\nfootprint_clearing_enabled\n\n:\n\ntrue\n\nmax_obstacle_height\n\n:\n\n2.0\n\npublish_voxel_map\n\n:\n\nTrue\n\norigin_z\n\n:\n\n0.0\n\nz_resolution\n\n:\n\n0.05\n\nz_voxels\n\n:\n\n16\n\nmax_obstacle_height\n\n:\n\n2.0\n\nunknown_threshold\n\n:\n\n15\n\nmark_threshold\n\n:\n\n0\n\nobservation_sources\n\n:\n\npointcloud\n\ncombination_method\n\n:\n\n1\n\npointcloud\n\n:\n\n# no frame set, uses frame from message\n\ntopic\n\n:\n\n/intel_realsense_r200_depth/points\n\nmax_obstacle_height\n\n:\n\n2.0\n\nmin_obstacle_height\n\n:\n\n0.0\n\nobstacle_max_range\n\n:\n\n2.5\n\nobstacle_min_range\n\n:\n\n0.0\n\nraytrace_max_range\n\n:\n\n3.0\n\nraytrace_min_range\n\n:\n\n0.0\n\nclearing\n\n:\n\nTrue\n\nmarking\n\n:\n\nTrue\n\ndata_type\n\n:\n\n\"PointCloud2\"\n\nstatic_layer\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::StaticLayer\"\n\nmap_subscribe_transient_local\n\n:\n\nTrue\n\nenabled\n\n:\n\ntrue\n\nsubscribe_to_updates\n\n:\n\ntrue\n\ntransform_tolerance\n\n:\n\n0.1\n\ninflation_layer\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::InflationLayer\""}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a3f2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Costmap 2D\uf0c1.txt", "start_index": 2888, "chroma:document": ":\n\nplugin\n\n:\n\n\"nav2_costmap_2d::InflationLayer\"\n\nenabled\n\n:\n\ntrue\n\ninflation_radius\n\n:\n\n0.55\n\ncost_scaling_factor\n\n:\n\n1.0\n\ninflate_unknown\n\n:\n\nfalse\n\ninflate_around_unknown\n\n:\n\ntrue\n\nalways_send_full_costmap\n\n:\n\nTrue\n\nlocal_costmap\n\n:\n\nlocal_costmap\n\n:\n\nros__parameters\n\n:\n\nupdate_frequency\n\n:\n\n5.0\n\npublish_frequency\n\n:\n\n2.0\n\nglobal_frame\n\n:\n\nodom\n\nrobot_base_frame\n\n:\n\nbase_link\n\nuse_sim_time\n\n:\n\nTrue\n\nrolling_window\n\n:\n\ntrue\n\nwidth\n\n:\n\n3\n\nheight\n\n:\n\n3\n\nresolution\n\n:\n\n0.05\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a406-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/GoalReached\uf0c1.txt", "start_index": 0, "chroma:document": "Title: GoalReached\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/conditions/GoalReached.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameter\uf0c1\n\n## Example\uf0c1\n\n## Input Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\nbt_navigator\n\n:\n\nros__parameters\n\n:\n\n# other bt_navigator parameters\n\ntransform_tolerance\n\n:\n\n0.1\n\ngoal_reached_tol\n\n:\n\n0.25\n\n```\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n<GoalReached\n\ngoal=\n\n\"{goal}\"\n\nrobot_base_frame=\n\n\"base_link\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a41a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Behavior-Tree Navigator\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Behavior-Tree Navigator\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring-bt-navigator.html#example\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: NavigateThroughPoses\n\n```\n\nbt_navigator\n\n:\n\nros__parameters\n\n:\n\nuse_sim_time\n\n:\n\ntrue\n\nglobal_frame\n\n:\n\nmap\n\nrobot_base_frame\n\n:\n\nbase_link\n\ntransform_tolerance\n\n:\n\n0.1\n\ndefault_nav_to_pose_bt_xml\n\n:\n\nreplace/with/path/to/bt.xml\n\n# or $(find-pkg-share my_package)/behavior_tree/my_nav_to_pose_bt.xml\n\ndefault_nav_through_poses_bt_xml\n\n:\n\nreplace/with/path/to/bt.xml\n\n# or $(find-pkg-share my_package)/behavior_tree/my_nav_through_poses_bt.xml\n\nalways_reload_bt_xml\n\n:\n\nfalse\n\ngoal_blackboard_id\n\n:\n\ngoal\n\ngoals_blackboard_id\n\n:\n\ngoals\n\npath_blackboard_id\n\n:\n\npath\n\nnavigators\n\n:\n\n[\n\n'navigate_to_pose'\n\n,\n\n'navigate_through_poses'\n\n]\n\nnavigate_to_pose\n\n:\n\nplugin\n\n:\n\n\"nav2_bt_navigator::NavigateToPoseNavigator\""}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a42e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Behavior-Tree Navigator\uf0c1.txt", "start_index": 964, "chroma:document": ":\n\nplugin\n\n:\n\n\"nav2_bt_navigator::NavigateToPoseNavigator\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\nnavigate_through_poses\n\n:\n\nplugin\n\n:\n\n\"nav2_bt_navigator::NavigateThroughPosesNavigator\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\nplugin_lib_names\n\n:\n\nnav2_compute_path_to_pose_action_bt_node\n\nnav2_follow_path_action_bt_node\n\nnav2_back_up_action_bt_node\n\nnav2_spin_action_bt_node\n\nnav2_wait_action_bt_node\n\nnav2_clear_costmap_service_bt_node\n\nnav2_is_stuck_condition_bt_node\n\nnav2_is_stopped_condition_bt_node\n\nnav2_goal_reached_condition_bt_node\n\nnav2_initial_pose_received_condition_bt_node\n\nnav2_goal_updated_condition_bt_node\n\nnav2_reinitialize_global_localization_service_bt_node\n\nnav2_rate_controller_bt_node\n\nnav2_distance_controller_bt_node\n\nnav2_speed_controller_bt_node\n\nnav2_recovery_node_bt_node\n\nnav2_pipeline_sequence_bt_node\n\nnav2_round_robin_node_bt_node\n\nnav2_transform_available_condition_bt_node\n\nnav2_time_expired_condition_bt_node"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a442-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Behavior-Tree Navigator\uf0c1.txt", "start_index": 1920, "chroma:document": "nav2_time_expired_condition_bt_node\n\nnav2_distance_traveled_condition_bt_node\n\nnav2_single_trigger_bt_node\n\nerror_code_names\n\n:\n\ncompute_path_error_code\n\nfollow_path_error_code\n\n# - smoother_error_code, navigate_to_pose_error_code, navigate_through_poses_error_code, etc\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a456-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/RemovePassedGoals\uf0c1.txt", "start_index": 0, "chroma:document": "Title: RemovePassedGoals\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/RemovePassedGoals.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Output Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: ComputePathThroughPoses\n\n```\n\n<RemovePassedGoals\n\nradius=\n\n\"0.6\"\n\ninput_goals=\n\n\"{goals}\"\n\noutput_goals=\n\n\"{goals}\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a474-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Rotation Shim Controller\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Using Rotation Shim Controller\uf0c1\n\nURL: https://docs.nav2.org/tutorials/docs/using_shim_controller.html#demo-execution\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Overview\uf0c1\n\nThis tutorial will discuss how to set up your robot to use theRotationShimControllerto help create intuitive, rotate-in-place, behavior for your robot while starting out to track a path. The goal of this tutorial is to explain to the reader the value of the controller, how to configure it, how to configure the primary controller with it, and finally an example of it in use.\n\nBefore starting this tutorial, completing theGetting Startedis highly recommended especially if you are new to ROS and Nav2. The requirements are having the latest install of Nav2 / ROS 2 containing this package.\n\n## What is the Rotation Shim Controller?\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a488-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Rotation Shim Controller\uf0c1.txt", "start_index": 850, "chroma:document": "## What is the Rotation Shim Controller?\uf0c1\n\nThis was developed due to quirks in TEB and DWB, but applicable to any other controller plugin type that you\u2019d like to have rotation in place behavior with.TEB\u2019s behavior tends to whip the robot around with small turns, or when the path is starting at a very different heading than current, in a somewhat surprising way due to the elastic band approach.DWBcan be tuned to have any type of behavior, but typically to tune it to be an excellent path follower also makes it less optimally capable of smooth transitions to new paths at far away headings \u2013 there are always trade offs. Giving both TEB and DWB a better starting point to start tracking a path makes tuning the controllers significantly easier and creates more intuitive results for on-lookers."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a49c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Rotation Shim Controller\uf0c1.txt", "start_index": 1649, "chroma:document": "Note that it is not required to use this withanyplugin. Many users are perfectly successful without using this controller, but if a robot may rotate in place before beginning its path tracking task (or others), it can be advantageous to do so.\n\nThenav2_rotation_shim_controllerwill check the rough heading difference with respect to the robot and a newly received path. If within a threshold, it will pass the request onto theprimary_controllerto execute the task. If it is outside of the threshold, this controller will rotate the robot in place towards that path heading. Once it is within the tolerance, it will then pass off control-execution from this rotation shim controller onto the primary controller plugin. At this point, the robot\u2019s main plugin will take control for a smooth hand off into the task.\n\nTheRotationShimControlleris most suitable for:\n\n## Configuring Rotation Shim Controller\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a4b0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Rotation Shim Controller\uf0c1.txt", "start_index": 2510, "chroma:document": "## Configuring Rotation Shim Controller\uf0c1\n\nThis controller is ashimbecause it is placed between the primary controller plugin and the controller server. It takes commands and pre-processes them to rotate to the heading and then passes off execution-control to the primary plugin once that condition is met - acting as a simple pass through.\n\nAs such, its configuration looks very similar to that of any other plugin. In the code block below, you can see that we\u2019ve added theRotationShimControlleras the plugin for path tracking in the controller server. You can see that we\u2019ve also configured it below with its internal parameters,angular_dist_thresholdthroughmax_angular_accel.\n\nThe Rotation Shim Controller is very simple and only has a couple of parameters to dictate the conditions it should be enacted.\n\n## Configuring Primary Controller\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a4c4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Rotation Shim Controller\uf0c1.txt", "start_index": 3318, "chroma:document": "## Configuring Primary Controller\uf0c1\n\nThere is one more remaining parameter of theRotationShimControllernot mentioned above, theprimary_controller. This is the type of controller that your application would like to use as the primary modus operandi. It will share the same name and yaml namespace as the shim plugin. You can observe this below with the primary controller set theDWB(with the progress and goal checkers removed for brevity).\n\nAn important note is thatwithin the same yaml namespace, you may also include anyprimary_controllerspecific parameters required for a robot. Thusly, aftermax_angular_accel, you can include any ofDWB\u2019s parameters for your platform.\n\n## Demo Execution\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: max_angular_accel\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:\n\nuse_sim_time\n\n:\n\nTrue\n\ncontroller_frequency\n\n:\n\n20.0\n\nmin_x_velocity_threshold\n\n:\n\n0.001\n\nmin_y_velocity_threshold\n\n:\n\n0.5\n\nmin_theta_velocity_threshold\n\n:\n\n0.001\n\nprogress_checker_plugins\n\n:\n\n[\n\n\"progress_checker\"\n\n]"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a4d8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Rotation Shim Controller\uf0c1.txt", "start_index": 4274, "chroma:document": "0.001\n\nprogress_checker_plugins\n\n:\n\n[\n\n\"progress_checker\"\n\n]\n\n# progress_checker_plugin: \"progress_checker\" For Humble and older\n\ngoal_checker_plugins\n\n:\n\n[\n\n\"goal_checker\"\n\n]\n\ncontroller_plugins\n\n:\n\n[\n\n\"FollowPath\"\n\n]\n\nprogress_checker\n\n:\n\nplugin\n\n:\n\n\"nav2_controller::SimpleProgressChecker\"\n\nrequired_movement_radius\n\n:\n\n0.5\n\nmovement_time_allowance\n\n:\n\n10.0\n\ngoal_checker\n\n:\n\nplugin\n\n:\n\n\"nav2_controller::SimpleGoalChecker\"\n\nxy_goal_tolerance\n\n:\n\n0.25\n\nyaw_goal_tolerance\n\n:\n\n0.25\n\nstateful\n\n:\n\nTrue\n\nFollowPath\n\n:\n\nplugin\n\n:\n\n\"nav2_rotation_shim_controller::RotationShimController\"\n\nangular_dist_threshold\n\n:\n\n0.785\n\nforward_sampling_distance\n\n:\n\n0.5\n\nrotate_to_heading_angular_vel\n\n:\n\n1.8\n\nmax_angular_accel\n\n:\n\n3.2\n\nsimulate_ahead_time\n\n:\n\n1.0\n\n```\n\nLanguage: unknown\n\nFile: DWB\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:\n\nuse_sim_time\n\n:\n\nTrue\n\ncontroller_frequency\n\n:\n\n20.0\n\nmin_x_velocity_threshold\n\n:\n\n0.001\n\nmin_y_velocity_threshold\n\n:\n\n0.5\n\nmin_theta_velocity_threshold\n\n:\n\n0.001\n\ncontroller_plugins\n\n:\n\n["}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a4ec-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Using Rotation Shim Controller\uf0c1.txt", "start_index": 5261, "chroma:document": ":\n\n0.001\n\ncontroller_plugins\n\n:\n\n[\n\n\"FollowPath\"\n\n]\n\nFollowPath\n\n:\n\nplugin\n\n:\n\n\"nav2_rotation_shim_controller::RotationShimController\"\n\nprimary_controller\n\n:\n\n\"dwb_core::DWBLocalPlanner\"\n\nangular_dist_threshold\n\n:\n\n0.785\n\nforward_sampling_distance\n\n:\n\n0.5\n\nrotate_to_heading_angular_vel\n\n:\n\n1.8\n\nmax_angular_accel\n\n:\n\n3.2\n\nsimulate_ahead_time\n\n:\n\n1.0\n\n# DWB parameters\n\n...\n\n...\n\n...\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a500-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Theta Star Planner\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Theta Star Planner\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring\n\nthetastar.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1 The parameters of the planner are:\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown File: <name> ``` planner_server : ros__parameters : expected_planner_frequency : 20.0 use_sim_time : True planner_plugins : [ \"GridBased\" ] GridBased : plugin : \"nav2_theta_star_planner::ThetaStarPlanner\" # In Iron and older versions, \"/\" was used instead of \"::\" how_many_corners : 8 w_euc_cost : 1.0 w_traversal_cost : 2.0 w_heuristic_cost : 1.0 ```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a514-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Keepout Filter Parameters\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Keepout Filter Parameters\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/costmap-plugins/keepout_filter.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: <filtername>\n\n```\n\nglobal_costmap\n\n:\n\nglobal_costmap\n\n:\n\nros__parameters\n\n:\n\n...\n\nplugins\n\n:\n\n[\n\n\"static_layer\"\n\n,\n\n\"obstacle_layer\"\n\n,\n\n\"inflation_layer\"\n\n]\n\nfilters\n\n:\n\n[\n\n\"keepout_filter\"\n\n]\n\n...\n\nkeepout_filter\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::KeepoutFilter\"\n\nenabled\n\n:\n\nTrue\n\nfilter_info_topic\n\n:\n\n\"/costmap_filter_info\"\n\ntransform_tolerance\n\n:\n\n0.1\n\n...\n\nlocal_costmap\n\n:\n\nlocal_costmap\n\n:\n\nros__parameters\n\n:\n\n...\n\nplugins\n\n:\n\n[\n\n\"voxel_layer\"\n\n,\n\n\"inflation_layer\"\n\n]\n\nfilters\n\n:\n\n[\n\n\"keepout_filter\"\n\n]\n\n...\n\nkeepout_filter\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::KeepoutFilter\"\n\nenabled\n\n:\n\nTrue\n\nfilter_info_topic\n\n:\n\n\"/costmap_filter_info\"\n\ntransform_tolerance\n\n:\n\n0.1\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a528-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Plugin Tutorials\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Plugin Tutorials\uf0c1\n\nURL: https://docs.nav2.org/plugin_tutorials/index.html\n\nSection: plugin_tutorials/index.html\n\n--------------------------------------------------------------------------------"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a546-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/GoalDistCritic\uf0c1.txt", "start_index": 0, "chroma:document": "Title: GoalDistCritic\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/trajectory_critics/goal_dist.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1 <dwbplugin>: DWB plugin name defined in thecontroller_plugin_idsparameter inController Server. <name>: GoalDistCritic critic name defined in the<dwb plugin>.criticsparameter defined inDWB Controller."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a55a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Writing a New Controller Plugin\uf0c1\n\nURL: https://docs.nav2.org/plugin_tutorials/docs/writing_new_nav2controller_plugin.html#writing-new-nav2controller-plugin\n\nSection: tuning/index.html\n\n--------------------------------------------------------------------------------\n\n## Overview\uf0c1\n\nThis tutorial shows how to create your own controllerplugin.\n\nIn this tutorial, we will be implementing the pure pursuit path tracking algorithm based on thispaper.\n\nIt is recommended you go through it.\n\nNote: This tutorial is based on a previously existing simplified version of the Regulated Pure Pursuit controller now in the Nav2 stack.\n\nYou can find the source code matching this tutorialhere.\n\n## Requirements\uf0c1\n\n## Tutorial Steps\uf0c1\n\n## 1- Create a new Controller Plugin\uf0c1\n\nWe will be implementing the pure pursuit controller. The annotated code in this tutorial can be found innavigation_tutorialsrepository\n\nas thenav2_pure_pursuit_controller. This package can be considered as a reference for writing your own controller plugin."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a56e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 1024, "chroma:document": "Our example plugin classnav2_pure_pursuit_controller::PurePursuitControllerinherits from the base classnav2_core::Controller. The base class provides a\n\nset of virtual methods to implement a controller plugin. These methods are called at runtime by the controller server to compute velocity commands.\n\nThe list of methods, their descriptions, and necessity are presented in the table below:\n\nIn this tutorial, we will use the methodsPurePursuitController::configure,PurePursuitController::setPlanandPurePursuitController::computeVelocityCommands.\n\nIn controllers,configure()method must set member variables from ROS parameters and perform any initialization required.\n\nHere,plugin_name_+\".desired_linear_vel\"is fetching the ROS parameterdesired_linear_velwhich is specific to our controller.\n\nNav2 allows loading of multiple plugins, and to keep things organized, each plugin is mapped to some ID/name."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a582-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 1928, "chroma:document": "Now, if we want to retrieve the parameters for that specific plugin, we use<mapped_name_of_plugin>.<name_of_parameter>as done in the above snippet.\n\nFor example, our example controller is mapped to the nameFollowPathand to retrieve thedesired_linear_velparameter, which is specific to \u201cFollowPath\u201d,\n\nwe usedFollowPath.desired_linear_vel. In other words,FollowPathis used as a namespace for plugin-specific parameters.\n\nWe will see more on this when we discuss the parameters file (or params file).\n\nThe passed-in arguments are stored in member variables so that they can be used at a later stage if needed.\n\nInsetPlan()method, we receive the updated global path for the robot to follow. In our example, we transform the received global path into\n\nthe frame of the robot and then store this transformed global path for later use.\n\nThe computation for the desired velocity happens in thecomputeVelocityCommands()method. It is used to calculate the desired velocity command given the current velocity and pose."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a596-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 2937, "chroma:document": "The third argument - is a pointer to thenav2_core::GoalChecker, that checks whether a goal has been reached. In our example, this won\u2019t be used.\n\nIn the case of pure pursuit, the algorithm computes velocity commands such that the robot tries to follow the global path as closely as possible.\n\nThis algorithm assumes a constant linear velocity and computes the angular velocity based on the curvature of the global path.\n\nThe remaining methods are not used, but it\u2019s mandatory to override them. As per the rules, we did override all but left them empty.\n\n## 2- Exporting the controller plugin\uf0c1\n\nNow that we have created our custom controller, we need to export our controller plugin so that it will be visible to the controller server.\n\nPlugins are loaded at runtime, and if they are not visible, then our controller server won\u2019t be able to load them. In ROS 2, exporting and loading\n\nplugins is handled bypluginlib."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a5aa-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 3821, "chroma:document": "plugins is handled bypluginlib.\n\nComing back to our tutorial, classnav2_pure_pursuit_controller::PurePursuitControlleris loaded dynamically asnav2_core::Controllerwhich is our base class.\n\nNote that it requires pluginlib to export out the plugin\u2019s class. Pluginlib would provide as macroPLUGINLIB_EXPORT_CLASS, which does all the work of exporting.\n\nIt is good practice to place these lines at the end of the file, but technically, you can also write at the top.\n\n## 3- Pass the plugin name through the params file\uf0c1\n\nTo enable the plugin, we need to modify thenav2_params.yamlfile as below\n\nIn the above snippet, you can observe the mapping of ournav2_pure_pursuit_controller::PurePursuitControllercontroller to its idFollowPath.\n\nTo pass plugin-specific parameters we have used<plugin_id>.<plugin_specific_parameter>.\n\n## 4- Run Pure Pursuit Controller plugin\uf0c1\n\nRun Turtlebot3 simulation with enabled Nav2. Detailed instructions on how to make it run are written atGetting Started. Below is a shortcut command for that:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a5c8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 4843, "chroma:document": "Then goto RViz and click on the \u201c2D Pose Estimate\u201d button at the top and point the location on the map as it was described inGetting Started.\n\nThe robot will localize on the map and then click on the \u201cNav2 goal\u201d and click on the pose where you want your robot to navigate to.\n\nAfter that controller will make the robot follow the global path.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: configure()\n\n```\n\nvoid\n\nPurePursuitController::configure\n\n(\n\nconst\n\nrclcpp_lifecycle\n\n::\n\nLifecycleNode\n\n::\n\nWeakPtr\n\n&\n\nparent\n\n,\n\nstd\n\n::\n\nstring\n\nname\n\n,\n\nstd\n\n::\n\nshared_ptr\n\n<\n\ntf2_ros\n\n::\n\nBuffer\n\n>\n\ntf\n\n,\n\nstd\n\n::\n\nshared_ptr\n\n<\n\nnav2_costmap_2d\n\n::\n\nCostmap2DROS\n\n>\n\ncostmap_ros\n\n)\n\n{\n\nnode_\n\n=\n\nparent\n\n;\n\nauto\n\nnode\n\n=\n\nnode_\n\n.\n\nlock\n\n();\n\ncostmap_ros_\n\n=\n\ncostmap_ros\n\n;\n\ntf_\n\n=\n\ntf\n\n;\n\nplugin_name_\n\n=\n\nname\n\n;\n\nlogger_\n\n=\n\nnode\n\n>\n\nget_logger\n\n();\n\nclock_\n\n=\n\nnode\n\n>\n\nget_clock\n\n();\n\ndeclare_parameter_if_not_declared\n\n(\n\nnode\n\n,\n\nplugin_name_\n\n+\n\n\".desired_linear_vel\"\n\n,\n\nrclcpp\n\n::\n\nParameterValue\n\n(\n\n0.2\n\n));"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a5dc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 5814, "chroma:document": ",\n\nrclcpp\n\n::\n\nParameterValue\n\n(\n\n0.2\n\n));\n\ndeclare_parameter_if_not_declared\n\n(\n\nnode\n\n,\n\nplugin_name_\n\n+\n\n\".lookahead_dist\"\n\n,\n\nrclcpp\n\n::\n\nParameterValue\n\n(\n\n0.4\n\n));\n\ndeclare_parameter_if_not_declared\n\n(\n\nnode\n\n,\n\nplugin_name_\n\n+\n\n\".max_angular_vel\"\n\n,\n\nrclcpp\n\n::\n\nParameterValue\n\n(\n\n1.0\n\n));\n\ndeclare_parameter_if_not_declared\n\n(\n\nnode\n\n,\n\nplugin_name_\n\n+\n\n\".transform_tolerance\"\n\n,\n\nrclcpp\n\n::\n\nParameterValue\n\n(\n\n0.1\n\n));\n\nnode\n\n>\n\nget_parameter\n\n(\n\nplugin_name_\n\n+\n\n\".desired_linear_vel\"\n\n,\n\ndesired_linear_vel_\n\n);\n\nnode\n\n>\n\nget_parameter\n\n(\n\nplugin_name_\n\n+\n\n\".lookahead_dist\"\n\n,\n\nlookahead_dist_\n\n);\n\nnode\n\n>\n\nget_parameter\n\n(\n\nplugin_name_\n\n+\n\n\".max_angular_vel\"\n\n,\n\nmax_angular_vel_\n\n);\n\ndouble\n\ntransform_tolerance\n\n;\n\nnode\n\n>\n\nget_parameter\n\n(\n\nplugin_name_\n\n+\n\n\".transform_tolerance\"\n\n,\n\ntransform_tolerance\n\n);\n\ntransform_tolerance_\n\n=\n\nrclcpp\n\n::\n\nDuration\n\n::\n\nfrom_seconds\n\n(\n\ntransform_tolerance\n\n);\n\n}\n\n```\n\nLanguage: unknown\n\nFile: setPlan()\n\n```\n\nvoid\n\nPurePursuitController::setPlan\n\n(\n\nconst"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a5fa-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 6781, "chroma:document": "```\n\nvoid\n\nPurePursuitController::setPlan\n\n(\n\nconst\n\nnav_msgs\n\n::\n\nmsg\n\n::\n\nPath\n\n&\n\npath\n\n)\n\n{\n\n// Transform global path into the robot's frame\n\nglobal_plan_\n\n=\n\ntransformGlobalPlan\n\n(\n\npath\n\n);\n\n}\n\n```\n\nLanguage: unknown\n\nFile: nav2_core::GoalChecker\n\n```\n\ngeometry_msgs\n\n::\n\nmsg\n\n::\n\nTwistStamped\n\nPurePursuitController::computeVelocityCommands\n\n(\n\nconst\n\ngeometry_msgs\n\n::\n\nmsg\n\n::\n\nPoseStamped\n\n&\n\npose\n\n,\n\nconst\n\ngeometry_msgs\n\n::\n\nmsg\n\n::\n\nTwist\n\n&\n\nvelocity\n\n,\n\nnav2_core\n\n::\n\nGoalChecker\n\n/*goal_checker*/\n\n)\n\n{\n\n// Find the first pose which is at a distance greater than the specified lookahead distance\n\nauto\n\ngoal_pose\n\n=\n\nstd\n\n::\n\nfind_if\n\n(\n\nglobal_plan_\n\n.\n\nposes\n\n.\n\nbegin\n\n(),\n\nglobal_plan_\n\n.\n\nposes\n\n.\n\nend\n\n(),\n\n[\n\n&\n\n](\n\nconst\n\nauto\n\n&\n\nglobal_plan_pose\n\n)\n\n{\n\nreturn\n\nhypot\n\n(\n\nglobal_plan_pose\n\n.\n\npose\n\n.\n\nposition\n\n.\n\nx\n\n,\n\nglobal_plan_pose\n\n.\n\npose\n\n.\n\nposition\n\n.\n\ny\n\n)\n\n>=\n\nlookahead_dist_\n\n;\n\n})\n\n>\n\npose\n\n;\n\ndouble\n\nlinear_vel\n\n,\n\nangular_vel\n\n;"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a60e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 7700, "chroma:document": ";\n\n})\n\n>\n\npose\n\n;\n\ndouble\n\nlinear_vel\n\n,\n\nangular_vel\n\n;\n\n// If the goal pose is in front of the robot then compute the velocity using the pure pursuit algorithm\n\n// else rotate with the max angular velocity until the goal pose is in front of the robot\n\nif\n\n(\n\ngoal_pose\n\n.\n\nposition\n\n.\n\nx\n\n>\n\n0\n\n)\n\n{\n\nauto\n\ncurvature\n\n=\n\n2.0\n\ngoal_pose\n\n.\n\nposition\n\n.\n\ny\n\n/\n\n(\n\ngoal_pose\n\n.\n\nposition\n\n.\n\nx\n\ngoal_pose\n\n.\n\nposition\n\n.\n\nx\n\n+\n\ngoal_pose\n\n.\n\nposition\n\n.\n\ny\n\ngoal_pose\n\n.\n\nposition\n\n.\n\ny\n\n);\n\nlinear_vel\n\n=\n\ndesired_linear_vel_\n\n;\n\nangular_vel\n\n=\n\ndesired_linear_vel_\n\ncurvature\n\n;\n\n}\n\nelse\n\n{\n\nlinear_vel\n\n=\n\n0.0\n\n;\n\nangular_vel\n\n=\n\nmax_angular_vel_\n\n;\n\n}\n\n// Create and publish a TwistStamped message with the desired velocity\n\ngeometry_msgs\n\n::\n\nmsg\n\n::\n\nTwistStamped\n\ncmd_vel\n\n;\n\ncmd_vel\n\n.\n\nheader\n\n.\n\nframe_id\n\n=\n\npose\n\n.\n\nheader\n\n.\n\nframe_id\n\n;\n\ncmd_vel\n\n.\n\nheader\n\n.\n\nstamp\n\n=\n\nclock_\n\n>\n\nnow\n\n();\n\ncmd_vel\n\n.\n\ntwist\n\n.\n\nlinear\n\n.\n\nx\n\n=\n\nlinear_vel\n\n;\n\ncmd_vel\n\n.\n\ntwist\n\n.\n\nangular\n\n.\n\nz\n\n=\n\nmax\n\n(\n\n1.0\n\nabs\n\n("}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a622-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 8656, "chroma:document": ";\n\ncmd_vel\n\n.\n\ntwist\n\n.\n\nangular\n\n.\n\nz\n\n=\n\nmax\n\n(\n\n1.0\n\nabs\n\n(\n\nmax_angular_vel_\n\n),\n\nmin\n\n(\n\nangular_vel\n\n,\n\nabs\n\n(\n\nmax_angular_vel_\n\n)));\n\nreturn\n\ncmd_vel\n\n;\n\n}\n\n```\n\nLanguage: unknown\n\nFile: nav2_core::Controller\n\n```\n\n#include\n\n\"pluginlib/class_list_macros.hpp\"\n\nPLUGINLIB_EXPORT_CLASS\n\n(\n\nnav2_pure_pursuit_controller\n\n::\n\nPurePursuitController\n\n,\n\nnav2_core\n\n::\n\nController\n\n)\n\n```\n\nLanguage: unknown\n\nFile: description\n\n```\n\n<library\n\npath=\n\n\"nav2_pure_pursuit_controller\"\n\n>\n\n<class\n\ntype=\n\n\"nav2_pure_pursuit_controller::PurePursuitController\"\n\nbase_class_type=\n\n\"nav2_core::Controller\"\n\n>\n\n<description>\n\nThis\n\nis\n\npure\n\npursuit\n\ncontroller\n\n</description>\n\n</class>\n\n</library>\n\n```\n\nLanguage: unknown\n\nFile: share\n\n```\n\npluginlib_export_plugin_description_file(nav2_core pure_pursuit_controller_plugin.xml)\n\n```\n\nLanguage: unknown\n\nFile: package.xml\n\n```\n\n<export>\n\n<build_type>\n\nament_cmake\n\n</build_type>\n\n<nav2_core\n\nplugin=\n\n\"${prefix}/pure_pursuit_controller_plugin.xml\"\n\n/>\n\n</export>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a640-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Writing a New Controller Plugin\uf0c1.txt", "start_index": 9646, "chroma:document": "/>\n\n</export>\n\n```\n\nLanguage: unknown\n\nFile: nav2_params.yaml\n\n```\n\ncontroller_server:\n\nros__parameters:\n\ncontroller_plugins: [\"FollowPath\"]\n\nFollowPath:\n\nplugin: \"nav2_pure_pursuit_controller::PurePursuitController\" # In Iron and older versions, \"/\" was used instead of \"::\"\n\ndebug_trajectory_details: True\n\ndesired_linear_vel: 0.2\n\nlookahead_dist: 0.4\n\nmax_angular_vel: 1.0\n\ntransform_tolerance: 1.0\n\n```\n\nLanguage: unknown\n\nFile: <plugin_id>.<plugin_specific_parameter>\n\n```\n\n$\n\nros2\n\nlaunch\n\nnav2_bringup\n\ntb3_simulation_launch.py\n\nparams_file:\n\n=\n\n/path/to/your_params_file.yaml\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a654-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/CancelAssistedTeleop\uf0c1.txt", "start_index": 0, "chroma:document": "Title: CancelAssistedTeleop\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/CancelAssistedTeleop.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: assisted_teleop\n\n```\n\n<CancelAssistedTeleop\n\nserver_name=\n\n\"assisted_teleop\"\n\nserver_timeout=\n\n\"10\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a668-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Smac 2D Planner\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Smac 2D Planner\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/smac/configuring-smac-2d.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: <name>\n\n```\n\nplanner_server\n\n:\n\nros__parameters\n\n:\n\nplanner_plugins\n\n:\n\n[\n\n\"GridBased\"\n\n]\n\nuse_sim_time\n\n:\n\nTrue\n\nGridBased\n\n:\n\nplugin\n\n:\n\n\"nav2_smac_planner::SmacPlanner2D\"\n\n# In Iron and older versions, \"/\" was used instead of \"::\"\n\ntolerance\n\n:\n\n0.125\n\n# tolerance for planning if unable to reach exact pose, in meters\n\ndownsample_costmap\n\n:\n\nfalse\n\n# whether or not to downsample the map\n\ndownsampling_factor\n\n:\n\n1\n\n# multiplier for the resolution of the costmap layer (e.g. 2 on a 5cm costmap would be 10cm)\n\nallow_unknown\n\n:\n\ntrue\n\n# allow traveling in unknown space\n\nmax_iterations\n\n:\n\n1000000\n\n# maximum total iterations to search for before failing (in case unreachable), set to -1 to disable\n\nmax_on_approach_iterations"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a686-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Smac 2D Planner\uf0c1.txt", "start_index": 998, "chroma:document": "max_on_approach_iterations\n\n:\n\n1000\n\n# maximum number of iterations to attempt to reach goal once in tolerance\n\nmax_planning_time\n\n:\n\n2.0\n\n# max time in s for planner to plan, smooth\n\ncost_travel_multiplier\n\n:\n\n2.0\n\n# Cost multiplier to apply to search to steer away from high cost areas. Larger values will place in the center of aisles more exactly (if non-`FREE` cost potential field exists) but take slightly longer to compute. To optimize for speed, a value of 1.0 is reasonable. A reasonable tradeoff value is 2.0. A value of 0.0 effective disables steering away from obstacles and acts like a naive binary search A*.\n\nuse_final_approach_orientation\n\n:\n\nfalse\n\n# Whether to set the final path pose at the goal's orientation to the requested orientation (false) or in line with the approach angle so the robot doesn't rotate to heading (true)\n\nsmoother\n\n:\n\nmax_iterations\n\n:\n\n1000\n\nw_smooth\n\n:\n\n0.3\n\nw_data\n\n:\n\n0.2\n\ntolerance\n\n:\n\n1.0e-10\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a69a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Jazzy to K-Turtle\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Jazzy to K\n\nTurtle\uf0c1\n\nURL: https://docs.nav2.org/migration/Jazzy.html#docking\n\nwith\n\nstatic\n\ninfrastructure\n\nor\n\ndynamic\n\ndocking\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a6ae-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Jazzy to K-Turtle\uf0c1.txt", "start_index": 256, "chroma:document": "## TwistStamped Default CmdVel Change\uf0c1 In Kilted and newer, the defaultcmd_veltopic for allTwistpublishers and subscriptions is changed toTwistStampedin order to enable a broader range of applications. it also allows for rejection of stale velocity messages, which can be useful in some applications. Your robot should now subscribe to aTwistStampedmessage instead of aTwistmessage & update your simulation appropriately. The topic names are the same. However, this can be disabled by settingenable_twist_stampedtofalsein thenav2_params.yamlfile for all nodes that involve Twist subscriptions or publications. See the configuration guide for more information on how to configure this parameter for each node. An example simulation migration using Gazebo can be seen in thefollowing pull request for the Turtlebot 3 and 4."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a6cc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Jazzy to K-Turtle\uf0c1.txt", "start_index": 1079, "chroma:document": "## New Nav2 Loopback Simulator\uf0c1 Thenav2_loopback_simis a stand-alone simulator to create a \u201cloopback\u201d for non-physical simulation to replace robot hardware, physics simulators (Gazebo, Bullet, Isaac Sim, etc). It computes the robot\u2019s odometry based on the command velocity\u2019s output request to create a perfect \u2018frictionless plane\u2019-style simulation for unit testing, system testing, R&D on higher level systems, testing behaviors without concerning yourself with localization accuracy or system dynamics, and multirobot simulations.\n\n## Docking with Static Infrastructure or Dynamic Docking\uf0c1 InPR #4627a docking plugin type and logic was added to support non-charging dock types in the nav2 docking server. This allows users to specify docking locations to static infrastructure, such as conveyers, or dynamic docking locations, such as a pallet. It also includes a new docking plugin to demonstrate the new docking server capabilitiessimple_non_charging_dock."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a6ea-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Jazzy to K-Turtle\uf0c1.txt", "start_index": 2040, "chroma:document": "## New RViz panel for Docking\uf0c1 InPR #4458a new RViz panel was added to interact with the Docking Server. This panel allows the user to: The panel displays the action goal status and feedback published bynav2_msgs/DockRobotandnav2_msgs/UndockRobotactions. Users can find information such as elapsed time, number of retries and the current state of the action (staging, controlling, etc.), as well as the error codes of the action. Here we can see the working demo of the plugin:\n\n## New BT Nodes\uf0c1 Below is a list of new BT Nodes added:\n\n## New RViz Tool for Costmap Cost Cell Inspection\uf0c1 InPR #4546a new RViz tool was added to get the costmap costcell\u2019s cost and a service to get the costcell\u2019s cost at the footprint pose. Usage: Working demo of the tool:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a6fe-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Jazzy to K-Turtle\uf0c1.txt", "start_index": 2796, "chroma:document": "## Fix flickering visualization\uf0c1 InPR #4561amap_vis_zparameter has been introduced to Costmap2DROS to help modify the map slightly below the default plane, aiming to eliminate rviz visualization flickering issues. Default Value: Minimum Value Without Flickering: Before: After:\n\n## Option to limit velocity through DWB trajectory\uf0c1 InPR #4663alimit_vel_cmd_in_trajparameter was introduced to DWB local planner to allow the user to limit the velocity used in the trajectory generation based on the robot\u2019s current velocity. Default value:\n\n## Option to disable zero velocity publishing on goal exit\uf0c1 InPR #4675apublish_zero_velocityparameter was introduced for theController serverin order to disable zero velocity publishing on goal exit. Default value:\n\n## Added optional collision checking for the Docking Server\uf0c1 InPR #4752an optional collision checking feature was added to theDocking serverto check for collisions between the robot and the dock. Default value:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a712-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Jazzy to K-Turtle\uf0c1.txt", "start_index": 3762, "chroma:document": "## Revamped multirobot bringup and config files to use namespaces\uf0c1 InPR #4715multirobot bringup and the use of namespaces were overhauled to be compatible out of the box with ROS namespaces and remove custom logic, specifically: Note that some plugins / nodes might have their own local namespace. This is the case forCostmapLayerwhich will be in a/ns/[layer_name]namespace. For these, a new functionjoinWithParentNamespacehas been added to make sure joining relative paths results in/ns/topic_namerather than/ns/[layer_name]/topic_name. If your use case doesn\u2019t require multiple robots, keeping absolute paths in yournav2_params.yamlconfig file and rviz config file will preserve existing behavior. For example, if you specifytopic:scanin thevoxel_layerof alocal_costmapand you launch your bringup with atb4namespace:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a730-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Jazzy to K-Turtle\uf0c1.txt", "start_index": 4582, "chroma:document": "## Removed global map_topic from Costmap node\uf0c1 InPR #4715the globalmap_topicparameter has been removed from theCostmap2DROSnode. This parameterwas only used in theStaticLayerand should be defined as a parameter local to theStaticLayerinstead, for example:\n\n## Simplified Costmap2DROS constructors\uf0c1 The following constructors forCostmap2DROShave been removed: They have been consolidated into a single one: Thelocal_namespaceparameter has been removed and is now automatically set to the node\u2019s name (which is what the second removed constructor did). Parametersparent_namespace/use_sim_timeboth provide default values to maintain the ability of creating aCostmap2DROSobject by just specifying a name.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: StaticLayer\n\n```\n\nglobal_costmap\n\n:\n\nglobal_costmap\n\n:\n\nros__parameters\n\n:\n\n[\n\n...\n\n]\n\n# Not supported anymore\n\nmap_topic\n\n:\n\nmy_map\n\nstatic_layer\n\n:\n\nplugin\n\n:\n\n\"nav2_costmap_2d::StaticLayer\"\n\nmap_subscribe_transient_local\n\n:\n\nTrue\n\n# Do this instead\n\nmap_topic\n\n:\n\nmy_map\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a744-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Jazzy to K-Turtle\uf0c1.txt", "start_index": 5550, "chroma:document": ":\n\nTrue\n\n# Do this instead\n\nmap_topic\n\n:\n\nmy_map\n\n```\n\nLanguage: unknown\n\nFile: Costmap2DROS\n\n```\n\nexplicit\n\nCostmap2DROS\n\n(\n\nconst\n\nstd\n\n::\n\nstring\n\n&\n\nname\n\n,\n\nconst\n\nstd\n\n::\n\nstring\n\n&\n\nparent_namespace\n\n,\n\nconst\n\nstd\n\n::\n\nstring\n\n&\n\nlocal_namespace\n\n,\n\nconst\n\nbool\n\n&\n\nuse_sim_time\n\n);\n\nexplicit\n\nCostmap2DROS\n\n(\n\nconst\n\nstd\n\n::\n\nstring\n\n&\n\nname\n\n,\n\nconst\n\nbool\n\n&\n\nuse_sim_time\n\n=\n\nfalse\n\n);\n\n```\n\nLanguage: unknown\n\nFile: Costmap2DROS\n\n```\n\nexplicit\n\nCostmap2DROS\n\n(\n\nconst\n\nstd\n\n::\n\nstring\n\n&\n\nname\n\n,\n\nconst\n\nstd\n\n::\n\nstring\n\n&\n\nparent_namespace\n\n=\n\n\"/\"\n\n,\n\nconst\n\nbool\n\n&\n\nuse_sim_time\n\n=\n\nfalse\n\n);\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a758-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Simple Commander API\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Simple Commander API\uf0c1\n\nURL: https://docs.nav2.org/commander_api/index.html\n\nSection: commander_api/index.html\n\n--------------------------------------------------------------------------------\n\n## Overview\uf0c1\n\nThe goal of the Nav2 Simple (Python3) Commander is to provide a \u201cnavigation as a library\u201d capability to Python3 users. We provide an API that handles all the ROS 2 and Action Server tasks for you such that you can focus on building an application leveraging the capabilities of Nav2 (after you\u2019ve configured it to your liking with your plugins of choice).We also provide you with demos and examples of API usageto build common basic capabilities in autonomous mobile robotics in thenav2_simple_commanderpackage."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a776-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Simple Commander API\uf0c1.txt", "start_index": 727, "chroma:document": "A simple demonstration is shown below. Note:goToPose(),goThroughPoses(),followWaypoints()and similar arenon-blockingsuch that you can receive and process feedback in a single-threaded application. As such while waiting for a task to be completed, thewhilenotnav.isTaskComplete()design is necessary to poll for changes in the navigation completion, and if not complete some tasks of interest to your application (like processing feedback, doing something with the data the robot is collecting, or checking for faults).\n\nYou may use this simple commander preempt commands of the same type (e.g. you can preempt agoToPose()with anothergoToPose()) but you must explicitly cancel a current command and issue a new one if switching betweengoToPose(),goThroughPoses(), orfollowWaypoints().\n\n## Commander API\uf0c1\n\nThe methods provided by the basic navigator are shown below, with inputs and expected returns."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a78a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Simple Commander API\uf0c1.txt", "start_index": 1626, "chroma:document": "If a server fails, it may throw an exception or return aNoneobject, so please be sure to properly wrap your navigation calls in try/catch and check returns forNonetype.\n\nNew as of September 2023: the simple navigator constructor will accept anamespacefield to support multi-robot applications or namespaced Nav2 launches.\n\n## Costmap API\uf0c1\n\nThis is a Python3 API for costmap 2d messages from the stack. It provides the basic conversion, get/set, and handling semantics found in the costmap 2d C++ API.\n\n## Footprint Collision Checker API\uf0c1\n\nThis is a Python3 API for a Footprint Collision Checker.\n\nIt provides the needed methods to manipulate the coordinates\n\nand calculate the cost of a Footprint in a given map.\n\n## Examples and Demos\uf0c1\n\nAll of these can be found in thepackage.\n\nThenav2_simple_commanderhas a few examples to highlight the API functions available to you as a user:\n\nThenav2_simple_commanderhas a few demonstrations to highlight a couple of simple autonomy applications you can build using the API:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a7a8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Simple Commander API\uf0c1.txt", "start_index": 2642, "chroma:document": "Code Examples:\n\nLanguage: unknown\n\nFile: followWaypoints()\n\n```\n\nfrom\n\nnav2_simple_commander.robot_navigator\n\nimport\n\nBasicNavigator\n\nimport\n\nrclpy\n\nrclpy\n\n.\n\ninit\n\n()\n\nnav\n\n=\n\nBasicNavigator\n\n()\n\n# ...\n\nnav\n\n.\n\nsetInitialPose\n\n(\n\ninit_pose\n\n)\n\nnav\n\n.\n\nwaitUntilNav2Active\n\n()\n\n# if autostarted, else use lifecycleStartup()\n\n# ...\n\npath\n\n=\n\nnav\n\n.\n\ngetPath\n\n(\n\ninit_pose\n\n,\n\ngoal_pose\n\n)\n\nsmoothed_path\n\n=\n\nnav\n\n.\n\nsmoothPath\n\n(\n\npath\n\n)\n\n# ...\n\nnav\n\n.\n\ngoToPose\n\n(\n\ngoal_pose\n\n)\n\nwhile\n\nnot\n\nnav\n\n.\n\nisTaskComplete\n\n():\n\nfeedback\n\n=\n\nnav\n\n.\n\ngetFeedback\n\n()\n\nif\n\nfeedback\n\n.\n\nnavigation_duration\n\n>\n\n600\n\n:\n\nnav\n\n.\n\ncancelTask\n\n()\n\n# ...\n\nresult\n\n=\n\nnav\n\n.\n\ngetResult\n\n()\n\nif\n\nresult\n\n==\n\nTaskResult\n\n.\n\nSUCCEEDED\n\n:\n\nprint\n\n(\n\n'Goal succeeded!'\n\n)\n\nelif\n\nresult\n\n==\n\nTaskResult\n\n.\n\nCANCELED\n\n:\n\nprint\n\n(\n\n'Goal was canceled!'\n\n)\n\nelif\n\nresult\n\n==\n\nTaskResult\n\n.\n\nFAILED\n\n:\n\nprint\n\n(\n\n'Goal failed!'\n\n)\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a7bc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Planner Server\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Planner Server\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring\n\nplanner\n\nserver.html#default\n\nplugins\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1\n\n## Default Plugins\uf0c1 When theplanner_pluginsparameter is not overridden, the following default plugins are loaded:\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown File: plugin ``` planner_server : ros__parameters : planner_plugins : [ \"GridBased\" ] GridBased : plugin : \"nav2_navfn_planner::NavfnPlanner\" # In Iron and older versions, \"/\" was used instead of \"::\" ```\n\nLanguage: unknown File: planner_plugins ``` planner_server : ros__parameters : expected_planner_frequency : 20.0 planner_plugins : [ 'GridBased' ] GridBased : plugin : 'nav2_navfn_planner::NavfnPlanner' # In Iron and older versions, \"/\" was used instead of \"::\" ```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a7d0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Profiling in ROS 2 _ Nav2\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Profiling in ROS 2 / Nav2\uf0c1 URL: https://docs.nav2.org/tutorials/docs/get_profile.html#overview Section: getting_started/index.html --------------------------------------------------------------------------------\n\n## Overview\uf0c1 This document explains one method for profiling applications in ROS 2 / Nav2. The aim of profiling is to generate files that can be analyzed to see where compute time and resources are spent during the execution of a program. This can be useful to determine where the bottlenecks in your program exist and where things might be able to be improved. The following steps show ROS 2 users how to modify the Nav2 stack to get profiling information about a particular server / algorithm when they encounter a situation they\u2019d like to understand better. This tutorial applies to both simulated and physical robots."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a7e4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Profiling in ROS 2 _ Nav2\uf0c1.txt", "start_index": 843, "chroma:document": "## Preliminaries\uf0c1 This tutorial makes use of two tools, callgrind from theValgrindset of tools andkcachegrind. Valgrind is used to get the profiling information about the program and kcachegrind is the visualization engine used to interpret this information to do useful work. Thus, we must install them. More information can be found in theValgrind manualincluding additional valgrind arguments that can be used to specify more information. Generally speaking, to use valgrind we need to compile with debugging information. This can be done by passing-gas a compiling option or compileCMAKE_BUILD_TYPEasDebugorRelWithDebInfo. Then, we run our program using valgrind to capture the run-time statistics for later analysis. These are stored incallgrind.out.XXXfiles, where the suffix is the PID of the process. kcachegrind is used to visualize and analyze the results of the program execution."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a802-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Profiling in ROS 2 _ Nav2\uf0c1.txt", "start_index": 1736, "chroma:document": "## Profile from a Node\uf0c1 As in our generic example, for a given node, we need to compile with debug flags to capture the information for profiling with Valgrind. This can be done easily from the commandline. Note that we use--packages-selectto only compile with this flag for the packages we want to profile nodes within. Optionally, you may add the following line to theCMakeLists.txtof the package you\u2019re looking to profile. This may be preferable when you have a workspace with many packages but would like to only compile a subset with debug information using a singlecolconbuildinvocation. It is important that this should be added to both the host server and plugin packages(s) if you would like the results of a plugin\u2019s run-time profile. After either compiling method, this node should be run in its own terminal to isolate it from the rest of your system. Thus, this should not be composed in the same process as other nodes. To run a ROS 2 node with valgrind, this can be done from the commandline via: An example"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a816-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Profiling in ROS 2 _ Nav2\uf0c1.txt", "start_index": 2695, "chroma:document": "valgrind, this can be done from the commandline via: An example of this might be used for profiling the controller server with a particular controller plugin loaded. Bothnav2_controllerand the plugin package of interest are compiled with debug flags. In the example below, we are running a ROS 2 node with remapped topics and a path to its parameter file: Once sufficient data has been collected, cleanly exit the process with Control+C."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a82a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Profiling in ROS 2 _ Nav2\uf0c1.txt", "start_index": 3134, "chroma:document": "## Profile from a Launch File\uf0c1 Just as in the Node example, we must also compile with debug flags when profiling a node from launch. We can complete the same valgrind call as from the commandline as within a launch file using launch prefixes. As our example before, this is how we\u2019d launch thecontroller_servernode from inside a launch file. Note that just like before, we should isolate this process from others. So this should not be run with any other nodes in this launch file nor use node composition when profiling a particular node. Once sufficient data has been collected, cleanly exit the process with Control+C."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a83e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Profiling in ROS 2 _ Nav2\uf0c1.txt", "start_index": 3757, "chroma:document": "## From Nav2 Bringup\uf0c1 Because Nav2 bringup has more than one node per launch file (and in the caseuse_composition=true, more than one per process), it is necessary to separate out a particular node that you\u2019re interested in profiling from the rest of the system. As previously described, once they\u2019re isolated in either a launch file or as a node to be launched on the commandline, they can easily be run to collect the callgrind information. The steps within Nav2 are as follows: It is important that the profiler node is launched before Nav2 so that it can take the signals from the lifecycle manager to transition up."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a852-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Profiling in ROS 2 _ Nav2\uf0c1.txt", "start_index": 4379, "chroma:document": "## Interpreting Results\uf0c1 Once you have yourcallgrindresults, regardless of if you did it through a node, launch file, Nav2, or elsewhere, now we can analyze the results from the profiler to identify bottlenecks or potential areas of improvement. Usingkcachegrind: This should open a window looking like below. The left side shows all of the calls and their relative percentages of compute time they and their children functions utilized. If you select the top level entry on the left sidebar, then select \u201cCall Graph\u201d at the bottom of the right workspace, it should show you a call graph of where the compute time was spent as a graph of method calls. This can be exceptionally helpful to find the methods where the most time is spent.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: kcachegrind\n\n```\n\nsudo\n\napt\n\ninstall\n\nvalgrind\n\nkcachegrind\n\n```\n\nLanguage: unknown\n\nFile: callgrind.out.XXX\n\n```\n\n# CMakeLists.txt\n\nadd_compile_options\n\n(\n\ng\n\n)\n\n```\n\nLanguage: unknown\n\nFile: callgrind.out.XXX\n\n```\n\ncmake\n\nDCMAKE_BUILD_TYPE\n\n="}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a866-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Profiling in ROS 2 _ Nav2\uf0c1.txt", "start_index": 5344, "chroma:document": "File: callgrind.out.XXX\n\n```\n\ncmake\n\nDCMAKE_BUILD_TYPE\n\n=\n\nRelWithDebInfo\n\n```\n\nLanguage: unknown\n\nFile: callgrind.out.XXX\n\n```\n\nvalgrind\n\ntool\n\n=\n\ncallgrind\n\n[\n\nyour\n\nprogram\n\n]\n\n[\n\nprogram\n\noptions\n\n]\n\nkcachegrind\n\ncallgrind.out.XXX\n\n```\n\nLanguage: unknown\n\nFile: -\n\npackages\n\nselect\n\n```\n\ncolcon\n\nbuild\n\npackages\n\nselect\n\n<packages\n\nof\n\ninterest>\n\ncmake\n\nargs\n\nDCMAKE_BUILD_TYPE\n\n=\n\nRelWithDebInfo\n\n```\n\nLanguage: unknown\n\nFile: colconbuild\n\n```\n\nadd_compile_options\n\n(\n\npg\n\n)\n\n```\n\nLanguage: unknown\n\nFile: colconbuild\n\n```\n\nros2\n\nrun\n\nprefix\n\n'valgrind -\n\ntool=callgrind'\n\n<pkg>\n\n<node>\n\nall\n\nother\n\nlaunch\n\narguments\n\n```\n\nLanguage: unknown\n\nFile: nav2_controller\n\n```\n\nros2\n\nrun\n\nprefix\n\n'valgrind -\n\ntool=callgrind'\n\nnav2_controller\n\ncontroller_server\n\nros\n\nargs\n\nr\n\n__node:\n\n=\n\ncontroller_server\n\nr\n\ncmd_vel:\n\n=\n\ncmd_vel_nav\n\nparams\n\nfile\n\n/path/to/nav2_bringup/params/nav2_params.yaml\n\n```\n\nLanguage: unknown\n\nFile: controller_server\n\n```\n\nstart_controller_server_node\n\n=\n\nNode\n\n(\n\nparameters\n\n=\n\n["}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a884-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Profiling in ROS 2 _ Nav2\uf0c1.txt", "start_index": 6294, "chroma:document": "start_controller_server_node\n\n=\n\nNode\n\n(\n\nparameters\n\n=\n\n[\n\nget_package_share_directory\n\n(\n\n\"nav2_bringup\"\n\n)\n\n+\n\n'/params/nav2_params.yaml'\n\n,\n\n{\n\n'use_sim_time'\n\n:\n\nuse_sim_time\n\n}\n\n],\n\npackage\n\n=\n\n'nav2_controller'\n\n,\n\nexecutable\n\n=\n\n'controller_server'\n\n,\n\nname\n\n=\n\n'controller_server'\n\n,\n\nprefix\n\n=\n\n[\n\n'xterm\n\ne valgrind -\n\ntool=callgrind'\n\n],\n\noutput\n\n=\n\n'screen'\n\n)\n\n```\n\nLanguage: unknown\n\nFile: kcachegrind\n\n```\n\nkcachegrind\n\ncallgrind.out.XXX\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a898-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Controller Server\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Controller Server\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring-controller-server.html#example\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Parameters\uf0c1\n\n## Provided Plugins\uf0c1\n\n## Default Plugins\uf0c1\n\nWhen theprogress_checker_plugins,goal_checker_pluginorcontroller_pluginsparameters are not overridden, the following default plugins are loaded:\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: plugin\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:\n\ncontroller_plugins\n\n:\n\n[\n\n\"FollowPath\"\n\n]\n\nFollowPath\n\n:\n\nplugin\n\n:\n\n\"dwb_core::DWBLocalPlanner\"\n\n```\n\nLanguage: unknown\n\nFile: plugin\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:\n\nprogress_checker_plugins\n\n:\n\n[\n\n\"progress_checker\"\n\n]\n\n# progress_checker_plugin: \"progress_checker\" For Humble and older\n\nprogress_checker\n\n:\n\nplugin\n\n:\n\n\"nav2_controller::SimpleProgressChecker\"\n\n```\n\nLanguage: unknown\n\nFile: plugin\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a8ac-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Controller Server\uf0c1.txt", "start_index": 958, "chroma:document": "File: plugin\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:\n\ngoal_checker_plugins\n\n:\n\n[\n\n\"goal_checker\"\n\n]\n\ngoal_checker\n\n:\n\nplugin\n\n:\n\n\"nav2_controller::SimpleGoalChecker\"\n\n```\n\nLanguage: unknown\n\nFile: controller_plugins\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:\n\nuse_sim_time\n\n:\n\nTrue\n\ncontroller_frequency\n\n:\n\n20.0\n\nmin_x_velocity_threshold\n\n:\n\n0.001\n\nmin_y_velocity_threshold\n\n:\n\n0.5\n\nmin_theta_velocity_threshold\n\n:\n\n0.001\n\nfailure_tolerance\n\n:\n\n0.3\n\nodom_topic\n\n:\n\n\"odom\"\n\nprogress_checker_plugins\n\n:\n\n[\n\n\"progress_checker\"\n\n]\n\n# progress_checker_plugin: \"progress_checker\" For Humble and older\n\ngoal_checker_plugins\n\n:\n\n[\n\n\"goal_checker\"\n\n]\n\n# goal_checker_plugin: \"goal_checker\" For Galactic and older\n\ncontroller_plugins\n\n:\n\n[\n\n\"FollowPath\"\n\n]\n\nprogress_checker\n\n:\n\nplugin\n\n:\n\n\"nav2_controller::SimpleProgressChecker\"\n\nrequired_movement_radius\n\n:\n\n0.5\n\nmovement_time_allowance\n\n:\n\n10.0\n\ngoal_checker\n\n:\n\nplugin\n\n:\n\n\"nav2_controller::SimpleGoalChecker\"\n\nxy_goal_tolerance\n\n:\n\n0.25\n\nyaw_goal_tolerance\n\n:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a8c0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Controller Server\uf0c1.txt", "start_index": 1926, "chroma:document": "xy_goal_tolerance\n\n:\n\n0.25\n\nyaw_goal_tolerance\n\n:\n\n0.25\n\nstateful\n\n:\n\nTrue\n\nFollowPath\n\n:\n\nplugin\n\n:\n\n\"dwb_core::DWBLocalPlanner\"\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a8d4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/PathLongerOnApproach\uf0c1.txt", "start_index": 0, "chroma:document": "Title: PathLongerOnApproach\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/decorators/PathLongerOnApproach.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n<PathLongerOnApproach\n\npath=\n\n\"{path}\"\n\nprox_len=\n\n\"3.0\"\n\nlength_factor=\n\n\"2.0\"\n\n>\n\n<!-\n\nAdd tree components here--\n\n>\n\n</PathLongerOnApproach>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a8e8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/DWB Controller\uf0c1.txt", "start_index": 0, "chroma:document": "Title: DWB Controller\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring-dwb-controller.html#example\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Controller\uf0c1\n\n## Plugins\uf0c1\n\nThe plugins listed below are inside thedwb_pluginsnamespace.\n\n## Trajectory Critics\uf0c1\n\nThe trajectory critics listed below are inside thedwb_criticsnamespace.\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: dwb_critics\n\n```\n\ncontroller_server\n\n:\n\nros__parameters\n\n:\n\n# controller server parameters (see Controller Server for more info)\n\nuse_sim_time\n\n:\n\nTrue\n\ncontroller_frequency\n\n:\n\n20.0\n\nmin_x_velocity_threshold\n\n:\n\n0.001\n\nmin_y_velocity_threshold\n\n:\n\n0.5\n\nmin_theta_velocity_threshold\n\n:\n\n0.001\n\nprogress_checker_plugins\n\n:\n\n[\n\n\"progress_checker\"\n\n]\n\n# progress_checker_plugin: \"progress_checker\" For Humble and older\n\ngoal_checker_plugins\n\n:\n\n[\n\n\"goal_checker\"\n\n]\n\ncontroller_plugins\n\n:\n\n[\n\n\"FollowPath\"\n\n]\n\nprogress_checker\n\n:\n\nplugin\n\n:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a8fc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/DWB Controller\uf0c1.txt", "start_index": 960, "chroma:document": ":\n\n[\n\n\"FollowPath\"\n\n]\n\nprogress_checker\n\n:\n\nplugin\n\n:\n\n\"nav2_controller::SimpleProgressChecker\"\n\nrequired_movement_radius\n\n:\n\n0.5\n\nmovement_time_allowance\n\n:\n\n10.0\n\ngoal_checker\n\n:\n\nplugin\n\n:\n\n\"nav2_controller::SimpleGoalChecker\"\n\nxy_goal_tolerance\n\n:\n\n0.25\n\nyaw_goal_tolerance\n\n:\n\n0.25\n\nstateful\n\n:\n\nTrue\n\n# DWB controller parameters\n\nFollowPath\n\n:\n\nplugin\n\n:\n\n\"dwb_core::DWBLocalPlanner\"\n\ndebug_trajectory_details\n\n:\n\nTrue\n\nmin_vel_x\n\n:\n\n0.0\n\nmin_vel_y\n\n:\n\n0.0\n\nmax_vel_x\n\n:\n\n0.26\n\nmax_vel_y\n\n:\n\n0.0\n\nmax_vel_theta\n\n:\n\n1.0\n\nmin_speed_xy\n\n:\n\n0.0\n\nmax_speed_xy\n\n:\n\n0.26\n\nmin_speed_theta\n\n:\n\n0.0\n\nacc_lim_x\n\n:\n\n2.5\n\nacc_lim_y\n\n:\n\n0.0\n\nacc_lim_theta\n\n:\n\n3.2\n\ndecel_lim_x\n\n:\n\n2.5\n\ndecel_lim_y\n\n:\n\n0.0\n\ndecel_lim_theta\n\n:\n\n3.2\n\nvx_samples\n\n:\n\n20\n\nvy_samples\n\n:\n\n5\n\nvtheta_samples\n\n:\n\n20\n\nsim_time\n\n:\n\n1.7\n\nlinear_granularity\n\n:\n\n0.05\n\nangular_granularity\n\n:\n\n0.025\n\ntransform_tolerance\n\n:\n\n0.2\n\nxy_goal_tolerance\n\n:\n\n0.25\n\ntrans_stopped_velocity\n\n:\n\n0.25\n\nshort_circuit_trajectory_evaluation\n\n:\n\nTrue\n\nlimit_vel_cmd_in_traj\n\n:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a91a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/DWB Controller\uf0c1.txt", "start_index": 1949, "chroma:document": ":\n\nTrue\n\nlimit_vel_cmd_in_traj\n\n:\n\nFalse\n\nstateful\n\n:\n\nTrue\n\ncritics\n\n:\n\n[\n\n\"RotateToGoal\"\n\n,\n\n\"Oscillation\"\n\n,\n\n\"BaseObstacle\"\n\n,\n\n\"GoalAlign\"\n\n,\n\n\"PathAlign\"\n\n,\n\n\"PathDist\"\n\n,\n\n\"GoalDist\"\n\n]\n\nBaseObstacle.scale\n\n:\n\n0.02\n\nPathAlign.scale\n\n:\n\n32.0\n\nGoalAlign.scale\n\n:\n\n24.0\n\nPathAlign.forward_point_distance\n\n:\n\n0.1\n\nGoalAlign.forward_point_distance\n\n:\n\n0.1\n\nPathDist.scale\n\n:\n\n32.0\n\nGoalDist.scale\n\n:\n\n24.0\n\nRotateToGoal.scale\n\n:\n\n32.0\n\nRotateToGoal.slowing_factor\n\n:\n\n5.0\n\nRotateToGoal.lookahead_time\n\n:\n\n1.0\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a92e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Setting Up Sensors\uf0c1\n\nURL: https://docs.nav2.org/setup_guides/sensors/setup_sensors.html#sensor-introduction\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Sensor Introduction\uf0c1\n\nMobile robots are equipped with a multitude of sensors that allow them to see and perceive their environment. These sensors obtain information which can be used to build and maintain the map of the environment, to localize the robot on the map, and to see the obstacles in the environment. These tasks are essential to be able to safely and efficiently navigate a robot through a dynamic environment."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a942-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 662, "chroma:document": "Examples of commonly used sensors are lidar, radar, RGB camera, depth camera, IMU, and GPS. To standardize the message formats of these sensors and allow for easier interoperation between vendors, ROS provides thesensor_msgspackage that defines the common sensor interfaces. This also allows users to use any sensor vendor as long as it follows the standard format insensor_msgs. In the next subsection, we introduce some of commonly used messages in navigation, namely thesensor_msgs/LaserScan,sensor_msgs/PointCloud2,sensor_msgs/Range, andsensor_msgs/Image."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a960-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 1223, "chroma:document": "Aside from thesensor_msgspackage, there are also theradar_msgsandvision_msgsstandard interfaces you should be aware of.  Theradar_msgsdefines the messages for radar-specific sensors while thevision_msgspackage defines the messages used in computer vision such as object detection, segmentation, and other machine learning models. Messages supported by this package arevision_msgs/Classification2D,vision_msgs/Classification3D,vision_msgs/Detection2D, andvision_msgs/Detection3D, to name a few."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a974-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 1718, "chroma:document": "Your physical robot\u2019s sensors probably have ROS drivers written for them (e.g. a ROS node that connects to the sensors, populates data into messages, and publishes them for your robot to use) that follow the standard interface in thesensor_msgspackage. Thesensor_msgspackage makes it easy for you to use many different sensors from different manufacturers. General software packages like Nav2 can then read these standardized messages and perform tasks independent of the sensor hardware. On simulated robots such assam_bot, Gazebo has sensor plugins which also publish their information following thesensor_msgspackage.\n\n## Common Sensor Messages\uf0c1\n\nIn this subsection, we discuss some of the common types ofsensor_msgsyou might encounter when setting up Nav2. We will provide a brief description for each sensor, an image of it being simulated in Gazebo and the corresponding visualization of the sensor readings in RViz.\n\n## sensor_msgs/LaserScan\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a988-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 2642, "chroma:document": "## sensor_msgs/LaserScan\uf0c1\n\nThis message represents a single scan from a planar laser range-finder. This message is used inslam_toolboxandnav2_amclfor localization and mapping, or innav2_costmap_2dfor perception.\n\n## sensor_msgs/PointCloud2\uf0c1\n\nThis message holds a collection of 3D points, plus optional additional information about each point. This can be from a 3D lidar, a 2D lidar, a depth camera or more.\n\n## sensor_msgs/Range\uf0c1\n\nThis is a single range reading from an active ranger that emits energy and reports one range reading that is valid along an arc at the distance measured. A sonar, IR sensor, or 1D range finder are examples of sensors that use this message.\n\n## sensor_msgs/Image\uf0c1\n\nThis represents the sensor readings from RGB or depth camera, corresponding to RGB or range values.\n\n## Simulating Sensors using Gazebo\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a99c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 3439, "chroma:document": "## Simulating Sensors using Gazebo\uf0c1\n\nTo give you a better grasp of how to set up sensors on a simulated robot, we will build up on our previous tutorials and attach sensors to our simulated robotsam_bot. Similar to the previous tutorial where we used Gazebo plugins to add odometry sensors tosam_bot, we will be using the Gazebo plugins to simulate a lidar sensor and a depth camera onsam_bot. If you are working with a real robot, most of these steps are still required for setting up your URDF frames and it will not hurt to also add in the gazebo plugins for later use.\n\nTo be able to follow the rest of this section, make sure that you have properly installed Gazebo. You can follow the instructions at theSetup and Prerequisitesof the previous tutorial to setup Gazebo.\n\n## Adding Gazebo Plugins to a URDF\uf0c1\n\nLet us first add a lidar sensor tosam_bot. Open the URDF file,src/description/sam_bot_description.urdfand paste the following lines before the</robot>tag."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a9b0-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 4408, "chroma:document": "In the code snippet above, we create alidar_linkwhich will be referenced by thegazebo_ros_ray_sensorplugin as the location to attach our sensor. We also set values to the simulated lidar\u2019s scan and range properties. Lastly, we set the/scanas the topic to which it will publish thesensor_msgs/LaserScanmessages.\n\nNext, let us add a depth camera tosam_bot. Paste the following lines after the</gazebo>tag of the lidar sensor.\n\nSimilar to the lidar sensor, we createcamera_linkwhich will be referenced by thegazebo_ros_cameraplugin as the sensor attachment location. We also create acamera_depth_framethat is attached to thecamera_linkand will be set as the<frame_name>of the depth camera plugin.  We also configure the plugin such that it will publishsensor_msgs/Imageandsensor_msgs/PointCloud2messages to/depth_camera/image_rawand/depth_camera/pointstopics respectively. Lastly, we also set up other basic configuration properties for our depth camera.\n\n## Launch and Build Files\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a9c4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 5361, "chroma:document": "## Launch and Build Files\uf0c1\n\nTo verify that the sensors are set up properly and that they can see objects in our environment, let us launchsam_botin a Gazebo world with objects.\n\nLet us create a Gazebo world with a single cube and a single sphere that are within the range ofsam_bot\u2019s sensors so we can verify if it can see the objects correctly.\n\nTo create the world, create a directory namedworldat the root of your project and create a file namedmy_world.sdfinside theworldfolder . Then copy the contents ofworld/my_world.sdfand paste them insidemy_world.sdf.\n\nNow, let us edit our launch file,launch/display.launch.py, to launch Gazebo with the world we just created. First, add the path ofmy_world.sdfby adding the following lines inside thegenerate_launch_description():\n\nLastly, add the world path in thelaunch.actions.ExecuteProcess(cmd=['gazebo',...line, as shown below."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a9e2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 6241, "chroma:document": "We also have to add theworlddirectory to ourCMakeLists.txtfile. OpenCmakeLists.txtand append theworlddirectory inside the install(DIRECTORY\u2026), as shown in the snippet below.\n\n## Build, Run and Verification\uf0c1\n\nWe can now build and run our project. Navigate to the root of the project and execute the following lines:\n\nRViz and the Gazebo will then be launched withsam_botpresent in both. In the Gazebo window, the world that we created should be launched andsam_botshould be spawned in that world. You should now be able to observesam_botwith the 360 lidar sensor and the depth camera, as shown in the image below.\n\nIn the RViz window, we can verify if we have properly modeled our sensors and if the transforms of our newly added sensors are correct:\n\nLastly, we can also visualize the sensor readings in RViz.  To visualize thesensor_msgs/LaserScanmessage published on/scantopic, click the add button at the bottom part of the RViz window. Then go to theBytopictab and select theLaserScanoption under/scan, as shown below."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13a9f6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 7265, "chroma:document": "Next, set theReliabilityPolicyin RViz toBestEffortand set thesizeto 0.1 to see the points clearer. You should see the visualizedLaserScandetection as shown below. This corresponds to the detected cube and sphere that we added to the Gazebo world.\n\nTo visualizesensor_msgs/Imageandsensor_msgs/PointCloud2, do the same for topics/depth_camera/image_rawand/depth_camera/pointsrespectively:\n\nAfter adding the/depth_camera/image_rawtopic in RViz, set theReliabilityPolicyin RViz toBestEffort. Then you should see the cube in the image window at the lower-left side of the RViz window, as shown below.\n\nYou should also see thesensor_msgs/PointCloud2, as shown below.\n\n## Mapping and Localization\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aa0a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 7927, "chroma:document": "## Mapping and Localization\uf0c1\n\nNow that we have a robot with its sensors set up, we can use the obtained sensor information to build a map of the environment and to localize the robot on the map. Theslam_toolboxpackage is a set of tools and capabilities for 2D Simultaneous Localization and Mapping (SLAM) in potentially massive maps with ROS2. It is also one of the officially supported SLAM libraries in Nav2, and we recommend to use this package in situations you need to use SLAM on your robot setup. Aside from theslam_toolbox, localization can also be implemented through thenav2_amclpackage. This package implements Adaptive Monte Carlo Localization (AMCL) which estimates the position and orientation of the robot in a map. Other techniques may also be available, please check Nav2 documentation for more information."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aa1e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 8753, "chroma:document": "Both theslam_toolboxandnav2_amcluse information from the laser scan sensor to be able to perceive the robot\u2019s environment. Hence, to verify that they can access the laser scan sensor readings, we must make sure that they are subscribed to the correct topic that publishes thesensor_msgs/LaserScanmessage. This can be configured by setting theirscan_topicparameters to the topic that publishes that message. It is a convention to publish thesensor_msgs/LaserScanmessages to/scantopic. Thus, by default, thescan_topicparameter is set to/scan. Recall that when we added the lidar sensor tosam_botin the previous section, we set the topic to which the lidar sensor will publish thesensor_msgs/LaserScanmessages as/scan.\n\nIn-depth discussions on the complete configuration parameters will not be a scope of our tutorials since they can be pretty complex. Instead, we recommend you to have a look at their official documentation in the links below."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aa32-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 9697, "chroma:document": "You can also refer to the(SLAM) Navigating While Mapping guidefor the tutorial on how to use Nav2 with SLAM. You can verify thatslam_toolboxandnav2_amclhave been correctly setup by visualizing the map and the robot\u2019s pose in RViz, similar to what was shown in the previous section.\n\n## Costmap 2D\uf0c1\n\nThe costmap 2D package makes use of the sensor information to provide a representation of the robot\u2019s environment in the form of an occupancy grid. The cells in the occupancy grid store cost values between 0-254 which denote a cost to travel through these zones. A cost of 0 means the cell is free while a cost of 254 means that the cell is lethally occupied. Values in between these extremes are used by navigation algorithms to steer your robot away from obstacles as a potential field. Costmaps in Nav2 are implemented through thenav2_costmap_2dpackage."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aa50-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 10554, "chroma:document": "The costmap implementation consists of multiple layers, each of which has a certain function that contributes to a cell\u2019s overall cost. The package consists of the following layers, but are plugin-based to allow customization and new layers to be used as well: static layer, inflation layer, range layer, obstacle layer, and voxel layer. The static layer represents the map section of the costmap, obtained from the messages published to the/maptopic like those produced by SLAM.  The obstacle layer includes the objects detected by sensors that publish either or both theLaserScanandPointCloud2messages. The voxel layer is similar to the obstacle layer such that it can use either or both theLaserScanandPointCloud2sensor information but handles 3D data instead. The range layer allows for the inclusion of information provided by sonar and infrared sensors. Lastly, the inflation layer represents the added cost values around lethal obstacles such that our robot avoids navigating into obstacles due to the robot\u2019s"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aa64-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 11509, "chroma:document": "our robot avoids navigating into obstacles due to the robot\u2019s geometry. In the next subsection of this tutorial, we will have some discussion about the basic configuration of the different layers innav2_costmap_2d."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aa78-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 11725, "chroma:document": "The layers are integrated into the costmap through a plugin interface and then inflated using a user-specifiedinflation radius, if the inflation layer is enabled. For a deeper discussion on costmap concepts, you can have a look at theROS1 costmap_2D documentation. Note that thenav2_costmap_2dpackage is mostly a straightforward ROS2 port of the ROS1 navigation stack version with minor changes required for ROS2 support and some new layer plugins.\n\n## Configuring nav2_costmap_2d\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aa8c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 12175, "chroma:document": "## Configuring nav2_costmap_2d\uf0c1\n\nIn this subsection, we will show an example configuration ofnav2_costmap_2dsuch that it uses the information provided by the lidar sensor ofsam_bot. We will show an example configuration that uses static layer, obstacle layer, voxel layer, and inflation layer. We set both the obstacle and voxel layer to use theLaserScanmessages published  to the/scantopic by the lidar sensor. We also set some of the basic parameters to define how the detected obstacles are reflected in the costmap. Note that this configuration is to be included in the configuration file of Nav2.\n\nIn the configuration above, notice that we set the parameters for two different costmaps:global_costmapandlocal_costmap. We set up two costmaps since theglobal_costmapis mainly used for long-term planning over the whole map whilelocal_costmapis for short-term planning and collision avoidance."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aaaa-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 13073, "chroma:document": "The layers that we use for our configuration are defined in thepluginsparameter, as shown in line 13 for theglobal_costmapand line 50 for thelocal_costmap. These values are set as a list of mapped layer names that also serve as namespaces for the layer parameters we set up starting at lines 14 and line 51. Note that each layer/namespace in this list must have apluginparameter (as indicated in lines 15, 18, 32, 52, and 68) defining the type of plugin to be loaded for that specific layer.\n\nFor the static layer (lines 14-16), we set themap_subscribe_transient_localparameter toTrue. This sets the QoS settings for the map topic. Another important parameter for the static layer is themap_topicwhich defines the map topic to subscribe to. This defaults to/maptopic when not defined."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aabe-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 13859, "chroma:document": "For the obstacle layer (lines 17-30), we define its sensor source under theobservation_sourcesparameter (line 20) asscanwhose parameters are set up in lines 22-30. We set itstopicparameter as the topic that publishes the defined sensor source and we set thedata_typeaccording to the sensor source it will use. In our configuration, the obstacle layer will use theLaserScanpublished by the lidar sensor to/scan.\n\nNote that the obstacle layer and voxel layer can use either or bothLaserScanandPointCloud2as theirdata_typebut it is set toLaserScanby default. The code snippet below shows an example of using both theLaserScanandPointCloud2as the sensor sources. This may be particularly useful when setting up your own physical robot."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aad2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 14592, "chroma:document": "For the other parameters of the obstacle layer, themax_obstacle_heightparameter sets the maximum height of the sensor reading to return to the occupancy grid. The minimum height of the sensor reading can also be set using themin_obstacle_heightparameter, which defaults to 0 since we did not set it in the configuration. Theclearingparameter is used to set whether the obstacle is to be removed from the costmap or not. The clearing operation is done by raytracing through the grid. The maximum and minimum range to raytrace clear objects from the costmap is set using theraytrace_max_rangeandraytrace_min_rangerespectively. Themarkingparameter is used to set whether the inserted obstacle is marked into the costmap or not. We also set the maximum and minimum range to mark obstacles in the costmap through theobstacle_max_rangeandobstacle_min_rangerespectively."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aae6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 15457, "chroma:document": "For the inflation layer (lines 31-34 and 67-70), we set the exponential decay factor across the inflation radius using thecost_scaling_factorparameter. The value of the radius to inflate around lethal obstacles is defined using theinflation_radius.\n\nFor the voxel layer (lines 51-66), we set thepublish_voxel_mapparameter toTrueto enable the publishing of the 3D voxel grid. The resolution of the voxels in height is defined using thez_resolutionparameter, while the number of voxels in each column is defined using thez_voxelsparameter. Themark_thresholdparameter sets the minimum number of voxels in a column to mark as occupied in the occupancy grid. We set theobservation_sourcesparameter of the voxel layer toscan, and we set the scan parameters (in lines 61-66) similar to the parameters that we have discussed for the obstacle layer. As defined in itstopicanddata_typeparameters, the voxel layer will use theLaserScanpublished on the/scantopic by the lidar scanner."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aafa-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 16431, "chroma:document": "Note that the we are not using a range layer for our configuration but it may be useful for your own robot setup. For the range layer, its basic parameters are thetopics,input_sensor_type, andclear_on_max_readingparameters. The range topics to subscribe to are defined in thetopicsparameter. Theinput_sensor_typeis set to eitherALL,VARIABLE, orFIXED. Theclear_on_max_readingis a boolean parameter that sets whether to clear the sensor readings on max range.  Have a look at the configuration guide in the link below in case you need to set it up.\n\n## Build, Run and Verification\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ab18-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 16979, "chroma:document": "## Build, Run and Verification\uf0c1\n\nWe will first launchdisplay.launch.pywhich launches the robot state publisher that provides thebase_link=>sensorstransformations in our URDF. It also launches Gazebo that acts as our physics simulator and also provides theodom=>base_linkfrom the differential drive plugin, which we added tosam_botin the previous guide,Simulating an Odometry System Using Gazebo. It also launches RViz which we can use to visualize the robot and sensor information.\n\nThen we will launchslam_toolboxto publish to/maptopic and provide themap=>odomtransform. Recall that themap=>odomtransform is one of the primary requirements of the Nav2 system. The messages published on the/maptopic will then be used by the static layer of theglobal_costmap."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ab2c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 17740, "chroma:document": "After we have properly setup our robot description, odometry sensors, and necessary transforms, we will finally launch the Nav2 system itself. For now, we will only be exploring the costmap generation system of Nav2. After launching Nav2, we will visualize the costmaps in RViz to confirm our output.\n\n## Launching Description Nodes, RViz and Gazebo\uf0c1\n\nLet us now launch our Robot Description Nodes, RViz and Gazebo through the launch filedisplay.launch.py. Open a new terminal and execute the lines below.\n\nRViz and the Gazebo should now be launched withsam_botpresent in both. Recall that thebase_link=>sensorstransform is now being published byrobot_state_publisherand theodom=>base_linktransform by our Gazebo plugins. Both transforms should now be displayed show without errors in RViz.\n\n## Launching slam_toolbox\uf0c1\n\nTo be able to launchslam_toolbox, make sure that you have installed theslam_toolboxpackage by executing the following command:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ab40-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 18688, "chroma:document": "We will launch theasync_slam_toolbox_nodeofslam_toolboxusing the package\u2019s built-in launch files. Open a new terminal and then execute the following lines:\n\nTheslam_toolboxshould now be publishing to the/maptopic and providing themap=>odomtransform.\n\nWe can verify in RViz that the/maptopic is being published. In the RViz window, click the add button at the bottom-left part then go toBytopictab then select theMapunder the/maptopic. You should be able to visualize the message received in the/mapas shown in the image below.\n\nWe can also check that the transforms are correct by executing the following lines in a new terminal:\n\nNote: For Galactic and newer, it should beview_framesand notview_frames.pyThe line above will create aframes.pdffile that shows the current transform tree. Your transform tree should be similar to the one shown below:\n\n## Launching Nav2\uf0c1\n\nFirst, Make sure you have installed the Nav2 packages by executing the following:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ab54-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 19641, "chroma:document": "We will now launch Nav2 using thenav2_bringup\u2019s built-in launch file,navigation_launch.py. Open a new terminal and execute the following:\n\nNote that the parameters of thenav2_costmap_2dthat we discussed in the previous subsection are included in the default parameters ofnavigation_launch.py. Aside from thenav2_costmap_2dparameters, it also contains parameters for the other nodes that are included in Nav2 implementation.\n\nAfter we have properly set up and launched Nav2, the/global_costmapand/local_costmaptopics should now be active.\n\n## Visualizing Costmaps in RViz\uf0c1\n\nTheglobal_costmap,local_costmapand the voxel representation of the detected obstacles can be visualized in RViz."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ab68-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 20328, "chroma:document": "To visualize theglobal_costmapin RViz, click the add button at the bottom-left part of the RViz window. Go toBytopictab then select theMapunder the/global_costmap/costmaptopic. Theglobal_costmapshould show in the RViz window, as shown below. Theglobal_costmapshows areas which should be avoided (black) by our robot when it navigates our simulated world in Gazebo.\n\nTo visualize thelocal_costmapin RViz, select theMapunder the/local_costmap/costmaptopic. Set thecolorschemein RViz tocostmapto make it appear similar to the image below.\n\nTo visualize the voxel representation of the detected object, open a new terminal and execute the following lines:\n\nThe line above sets the topic where the the markers will be published to/my_marker. To see the markers in RViz, selectMarkerunder the/my_markertopic, as shown below.\n\nThen set thefixedframein RViz toodomand you should now see the voxels in RViz, which represent the cube and the sphere that we have in the Gazebo world:\n\n## Conclusion\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ab7c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 21302, "chroma:document": "## Conclusion\uf0c1\n\nIn this section of our robot setup guide, we have discussed the importance of sensor information for different tasks associated with Nav2. More specifically, tasks such as mapping (SLAM), localization (AMCL), and perception (costmap) tasks.\n\nWe also had a discussion on the common types of sensor messages in Nav2 which standardize the message formats for different sensor vendors. We also discussed how to add sensors to a simulated robot using Gazebo and how to verify that the sensors are working correctly through RViz.\n\nLastly, we set up a basic configuration for thenav2_costmap_2dpackage using different layers to produce a global and local costmap. We then verify our work by visualizing these costmaps in RViz.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: </robot>\n\n```\n\n251\n\n<link\n\nname=\n\n\"lidar_link\"\n\n>\n\n252\n\n<inertial>\n\n253\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n254\n\n<mass\n\nvalue=\n\n\"0.125\"\n\n/>\n\n255\n\n<inertia\n\nixx=\n\n\"0.001\"\n\nixy=\n\n\"0\"\n\nixz=\n\n\"0\"\n\niyy=\n\n\"0.001\"\n\niyz=\n\n\"0\"\n\nizz=\n\n\"0.001\"\n\n/>"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ab90-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 22265, "chroma:document": "\"0\"\n\nixz=\n\n\"0\"\n\niyy=\n\n\"0.001\"\n\niyz=\n\n\"0\"\n\nizz=\n\n\"0.001\"\n\n/>\n\n256\n\n</inertial>\n\n257\n\n258\n\n<collision>\n\n259\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n260\n\n<geometry>\n\n261\n\n<cylinder\n\nradius=\n\n\"0.0508\"\n\nlength=\n\n\"0.055\"\n\n/>\n\n262\n\n</geometry>\n\n263\n\n</collision>\n\n264\n\n265\n\n<visual>\n\n266\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n267\n\n<geometry>\n\n268\n\n<cylinder\n\nradius=\n\n\"0.0508\"\n\nlength=\n\n\"0.055\"\n\n/>\n\n269\n\n</geometry>\n\n270\n\n</visual>\n\n271\n\n</link>\n\n272\n\n273\n\n<joint\n\nname=\n\n\"lidar_joint\"\n\ntype=\n\n\"fixed\"\n\n>\n\n274\n\n<parent\n\nlink=\n\n\"base_link\"\n\n/>\n\n275\n\n<child\n\nlink=\n\n\"lidar_link\"\n\n/>\n\n276\n\n<origin\n\nxyz=\n\n\"0 0 0.12\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n277\n\n</joint>\n\n278\n\n279\n\n<gazebo\n\nreference=\n\n\"lidar_link\"\n\n>\n\n280\n\n<sensor\n\nname=\n\n\"lidar\"\n\ntype=\n\n\"ray\"\n\n>\n\n281\n\n<always_on>\n\ntrue\n\n</always_on>\n\n282\n\n<visualize>\n\ntrue\n\n</visualize>\n\n283\n\n<update_rate>\n\n5\n\n</update_rate>\n\n284\n\n<ray>\n\n285\n\n<scan>\n\n286\n\n<horizontal>\n\n287\n\n<samples>\n\n360\n\n</samples>\n\n288\n\n<resolution>\n\n1.000000\n\n</resolution>\n\n289\n\n<min_angle>\n\n0.000000"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aba4-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 23223, "chroma:document": "1.000000\n\n</resolution>\n\n289\n\n<min_angle>\n\n0.000000\n\n</min_angle>\n\n290\n\n<max_angle>\n\n6.280000\n\n</max_angle>\n\n291\n\n</horizontal>\n\n292\n\n</scan>\n\n293\n\n<range>\n\n294\n\n<min>\n\n0.120000\n\n</min>\n\n295\n\n<max>\n\n3.5\n\n</max>\n\n296\n\n<resolution>\n\n0.015000\n\n</resolution>\n\n297\n\n</range>\n\n298\n\n<noise>\n\n299\n\n<type>\n\ngaussian\n\n</type>\n\n300\n\n<mean>\n\n0.0\n\n</mean>\n\n301\n\n<stddev>\n\n0.01\n\n</stddev>\n\n302\n\n</noise>\n\n303\n\n</ray>\n\n304\n\n<plugin\n\nname=\n\n\"scan\"\n\nfilename=\n\n\"libgazebo_ros_ray_sensor.so\"\n\n>\n\n305\n\n<ros>\n\n306\n\n<remapping>\n\n~/out:=scan\n\n</remapping>\n\n307\n\n</ros>\n\n308\n\n<output_type>\n\nsensor_msgs/LaserScan\n\n</output_type>\n\n309\n\n<frame_name>\n\nlidar_link\n\n</frame_name>\n\n310\n\n</plugin>\n\n311\n\n</sensor>\n\n312\n\n</gazebo>\n\n```\n\nLanguage: unknown\n\nFile: </gazebo>\n\n```\n\n314\n\n<link\n\nname=\n\n\"camera_link\"\n\n>\n\n315\n\n<visual>\n\n316\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n317\n\n<geometry>\n\n318\n\n<box\n\nsize=\n\n\"0.015 0.130 0.022\"\n\n/>\n\n319\n\n</geometry>\n\n320\n\n</visual>\n\n321\n\n322\n\n<collision>\n\n323\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n324"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13abb8-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 24187, "chroma:document": "323\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n324\n\n<geometry>\n\n325\n\n<box\n\nsize=\n\n\"0.015 0.130 0.022\"\n\n/>\n\n326\n\n</geometry>\n\n327\n\n</collision>\n\n328\n\n329\n\n<inertial>\n\n330\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n331\n\n<mass\n\nvalue=\n\n\"0.035\"\n\n/>\n\n332\n\n<inertia\n\nixx=\n\n\"0.001\"\n\nixy=\n\n\"0\"\n\nixz=\n\n\"0\"\n\niyy=\n\n\"0.001\"\n\niyz=\n\n\"0\"\n\nizz=\n\n\"0.001\"\n\n/>\n\n333\n\n</inertial>\n\n334\n\n</link>\n\n335\n\n336\n\n<joint\n\nname=\n\n\"camera_joint\"\n\ntype=\n\n\"fixed\"\n\n>\n\n337\n\n<parent\n\nlink=\n\n\"base_link\"\n\n/>\n\n338\n\n<child\n\nlink=\n\n\"camera_link\"\n\n/>\n\n339\n\n<origin\n\nxyz=\n\n\"0.215 0 0.05\"\n\nrpy=\n\n\"0 0 0\"\n\n/>\n\n340\n\n</joint>\n\n341\n\n342\n\n<link\n\nname=\n\n\"camera_depth_frame\"\n\n/>\n\n343\n\n344\n\n<joint\n\nname=\n\n\"camera_depth_joint\"\n\ntype=\n\n\"fixed\"\n\n>\n\n345\n\n<origin\n\nxyz=\n\n\"0 0 0\"\n\nrpy=\n\n\"${-pi/2} 0 ${-pi/2}\"\n\n/>\n\n346\n\n<parent\n\nlink=\n\n\"camera_link\"\n\n/>\n\n347\n\n<child\n\nlink=\n\n\"camera_depth_frame\"\n\n/>\n\n348\n\n</joint>\n\n349\n\n350\n\n<gazebo\n\nreference=\n\n\"camera_link\"\n\n>\n\n351\n\n<sensor\n\nname=\n\n\"depth_camera\"\n\ntype=\n\n\"depth\"\n\n>\n\n352\n\n<visualize>\n\ntrue\n\n</visualize>\n\n353"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13abcc-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 25136, "chroma:document": "type=\n\n\"depth\"\n\n>\n\n352\n\n<visualize>\n\ntrue\n\n</visualize>\n\n353\n\n<update_rate>\n\n30.0\n\n</update_rate>\n\n354\n\n<camera\n\nname=\n\n\"camera\"\n\n>\n\n355\n\n<horizontal_fov>\n\n1.047198\n\n</horizontal_fov>\n\n356\n\n<image>\n\n357\n\n<width>\n\n640\n\n</width>\n\n358\n\n<height>\n\n480\n\n</height>\n\n359\n\n<format>\n\nR8G8B8\n\n</format>\n\n360\n\n</image>\n\n361\n\n<clip>\n\n362\n\n<near>\n\n0.05\n\n</near>\n\n363\n\n<far>\n\n3\n\n</far>\n\n364\n\n</clip>\n\n365\n\n</camera>\n\n366\n\n<plugin\n\nname=\n\n\"depth_camera_controller\"\n\nfilename=\n\n\"libgazebo_ros_camera.so\"\n\n>\n\n367\n\n<baseline>\n\n0.2\n\n</baseline>\n\n368\n\n<alwaysOn>\n\ntrue\n\n</alwaysOn>\n\n369\n\n<updateRate>\n\n0.0\n\n</updateRate>\n\n370\n\n<frame_name>\n\ncamera_depth_frame\n\n</frame_name>\n\n371\n\n<pointCloudCutoff>\n\n0.5\n\n</pointCloudCutoff>\n\n372\n\n<pointCloudCutoffMax>\n\n3.0\n\n</pointCloudCutoffMax>\n\n373\n\n<distortionK1>\n\n0\n\n</distortionK1>\n\n374\n\n<distortionK2>\n\n0\n\n</distortionK2>\n\n375\n\n<distortionK3>\n\n0\n\n</distortionK3>\n\n376\n\n<distortionT1>\n\n0\n\n</distortionT1>\n\n377\n\n<distortionT2>\n\n0\n\n</distortionT2>\n\n378\n\n<CxPrime>\n\n0\n\n</CxPrime>\n\n379\n\n<Cx>\n\n0\n\n</Cx>"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13abea-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 26104, "chroma:document": "378\n\n<CxPrime>\n\n0\n\n</CxPrime>\n\n379\n\n<Cx>\n\n0\n\n</Cx>\n\n380\n\n<Cy>\n\n0\n\n</Cy>\n\n381\n\n<focalLength>\n\n0\n\n</focalLength>\n\n382\n\n<hackBaseline>\n\n0\n\n</hackBaseline>\n\n383\n\n</plugin>\n\n384\n\n</sensor>\n\n385\n\n</gazebo>\n\n```\n\nLanguage: unknown\n\nFile: generate_launch_description()\n\n```\n\nworld_path\n\n=\n\nos.path.join\n\n(\n\npkg_share,\n\n'world/my_world.sdf'\n\n)\n\n```\n\nLanguage: unknown\n\nFile: launch.actions.ExecuteProcess(cmd=['gazebo',...\n\n```\n\nlaunch.actions.ExecuteProcess\n\n(\n\ncmd\n\n=[\n\n'gazebo'\n\n,\n\n'--verbose'\n\n,\n\n'-s'\n\n,\n\n'libgazebo_ros_init.so'\n\n,\n\n'-s'\n\n,\n\n'libgazebo_ros_factory.so'\n\n,\n\nworld_path\n\n]\n\n,\n\noutput\n\n=\n\n'screen'\n\n)\n\n,\n\n```\n\nLanguage: unknown\n\nFile: world\n\n```\n\ninstall\n\n(\n\nDIRECTORY\n\nsrc\n\nlaunch\n\nrviz\n\nconfig\n\nworld\n\nDESTINATION\n\nshare/\n\n${\n\nPROJECT_NAME\n\n}\n\n)\n\n```\n\nLanguage: unknown\n\nFile: world\n\n```\n\ncolcon\n\nbuild\n\n.\n\ninstall/setup.bash\n\nros2\n\nlaunch\n\nsam_bot_description\n\ndisplay.launch.py\n\n```\n\nLanguage: unknown\n\nFile: /scan\n\n```\n\n1\n\nglobal_costmap\n\n:\n\n2\n\nglobal_costmap\n\n:\n\n3\n\nros__parameters\n\n:\n\n4\n\nupdate_frequency"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ac26-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 27063, "chroma:document": "global_costmap\n\n:\n\n3\n\nros__parameters\n\n:\n\n4\n\nupdate_frequency\n\n:\n\n1.0\n\n5\n\npublish_frequency\n\n:\n\n1.0\n\n6\n\nglobal_frame\n\n:\n\nmap\n\n7\n\nrobot_base_frame\n\n:\n\nbase_link\n\n8\n\nuse_sim_time\n\n:\n\nTrue\n\n9\n\nrobot_radius\n\n:\n\n0.22\n\n10\n\nresolution\n\n:\n\n0.05\n\n11\n\ntrack_unknown_space\n\n:\n\nfalse\n\n12\n\nrolling_window\n\n:\n\nfalse\n\n13\n\nplugins\n\n:\n\n[\n\n\"static_layer\"\n\n,\n\n\"obstacle_layer\"\n\n,\n\n\"inflation_layer\"\n\n]\n\n14\n\nstatic_layer\n\n:\n\n15\n\nplugin\n\n:\n\n\"nav2_costmap_2d::StaticLayer\"\n\n16\n\nmap_subscribe_transient_local\n\n:\n\nTrue\n\n17\n\nobstacle_layer\n\n:\n\n18\n\nplugin\n\n:\n\n\"nav2_costmap_2d::ObstacleLayer\"\n\n19\n\nenabled\n\n:\n\nTrue\n\n20\n\nobservation_sources\n\n:\n\nscan\n\n21\n\nscan\n\n:\n\n22\n\ntopic\n\n:\n\n/scan\n\n23\n\nmax_obstacle_height\n\n:\n\n2.0\n\n24\n\nclearing\n\n:\n\nTrue\n\n25\n\nmarking\n\n:\n\nTrue\n\n26\n\ndata_type\n\n:\n\n\"LaserScan\"\n\n27\n\nraytrace_max_range\n\n:\n\n3.0\n\n28\n\nraytrace_min_range\n\n:\n\n0.0\n\n29\n\nobstacle_max_range\n\n:\n\n2.5\n\n30\n\nobstacle_min_range\n\n:\n\n0.0\n\n31\n\ninflation_layer\n\n:\n\n32\n\nplugin\n\n:\n\n\"nav2_costmap_2d::InflationLayer\"\n\n33\n\ncost_scaling_factor\n\n:\n\n3.0\n\n34\n\ninflation_radius"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ac3a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 28032, "chroma:document": "33\n\ncost_scaling_factor\n\n:\n\n3.0\n\n34\n\ninflation_radius\n\n:\n\n0.55\n\n35\n\nalways_send_full_costmap\n\n:\n\nTrue\n\n36\n\n37\n\nlocal_costmap\n\n:\n\n38\n\nlocal_costmap\n\n:\n\n39\n\nros__parameters\n\n:\n\n40\n\nupdate_frequency\n\n:\n\n5.0\n\n41\n\npublish_frequency\n\n:\n\n2.0\n\n42\n\nglobal_frame\n\n:\n\nodom\n\n43\n\nrobot_base_frame\n\n:\n\nbase_link\n\n44\n\nuse_sim_time\n\n:\n\nTrue\n\n45\n\nrolling_window\n\n:\n\ntrue\n\n46\n\nwidth\n\n:\n\n3\n\n47\n\nheight\n\n:\n\n3\n\n48\n\nresolution\n\n:\n\n0.05\n\n49\n\nrobot_radius\n\n:\n\n0.22\n\n50\n\nplugins\n\n:\n\n[\n\n\"voxel_layer\"\n\n,\n\n\"inflation_layer\"\n\n]\n\n51\n\nvoxel_layer\n\n:\n\n52\n\nplugin\n\n:\n\n\"nav2_costmap_2d::VoxelLayer\"\n\n53\n\nenabled\n\n:\n\nTrue\n\n54\n\npublish_voxel_map\n\n:\n\nTrue\n\n55\n\norigin_z\n\n:\n\n0.0\n\n56\n\nz_resolution\n\n:\n\n0.05\n\n57\n\nz_voxels\n\n:\n\n16\n\n58\n\nmax_obstacle_height\n\n:\n\n2.0\n\n59\n\nmark_threshold\n\n:\n\n0\n\n60\n\nobservation_sources\n\n:\n\nscan\n\n61\n\nscan\n\n:\n\n62\n\ntopic\n\n:\n\n/scan\n\n63\n\nmax_obstacle_height\n\n:\n\n2.0\n\n64\n\nclearing\n\n:\n\nTrue\n\n65\n\nmarking\n\n:\n\nTrue\n\n66\n\ndata_type\n\n:\n\n\"LaserScan\"\n\n67\n\ninflation_layer\n\n:\n\n68\n\nplugin\n\n:\n\n\"nav2_costmap_2d::InflationLayer\"\n\n69"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ac6c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 28980, "chroma:document": ":\n\n68\n\nplugin\n\n:\n\n\"nav2_costmap_2d::InflationLayer\"\n\n69\n\ncost_scaling_factor\n\n:\n\n3.0\n\n70\n\ninflation_radius\n\n:\n\n0.55\n\n71\n\nalways_send_full_costmap\n\n:\n\nTrue\n\n```\n\nLanguage: unknown\n\nFile: PointCloud2\n\n```\n\nobstacle_layer:\n\nplugin:\n\n\"nav2_costmap_2d::ObstacleLayer\"\n\nenabled:\n\nTrue\n\nobservation_sources:\n\nscan\n\npointcloud\n\nscan:\n\ntopic:\n\n/scan\n\ndata_type:\n\n\"LaserScan\"\n\npointcloud:\n\ntopic:\n\n/depth_camera/points\n\ndata_type:\n\n\"PointCloud2\"\n\n```\n\nLanguage: unknown\n\nFile: display.launch.py\n\n```\n\ncolcon\n\nbuild\n\n.\n\ninstall/setup.bash\n\nros2\n\nlaunch\n\nsam_bot_description\n\ndisplay.launch.py\n\n```\n\nLanguage: unknown\n\nFile: slam_toolbox\n\n```\n\nsudo\n\napt\n\ninstall\n\nros-<ros2-distro>-slam-toolbox\n\n```\n\nLanguage: unknown\n\nFile: slam_toolbox\n\n```\n\nros2\n\nlaunch\n\nslam_toolbox\n\nonline_async_launch.py\n\n```\n\nLanguage: unknown\n\nFile: /map\n\n```\n\nros2\n\nrun\n\ntf2_tools\n\nview_frames.py\n\n```\n\nLanguage: unknown\n\nFile: frames.pdf\n\n```\n\nsudo\n\napt\n\ninstall\n\nros-<ros2-distro>-navigation2\n\nsudo\n\napt\n\ninstall\n\nros-<ros2-distro>-nav2-bringup\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ac8a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Setting Up Sensors\uf0c1.txt", "start_index": 29942, "chroma:document": "sudo\n\napt\n\ninstall\n\nros-<ros2-distro>-nav2-bringup\n\n```\n\nLanguage: unknown\n\nFile: navigation_launch.py\n\n```\n\nros2\n\nlaunch\n\nnav2_bringup\n\nnavigation_launch.py\n\n```\n\nLanguage: unknown\n\nFile: costmap\n\n```\n\nros2\n\nrun\n\nnav2_costmap_2d\n\nnav2_costmap_2d_markers\n\nvoxel_grid:\n\n=\n\n/local_costmap/voxel_grid\n\nvisualization_marker:\n\n=\n\n/my_marker\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ac9e-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Nav2\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Nav2\uf0c1\n\nURL: https://docs.nav2.org/index.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Our Sponsors\uf0c1\n\n## Services\uf0c1\n\nIf you need professional services related to Nav2, please contact Open Navigation atinfo@opennav.org.\n\n## Overview\uf0c1\n\nNav2 is the professionally-supported successor of the ROS Navigation Stack deploying the same kinds of technology powering Autonomous Vehicles brought down, optimized, and reworked for mobile and surface robotics.\n\nThis project allows for mobile robots to navigate through complex environments to complete user-defined application tasks with nearly any class of robot kinematics.\n\nNot only can it move from Point A to Point B, but it can have intermediary poses, and represent other types of tasks like object following, complete coverage navigation, and more.\n\nNav2 is a production-grade and high-quality navigation framework trusted by 100+ companies worldwide."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13acb2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Nav2\uf0c1.txt", "start_index": 986, "chroma:document": "It provides perception, planning, control, localization, visualization, and much more to build highly reliable autonomous systems.\n\nThis will compute an environmental model from sensor and semantic data, dynamically path plan, compute velocities for motors, avoid obstacles, and structure higher-level robot behaviors.\n\nTo learn more about this project, such as related projects, robots using, ROS1 comparison, and maintainers, seeAbout and Contact.\n\nTo learn more about navigation and ROS concepts, seeNavigation Concepts.\n\nNav2 uses behavior trees to create customized and intelligent navigation behavior via orchestrating many independent modular servers.\n\nA task server can be used to compute a path, control effort, behavior, or any other navigation\n\nrelated task. These separate servers communicate with the behavior tree (BT)\n\nover a ROS interface such as an action server or service.\n\nA robot may utilize potentially many different behavior trees to allow a robot to perform many types of unique and complex tasks."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13acc6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Nav2\uf0c1.txt", "start_index": 2010, "chroma:document": "The diagram below will give you a good first-look at the structure of Nav2.\n\nNote that it is possible to have multiple plugins for controllers, planners,\n\nand recoveries in each of their servers. This can be used to create contextual navigation behaviors.\n\nEach of the servers also returns status indicators back to the BT Navigator in order to enact contextual behaviors based on their results.\n\nThe expected inputs to Nav2 are TF transformations conforming to REP-105, a\n\nmap source if utilizing the Static Costmap Layer, a BT XML file, and any relevant sensor data\n\nsources. It will then provide valid velocity commands for the motors of a holonomic or\n\nnon-holonomic robot to follow when properly configured. We currently support all of the major robot types:\n\nholonomic, differential-drive, legged, and ackermann (car-like) base types! We support\n\nthem uniquely with both circular and arbitrarily-shaped robots for SE2 collision checking.\n\nIt has tools to:\n\nWe also provide a set of starting plugins to get you going."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13acda-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Nav2\uf0c1.txt", "start_index": 2973, "chroma:document": "We also provide a set of starting plugins to get you going.\n\nA list of all plugins can be found onNavigation Plugins- but they include algorithms for the spanning cross section of common behaviors and robot platform types.\n\n## Related Projects\uf0c1\n\nCheck out related projects to Nav2:\n\n## Citations\uf0c1\n\nIf you use the navigation framework, an algorithm from this repository, or ideas from it\n\nplease cite this work in your papers!\n\nS. Macenski, F. Mart\u00edn, R. White, J. Clavero.The Marathon 2: A Navigation System.\n\nIEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2020.\n\nIROS 2020 talk on Nav2 Marathon Experiments:\n\nIf you use any of the algorithms in Nav2 or the analysis of the algorithms in your work, please cite this work in your papers!\n\nS. Macenski, T. Moore, DV Lu, A. Merzlyakov, M. Ferguson,From the desks of ROS maintainers: A survey of modern & capable mobile robotics algorithms in the robot operating system 2,\n\nRobotics and Autonomous Systems, 2023"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13acee-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Nav2\uf0c1.txt", "start_index": 3922, "chroma:document": "Robotics and Autonomous Systems, 2023\n\nSmac Planner (Hybrid A*, State Lattice, 2D):\n\nS. Macenski, M. Booker, J. Wallace,Open-Source, Cost-Aware Kinematically Feasible Planning for Mobile and Surface Robotics,\n\nRegulated Pure Pursuit Controller:\n\nS. Macenski, S. Singh, F. Martin, J. Gines,Regulated Pure Pursuit for Robot Path Tracking,\n\nAutonomous Robots, 2023.\n\nVSLAM and formal comparisons for service robot needs:\n\nA. Merzlyakov, S. Macenski.A Comparison of Modern General-Purpose Visual SLAM Approaches.\n\nIEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2021.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n@InProceedings\n\n{\n\nmacenski2020marathon2,\n\nauthor\n\n=\n\n{\n\nMacenski,\n\nSteven\n\nand\n\nMartin,\n\nFrancisco\n\nand\n\nWhite,\n\nRuffin\n\nand\n\nGin\u00e9s\n\nClavero,\n\nJonatan\n\n}\n\n,\n\ntitle\n\n=\n\n{\n\nThe\n\nMarathon\n\n2\n\n:\n\nA\n\nNavigation\n\nSystem\n\n}\n\n,\n\nbooktitle\n\n=\n\n{\n\n2020\n\nIEEE/RSJ\n\nInternational\n\nConference\n\non\n\nIntelligent\n\nRobots\n\nand\n\nSystems\n\n(\n\nIROS\n\n)}\n\n,\n\nyear\n\n=\n\n{\n\n2020\n\n}"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ad02-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Nav2\uf0c1.txt", "start_index": 4885, "chroma:document": "Robots\n\nand\n\nSystems\n\n(\n\nIROS\n\n)}\n\n,\n\nyear\n\n=\n\n{\n\n2020\n\n}\n\n}\n\n```\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n@article\n\n{\n\nmacenski2023survey,\n\ntitle\n\n={\n\nFrom\n\nthe\n\ndesks\n\nof\n\nROS\n\nmaintainers:\n\nA\n\nsurvey\n\nof\n\nmodern\n\n&\n\ncapable\n\nmobile\n\nrobotics\n\nalgorithms\n\nin\n\nthe\n\nrobot\n\noperating\n\nsystem\n\n2\n\n}\n\n,\n\nauthor\n\n={\n\nS.\n\nMacenski,\n\nT.\n\nMoore,\n\nDV\n\nLu,\n\nA.\n\nMerzlyakov,\n\nM.\n\nFerguson\n\n}\n\n,\n\nyear\n\n={\n\n2023\n\n}\n\n,\n\njournal\n\n=\n\n{\n\nRobotics\n\nand\n\nAutonomous\n\nSystems\n\n}\n\n}\n\n```\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n@article\n\n{\n\nmacenski2024smac,\n\ntitle\n\n={\n\nOpen-Source,\n\nCost-Aware\n\nKinematically\n\nFeasible\n\nPlanning\n\nfor\n\nMobile\n\nand\n\nSurface\n\nRobotics\n\n}\n\n,\n\nauthor\n\n={\n\nSteve\n\nMacenski\n\nand\n\nMatthew\n\nBooker\n\nand\n\nJosh\n\nWallace\n\n}\n\n,\n\nyear\n\n={\n\n2024\n\n}\n\n,\n\njournal\n\n=\n\n{\n\nArxiv\n\n}\n\n}\n\n```\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n@article\n\n{\n\nmacenski2023regulated,\n\ntitle\n\n={\n\nRegulated\n\nPure\n\nPursuit\n\nfor\n\nRobot\n\nPath\n\nTracking\n\n}\n\n,\n\nauthor\n\n={\n\nSteve\n\nMacenski\n\nand"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ad16-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Nav2\uf0c1.txt", "start_index": 5839, "chroma:document": "Robot\n\nPath\n\nTracking\n\n}\n\n,\n\nauthor\n\n={\n\nSteve\n\nMacenski\n\nand\n\nShrijit\n\nSingh\n\nand\n\nFrancisco\n\nMartin\n\nand\n\nJonatan\n\nGines\n\n}\n\n,\n\nyear\n\n={\n\n2023\n\n}\n\n,\n\njournal\n\n=\n\n{\n\nAutonomous\n\nRobots\n\n}\n\n}\n\n```\n\nLanguage: unknown\n\nFile: use_cancel_deceleration\n\n```\n\n@InProceedings\n\n{\n\nvslamComparison2021,\n\nauthor\n\n=\n\n{\n\nMerzlyakov,\n\nAlexey\n\nand\n\nMacenski,\n\nSteven\n\n}\n\n,\n\ntitle\n\n=\n\n{\n\nA\n\nComparison\n\nof\n\nModern\n\nGeneral-Purpose\n\nVisual\n\nSLAM\n\nApproaches\n\n}\n\n,\n\nbooktitle\n\n=\n\n{\n\n2021\n\nIEEE/RSJ\n\nInternational\n\nConference\n\non\n\nIntelligent\n\nRobots\n\nand\n\nSystems\n\n(\n\nIROS\n\n)}\n\n,\n\nyear\n\n=\n\n{\n\n2021\n\n}\n\n}\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ad34-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/CancelCoverage\uf0c1.txt", "start_index": 0, "chroma:document": "Title: CancelCoverage\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/CancelCoverage.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Example\uf0c1\n\nCode Examples:\n\nLanguage: unknown\n\nFile: server_name\n\n```\n\n<CancelCoverage\n\nserver_name=\n\n\"compute_complete_coverage\"\n\nserver_timeout=\n\n\"10\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ad48-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Build Troubleshooting Guide\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Build Troubleshooting Guide\uf0c1\n\nURL: https://docs.nav2.org/development_guides/build_docs/build_troubleshooting_guide.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Common Nav2 Dependencies Build Failures\uf0c1 Still can\u2019t solve it? Let us know about your issue.Open a ticket.\n\n## Reporting Issue\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ad5c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Collision Monitor\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Collision Monitor\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/configuring\n\ncollision\n\nmonitor.html#provided\n\nnodes\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Provided Nodes\uf0c1 The nodes listed below are inside thenav2_collision_monitorpackage. See the pages for individual configuration information."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ad70-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 0, "chroma:document": "Title: Galactic to Humble\uf0c1\n\nURL: https://docs.nav2.org/migration/Galactic.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ad84-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 199, "chroma:document": "## Major improvements to Smac Planners\uf0c1 The Smac Planner was significantly improved, of both the 2D and Hybrid-A* implementations, making the paths better, faster, and of higher quality. Additional improvements were made to include aanalytic_expansion_max_lengthparameter such that analytic expansions are limited in their potential length. If the length is too far, reject this expansion. This prevents unsafe shortcutting of paths into higher cost areas far out from the goal itself, let search to the work of getting close before the analytic expansion brings it home. This should never be smaller than 4-5x the minimum turning radius being used, or planning times will begin to spike. Further, the traversal cost and heuristic cost computations were updatedrequiring retuning of your penalty functionsif you have a previously existing configuration. Defaults of the algorithm were also retuned appropriately to the change for similar our of the box behavior as before (to use as a reference)."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ad98-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 1197, "chroma:document": "## Simple (Python) Commander\uf0c1 This PR 2411introduces a new package to Nav2, called thenav2_simple_commander. It is a set of functions in an object,BasicNavigator, which can be used to build Nav2-powered autonomy tasks in Python3 without concerning yourself with the Nav2, ROS 2, or Action server details. It contains a simple API taking common types (primarilyPoseStamped) and handles all of the implementation details behind the hood. For example, this is a simple navigation task using this API: The full API can be found in the README of the package. A number of well commented examples and demos can also be found in the package\u2019s source code at the link prior.\n\n## Reduce Nodes and Executors\uf0c1 In order for nav2 to make the best use of ROS 2, we need minimize the number of nodes and executors in nav2, which can improve performance. This functionality has been discussed inthe ticket #816, and carried out in"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13adb6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 2112, "chroma:document": "## API Change for nav2_core\uf0c1 PR 2976changes the API fornav2_core::Controllerandnav2_core::Smootherby replacing the use of shared pointer references(constshared_ptr<>&)to shared pointers(shared_ptr<>). Use of shared pointer references meant that the shared pointer counter was never incremented."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13adca-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 2408, "chroma:document": "## Extending the BtServiceNode to process Service-Results\uf0c1 This PR 2481andPR 2992addressthe ticketandthis ticketand adds a virtualon_completion()function to theBtServiceNodeclass (can be found here). Similar to the already existing virtualon_wait_for_result()function, it can be overwritten in the child class to react to a respective event with some user-defined operation. The addedon_completion()function will be called after the service interaction of theBtServiceNodehas been successfully completed. The returnedBT::NodeStatuswill set the current status of the BT-Node. Since the function has access to the results of the service, the returned node-status can depend on those service results, for example. The normal behavior of theBtServiceNodeis not affected by introducing theon_completion()function, since the the default implementation still simply returnsBT::NodeStatus::SUCCESS, if the service interaction completed successfully."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13adde-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 3351, "chroma:document": "## Including new Rotation Shim Controller Plugin\uf0c1 This PR 2718introduces the newnav2_rotation_shim_controller. This controller will check the rough heading difference with respect to the robot and a newly received path. If within a threshold, it will pass the request onto the primary controller to execute. If it is outside of the threshold, this controller will rotate the robot towards that path heading. Once it is within the tolerance, it will then pass off control-execution from this rotation shim controller onto the primary controller plugin. At this point, the robot is still going to be rotating, allowing the current plugin to take control for a smooth hand off into path tracking. The Rotation Shim Controller is suitable for:\n\n## Spawning the robot in Gazebo\uf0c1 This PR 2473deletes the pkgnav2_gazebo_spawnerinside nav2_bringup directory. Instead ofnav2_gazebo_spawnerthe Nodespawn_entity.pyofgazebo_rosis recommended to spawn the robot in gazebo. Note that"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13adf2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 4322, "chroma:document": "## Recovery Behavior Timeout\uf0c1 Recoveries in Nav2, spin and backup, now havetime_allowanceports in their BT nodes and request fields in their actions to specify a timeout. This helps ensure that the robot can exit a backup or spin primitive behavior in case it gets stuck or otherwise is unable to backup the full distance over a reasonable block of time."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ae06-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 4678, "chroma:document": "## New parameteruse_final_approach_orientationfor the 3 2D planners\uf0c1 Pull request 2488adds a new parameteruse_final_approach_orientationto the 3 2D planners (Theta*, SmacPlanner2D and NavFn),falseby default. Iftrue, the last pose of the path generated by the planner will have its orientation set to the approach orientation, i.e. the orientation of the vector connecting the last two points of the path. It allows sending the robot to a position (x,y) instead of a pose (x,y,theta) by effectively ignoring the goal orientation. For example, below, for the same goal with an orientaton pointed left of the screen,use_final_approach_orientation=false(left) anduse_final_approach_orientation=true(right)\n\n## SmacPlanner2D and Theta*: fix goal orientation being ignored\uf0c1 This pull request 2488fixesthe  issueof the goal pose orientation being ignored (the end path pose orientation was always set to 0)."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ae1a-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 5580, "chroma:document": "## SmacPlanner2D, NavFn and Theta*: fix small path corner cases\uf0c1 This PR 2488ensures the planners are not failing when the distance between the start and the goal is small (i.e. when they are on the same costmap cell), and in that case the output path is constructed with a single pose.\n\n## Change and fix behavior of dynamic parameter change detection\uf0c1 Thisandthis PRmodify the method used to catch the changes of dynamic parameters. The motivation was to fix the issue thatvoidon_parameter_event_callback(constrcl_interfaces::msg::ParameterEvent::SharedPtrevent)was called for every parameter change of every node leading to unwanted parameter changes if 2 different nodes had the same parameter name.\n\n## Dynamic Parameters\uf0c1 Newly added dynamic parameters to:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ae38-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 6285, "chroma:document": "## Dynamic Parameters\uf0c1 Newly added dynamic parameters to:\n\n## BT Action Nodes Exception Changes\uf0c1 When BT action nodes throw exceptions due to networking or action server failures, they now return a status code ofFAILUREto fail that particular action in the behavior tree to react to. This is in contrast to prior where the exceptions thrown from networking were sent to the root tree which would count as a task-level failure that the tree could not react to."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ae4c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 6746, "chroma:document": "## BT Navigator Groot Multiple Navigators\uf0c1 This PR 2627creates separate parameters for groot monitoring for the NavToPose and NavThroughPoses navigator types so you can individually track the state of each behavior tree through the ZMQ publisher. This resolves a long-standing problem after we added multiple navigator types to BT Navigator that you could only view the nav to poses BT execution live. BT.CPP and Groot only support one static ZMQ stream at a time, so there is a bit of a quirk where you must locally reset Groot after switching trees in order to view the live stream of the Nav Through Poses BT, if in use. This is a state of the BT.CPP and Groot libraries and not something we can resolve within Nav2. There is some thought into the future regarding complete deprecation of live BT monitoring using Groot due to this quirk and the almost-certain infux of tickets on the topic. Groot will however always be supported for visualizing behavior tree XML files and modifications, simply not visualizing the BT"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ae60-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 7705, "chroma:document": "tree XML files and modifications, simply not visualizing the BT execution live during robot navigation."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ae74-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 7810, "chroma:document": "## Removed Kinematic Limiting in RPP\uf0c1 The parametersmax_linear_accelandmax_linear_decelwere removed along with the kinematic limiting in the controller causing instabilities. Instead, use a velocity smoother available in the ROS ecosystem if you would like similar behavior.\n\n## Added Smoother Task Server\uf0c1 A new task server was added which loads smoother plugins and executes them to improve quality of an existing planned path. Smoothing action can be called from a behavior tree using SmoothPath action node.PR 2569implements andPR 2875adds in the first of the plugins using it with a simple smoother. Other smoothers are in development and will be added in the future.\n\n## Removed Use Approach Velocity Scaling Param in RPP\uf0c1 The parameteruse_approach_linear_velocity_scalingis removed in favor of always on to help in smooth transitions to the goal.This PR 2701implements."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13ae88-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 8688, "chroma:document": "## Refactored AMCL motion models as plugins\uf0c1 This PR 2642creates plugins for the different motion models currently used in AMCL. This functionality enables users to use any custom motion model by creating it as a plugin and changing the robot_model_type parameter to the name of the plugin in nav2_params.yaml file. This helps to use custom motion models without the need to modify the AMCL source code."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aea6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 9093, "chroma:document": "## Dropping Support for Live Groot Monitoring of Nav2\uf0c1 It was a great feature idea but never quite panned out, especially after we introduced multiple navigator types in the BT Navigator server. The issue we run into primarily is that Zero-MQ prevents users from producing multiple logger types in the same process. Since BT nav has multiple servers, the swapping between them for viewing has never had a clean hand off causing folks to file tickets or have nasty logs appear or ZMQ crashes in the background. The BT.CPP client for this doesn\u2019t allow us to have a clean shutdown process so we\u2019re left with hoping that ZMQ properly handles the situation, which it rarely does. Further, Groot only supports visualizing one type of tree at a time so for applications often switching between navigator types, its not possible to use a single groot client, causing great frustration. So, what I propose here is to remove live monitoring of the BT from Nav2.We can still use Groot to modify, visualize, and generally work with"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aeba-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 10052, "chroma:document": "still use Groot to modify, visualize, and generally work with behavior trees, the only thing being removed is to live view the executing behavior tree as Nav2 is currently executing it (it used to light up the boxes of the current nodes). This was of dubious value anyhow, since the tree ticks so fast its difficult to visualize and get meaningful insights into things as the system is moving so quickly."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aece-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 10458, "chroma:document": "## Replanning Only if Path is Invalid\uf0c1 This PR 2591creates two new condition BT node to facilitate replanning only if path becomes invalid rather than constantly replanning. These new nodes were integrated into the default BT.\n\n## Fix CostmapLayer clearArea invert param logic\uf0c1 This PR 2772fixes the invert paramlogic of the CostmapLayer clearArea function. Hence correcting the behavior of the clearAroundRobot and clearExceptRegion services and their corresponding BT actions."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aee2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 10938, "chroma:document": "## Dynamic Composition\uf0c1 This PR 2750provides a optional bringup based on ROS2 dynamic composition for users. It can be used to compose all Nav2 nodes in a single process instead of launching these nodes separately, which is useful for embedded systems users that need to make optimizations due to harsh resource constraints. it\u2019s used by default, but can be disabled by using the launch argumentuse_composition:=False. Some experiments to show performance improvement of dynamic composition, and the cpu and memory are captured bypsutil: The way of dynamic composition consumes lower memory(saves ~70%),  and lower cpu (saves ~13%) than normal multiple processes."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13aef6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 11603, "chroma:document": "## BT Cancel Node\uf0c1 This PR 2787caters the users with an abstract node to develop cancel behaviors for different servers present in the Nav2 stack such as the controller_server, recovery_server and so on. As a start, this PR also provides theCancelControlbehavior to cancel the goal given to the controller_server. As an addition to theCancelControlThis PR 2856provides the users with the option to cancel the recoveries such as thebackup,spinandwait."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13af14-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 12055, "chroma:document": "## BT PathLongerOnApproach Node\uf0c1 In thePR, a new Decorator BT node known asPathLongerOnApproachhas been added to provide with the functionality to check and potentially handle longer path generated due to an obstacle in the given goal proximity. To demonstrate this functionality, a new BTnavigate_to_pose_w_replanning_goal_patience_and_recovery.xmlwould serve both as an example and ready-to-use BT for a specific application that wishes to optimize their process cycle time. Demo of the developed BT can be seen below, where the robot pauses when close to a goal to see if the dynamic obstacle moves out of the way. Else, it executes the replan: Obstacle does not clear at all, withobstacle_clearance_timeto be 3 seconds: Obstacle clears and you can see the robot pass through the (could have been ideally the) same path:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13af28-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 12880, "chroma:document": "## BT TruncatePathLocal Node\uf0c1 In thePR 2753, a new Action BT node namedTruncatePathLocalhas been added to extract a bounded-length path section near robot to be used e.g. for collision checking or computationally expensive smoothers\n\n## Constrained Smoother\uf0c1 Inthe PR 2753, a new Smoother namednav2_constrained_smoother::ConstrainedSmootherhas been added to optimize various path criteria such as smoothness or distance from obstacles, maintaining minimum turning radius\n\n## Replanning at a Constant Rate and if the Path is Invalid\uf0c1 This PR 2804introduces a new behavior tree that navigates to pose with consistent replanning and if the path becomes invalid. To facilitate the new behavior tree a new condition node PathExpiringTimer was introduced to trigger replanning at a consistent rate."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13af3c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 13674, "chroma:document": "## Euclidean Distance 2D\uf0c1 This PR 2865changes Euclidean distance calculation throughout nav2 to project on to the XY plane (i.e. discard any information related to components in Z). This may potentially subtly change the way certain BT nodes, BT Navigators, controller servers, planner servers, and RPP behave if using custom plugins outside the Nav2 ecosystem.\n\n## Recovery To Behavior\uf0c1 This PR 2867renames the nav2_recoveries to nav2_behaviors. In navigation_launch.py recoveries_server -> behavior_server and nav2_recoveries -> nav2_behaviors. In nav2_params.yaml recovery_plugins -> behavior_plugins and nav2_recoveries -> nav2_behaviors."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13af50-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 14318, "chroma:document": "## Respawn Support in Launch and Lifecycle Manager\uf0c1 PR 2752enables respawn support in Nav2. In the launch files, you may setuse_respawntotrueto enable respawning of servers that crash. This is only available in non-composed systems, since in composed systems, all of the nodes are under a single process and a crash anywhere will bring everything down (including the lifecycle manager itself). Even if the container was set to respawn, it would only respawn the empty container, not with all of the components loaded into it. That PR also enables the lifecycle manager to check if a system goes down due to a crash. If so, it allows the manager to check if the server comes back online within a given timeout period. If it does, it will automatically retransition the system back up to active to continue on its task automatically."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13af64-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 15151, "chroma:document": "## New Nav2 Velocity Smoother\uf0c1 PR 2964introduces thenav2_velocity_smootherfor smoothing velocity commands from Nav2 to a robot controller by velocity, acceleration, and deadband constraints. SeeVelocity Smootherfor more details. It is not included in the default bringup batteries included fromnav2_bringup.\n\n## Goal Checker API Changed\uf0c1 PR 2965adds an extra argument in the initialize function of thenav2_core::GoalCheckerclass. The extra argument is a costmap_ros pointer. This is used to check if the goal is in collision, so that we can avoid moving towards the goal and replanning can be initiates using some BT plugin.\n\n## Added Assisted Teleop\uf0c1 PR 2904adds a new behavior for assisted teleop along with two new BT nodes AssistedTeleop and CancelAssistedTeleop.\n\nCode Examples:"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13af78-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 15920, "chroma:document": "Code Examples:\n\nLanguage: unknown File: PoseStamped ``` def main (): rclpy . init () navigator = BasicNavigator () # Set our demo's initial pose initial_pose = PoseStamped () ... populate pose ... navigator . setInitialPose ( initial_pose ) # Wait for navigation to fully activate navigator . waitUntilNav2Active () # Go to our demos first goal pose goal_pose = PoseStamped () ... populate pose ... navigator . goToPose ( goal_pose ) while not navigator . isTaskComplete (): feedback = navigator . getFeedback () ... do something with feedback ... # Basic navigation timeout if Duration . from_msg ( feedback . navigation_time ) > Duration ( seconds = 600.0 ): navigator . cancelNav () result = navigator . getResult () if result == TaskResult . SUCCEEDED : print ( 'Goal succeeded!' ) elif result == TaskResult . CANCELED : print ( 'Goal was canceled!' ) elif result == TaskResult . FAILED : print ( 'Goal failed!' ) ```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13af8c-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/Galactic to Humble\uf0c1.txt", "start_index": 16843, "chroma:document": "Language: unknown File: BtServiceNode ``` /** * @brief Function to perform some user-defined operation upon successful * completion of the service. Could put a value on the blackboard. * @param response can be used to get the result of the service call in the BT Node. * @return BT::NodeStatus Returns SUCCESS by default, user may override to return another value */ virtual BT :: NodeStatus on_completion ( std :: shared_ptr < typename ServiceT :: Response > /*response*/ ) { return BT :: NodeStatus :: SUCCESS ; } ```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13afaa-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/ComputeCoveragePath\uf0c1.txt", "start_index": 0, "chroma:document": "Title: ComputeCoveragePath\uf0c1\n\nURL: https://docs.nav2.org/configuration/packages/bt\n\nplugins/actions/ComputeCoveragePath.html\n\nSection: getting_started/index.html\n\n--------------------------------------------------------------------------------\n\n## Input Ports\uf0c1\n\n## Output Ports\uf0c1\n\n## Example\uf0c1 Note: the blackboard IDs for the path, error code, and more may be adjusted,but need to match the corresponding parameters in theCoverageNavigatorplugin to set on the blackboard for use from the action server.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: ComputeCoveragePath\n\n```\n\n<ComputeCoveragePath\n\nfile_field=\n\n\"{field_filepath}\"\n\nnav_path=\n\n\"{path}\"\n\ncoverage_path=\n\n\"{cov_path}\"\n\nserver_name=\n\n\"ComputeCoverage\"\n\nserver_timeout=\n\n\"10\"\n\nerror_code_id=\n\n\"{compute_coverage_error_code}\"\n\n/>\n\n```"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13afbe-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/(SLAM) Navigating While Mapping\uf0c1.txt", "start_index": 0, "chroma:document": "Title: (SLAM) Navigating While Mapping\uf0c1 URL: https://docs.nav2.org/tutorials/docs/navigation2_with_slam.html#launch-navigation2 Section: getting_started/index.html --------------------------------------------------------------------------------\n\n## Overview\uf0c1 This document explains how to use Nav2 with SLAM. The following steps show ROS 2 users how to generate occupancy grid maps and use Nav2 to move their robot around. This tutorial applies to both simulated and physical robots, but will be completed here on a physical robot. Before completing this tutorial, completing theGetting Startedis highly recommended especially if you are new to ROS and Navigation2. In this tutorial we\u2019ll be using SLAM Toolbox. More information can be found in theROSCon talk for SLAM Toolbox\n\n## Requirements\uf0c1 You must install Navigation2, Turtlebot3, and SLAM Toolbox. If you don\u2019t have them installed, please followGetting Started. SLAM Toolbox can be installed via: or from built from source in your workspace with:\n\n## Tutorial Steps\uf0c1"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13afd2-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/(SLAM) Navigating While Mapping\uf0c1.txt", "start_index": 1005, "chroma:document": "## Tutorial Steps\uf0c1\n\n## 0- Launch Robot Interfaces\uf0c1 For this tutorial, we will use the turtlebot3. The turtlebot3 software can be installed via the following or on theturtlebot3 repository: If you have another robot, replace with your robot specific interfaces. Typically, this includes the robot state publisher of the URDF, simulated or physical robot interfaces, controllers, safety nodes, and the like. Run the following commands first whenever you open a new terminal during this tutorial. Launch your robot\u2019s interface and robot state publisher, for example:\n\n## 1- Launch Navigation2\uf0c1 Launch Navigation without nav2_amcl and nav2_map_server. It is assumed that the SLAM node(s) will publish to /map topic and provide the map->odom transform.\n\n## 2- Launch SLAM\uf0c1 Bring up your choice of SLAM implementation. Make sure it provides the map->odom transform and /map topic. Run Rviz and add the topics you want to visualize such as /map, /tf, /laserscan etc. For this tutorial, we will useSLAM Toolbox."}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13afe6-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/(SLAM) Navigating While Mapping\uf0c1.txt", "start_index": 2010, "chroma:document": "## 3- Working with SLAM\uf0c1 Move your robot by requesting a goal through RViz or the ROS 2 CLI, ie: You should see the map update live! To save this map to file:\n\n## 4- Getting Started Simplification\uf0c1 If you\u2019re only interested in running SLAM in the turtlebot3 getting started sandbox world, we also provide a simple way to enable SLAM as a launch configuration. Rather than individually launching the interfaces, navigation, and SLAM, you can continue to use thetb3_simulation_launch.pywithslamconfig set to true. We provide the instructions above with the assumption that you\u2019d like to run SLAM on your own robot which would have separated simulation / robot interfaces and navigation launch files that are combined intb3_simulation_launch.pyfor the purposes of easy testing.\n\nCode Examples:\n\nLanguage: unknown\n\nFile: gitclone\n\nb<ros2\n\ndistro>\n\ndevelgit@github.com:stevemacenski/slam_toolbox.git\n\n```\n\nsudo\n\napt\n\ninstall\n\nros\n\n<ros2\n\ndistro>\n\nturtlebot3\n\nros\n\n<ros2\n\ndistro>\n\nturtlebot3\n\nmsgs\n\nros\n\n<ros2\n\ndistro>"}


created_at: 2024-12-07 01:39:04
topic: persistent://default/default/c502b221-cbba-48f5-9f57-26dfa50f986e
id: fb13affa-b437-11ef-85fe-36b882750a1d
encoding: FLOAT32
metadata:
{"source": "/Users/ad12/ros2-rag/exported_docs/nav2/(SLAM) Navigating While Mapping\uf0c1.txt", "start_index": 2964, "chroma:document": "ros\n\n<ros2\n\ndistro>\n\nturtlebot3\n\nmsgs\n\nros\n\n<ros2\n\ndistro>\n\nturtlebot3\n\nbringup\n\n```\n\nLanguage: unknown File: ros2launchslam_toolboxonline_async_launch.py ``` ros2 topic pub /goal_pose geometry_msgs/PoseStamped \"{header: {stamp: {sec: 0}, frame_id: 'map'}, pose: {position: {x: 0.2, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}\" ```\n\nLanguage: unknown\n\nFile: tb3_simulation_launch.py\n\n```\n\nros2\n\nlaunch\n\nnav2_bringup\n\ntb3_simulation_launch.py\n\nslam:\n\n=\n\nTrue\n\n```"}


