基于ros2的lerobot urdf构建
2026/7/10 9:32:36 网站建设 项目流程

一、导入源代码与原仓库

(原网站https://github.com/brukg/SO-100-arm)

由于我打算边学习moveit和VLA,我这边就只取这里的urdf文件

完成以后将urdf放进cmakelist中 然后构建看看效果

二、完成以后写launch文件,尝试用rviz来 打开这个东西

yysy launch文件不是很熟 所以我这里就手把手带大家敲一次吧 顺便我也巩固一下

(一)python的launch文件

1.搭建框架

import launch import launch_ros import os from launch import LaunchDescription def generate_launch_description(): return LaunchDescription([])

2.导入urdf文件

import launch import launch_ros import os from launch import LaunchDescription from ament_index_python.packages import get_package_share_directory def generate_launch_description(): package_path=os.path.join(get_package_share_directory('description_lerobot')) urdf_path=os.path.join(package_path,"urdf","so_arm_100_5dof_arm.urdf.xacro") return LaunchDescription([])

3.利用xacro来解析

import launch import launch_ros import os from launch import LaunchDescription from ament_index_python.packages import get_package_share_directory def generate_launch_description(): package_path=os.path.join(get_package_share_directory('description_lerobot')) urdf_path=os.path.join(package_path,"urdf","so_arm_100_5dof_arm.urdf.xacro") description_lerobot=Command(["xacro",urdf_path]) return LaunchDescription([])

4.写关节发布器与rviz2

import launch import launch_ros import os from launch import LaunchDescription from ament_index_python.packages import get_package_share_directory def generate_launch_description(): package_path=os.path.join(get_package_share_directory('description_lerobot')) urdf_path=os.path.join(package_path,"urdf","so_arm_100_5dof_arm.urdf.xacro") description_lerobot=Command(["xacro",urdf_path]) robot_state_publisher=Node( packages="robot_state_publisher" executable="robot_state_publisher" parameters=[{"robot_description":description_lerobot}] output="screen" ) rviz2=Node( packages="rviz2" executable="rviz2" ) return LaunchDescription([ robot_state_publisher, rviz2 ])

5.完善包和环境

import launch from launch_ros.actions import Node import os from launch import LaunchDescription from launch.substitution import Command from ament_index_python.packages import get_package_share_directory def generate_launch_description(): package_path=os.path.join(get_package_share_directory('description_lerobot')) urdf_path=os.path.join(package_path,"urdf","so_arm_100_5dof_arm.urdf.xacro") description_lerobot=Command(["xacro",urdf_path]) robot_state_publisher=Node( packages="robot_state_publisher", executable="robot_state_publisher", parameters=[{"robot_description":description_lerobot}], output="screen" ) rviz2=Node( packages="rviz2", executable="rviz2" ) return LaunchDescription([ robot_state_publisher, rviz2 ])

6.
发现有好多问题 不想搞了 直接放完整版吧

import launch from launch_ros.actions import Node import os from launch import LaunchDescription from launch.substitutions import Command from ament_index_python.packages import get_package_share_directory from launch_ros.parameter_descriptions import ParameterValue def generate_launch_description(): package_path=get_package_share_directory('description_lerobot') urdf_path=os.path.join(package_path, "urdf", "so_arm_100_5dof.urdf.xacro") rviz_config=os.path.join(package_path, "rviz", "lerobot_rviz.rviz") xacro_cmd= Command([ "xacro ", urdf_path, " use_sim:=false" ]) description_lerobot = ParameterValue(xacro_cmd, value_type=str) robot_state_publisher=Node( package="robot_state_publisher", executable="robot_state_publisher", parameters=[{"robot_description":description_lerobot}], output="screen" ) joint_state_publisher=Node( package="joint_state_publisher", executable="joint_state_publisher", ) rviz2=Node( package="rviz2", executable="rviz2", arguments=["-d",rviz_config] ) return LaunchDescription([ robot_state_publisher, joint_state_publisher, rviz2 ])

(二)xml格式

<?xml version=1.0> <launch> <let name="lerobot_description" value="$(command 'xacro $(find-pkg-share description_lerobot)/urdf/so_arm_100_5dof.urdf.xacro use_sim:=$(var use_sim)')" /> <node pkg="robot_state_publisher" executable="robot_state_publisher" ourput="screen" <param name="robot_state_publisher" value="$(var lerobot_description)" </node> <node pkg="joint_state_publisher" exec="joint_state_publisher" output="screen" /> <node pkg="rviz2" exec="rviz2" output="screen" args="-d $(find-pkg-share description_lerobot)/rviz/lerobot_rviz.rviz" /> </launch> </launch>

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询