一、导入源代码与原仓库
(原网站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>