fix: pass robot description as a parameter

This commit is contained in:
slz
2026-07-29 16:01:00 +08:00
parent 10a40ce314
commit 05acd7174c
2 changed files with 6 additions and 14 deletions
+3 -12
View File
@@ -12,22 +12,13 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import os
import xacro import xacro
import tempfile
def to_urdf(xacro_path, parameters=None): def to_urdf(xacro_path, parameters=None):
"""Convert the given xacro file to URDF file. """Convert the given xacro file to a URDF string.
* xacro_path -- the path to the xacro file * xacro_path -- the path to the xacro file
* parameters -- to be used when xacro file is parsed. * parameters -- to be used when xacro file is parsed.
""" """
with tempfile.NamedTemporaryFile(prefix="%s_" % os.path.basename(xacro_path), delete=False) as xacro_file:
urdf_path = xacro_file.name
# open and process file
doc = xacro.process_file(xacro_path, mappings=parameters) doc = xacro.process_file(xacro_path, mappings=parameters)
# open the output file return doc.toprettyxml(indent=' ')
with open(urdf_path, 'w') as urdf_file:
urdf_file.write(doc.toprettyxml(indent=' '))
return urdf_path
@@ -35,7 +35,8 @@ def generate_launch_description():
rviz_config_dir = os.path.join(get_package_share_directory('orbbec_description'), 'rviz', 'urdf.rviz') rviz_config_dir = os.path.join(get_package_share_directory('orbbec_description'), 'rviz', 'urdf.rviz')
xacro_path = os.path.join(get_package_share_directory('orbbec_description'), 'urdf', params['model']) xacro_path = os.path.join(get_package_share_directory('orbbec_description'), 'urdf', params['model'])
urdf = to_urdf(xacro_path, {'use_nominal_extrinsics': 'true', 'add_plug': 'true'}) robot_description = to_urdf(
xacro_path, {'use_nominal_extrinsics': 'true', 'add_plug': 'true'})
rviz_node = Node( rviz_node = Node(
package='rviz2', package='rviz2',
executable='rviz2', executable='rviz2',
@@ -50,6 +51,6 @@ def generate_launch_description():
executable='robot_state_publisher', executable='robot_state_publisher',
namespace='', namespace='',
output='screen', output='screen',
arguments=[urdf] parameters=[{'robot_description': robot_description}]
) )
return launch.LaunchDescription([rviz_node, model_node]) return launch.LaunchDescription([rviz_node, model_node])