URDF机器人模型ROS1&2案例
Posted zhangrelay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了URDF机器人模型ROS1&2案例相关的知识,希望对你有一定的参考价值。
2020版如下:
这里,简单补充一下win10/11版本的。
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.9.3
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************
C:\\ros_ws>cd urdf_tutorial
C:\\ros_ws\\urdf_tutorial>colcon build
[2.418s] root DEBUG Using proactor: IocpProactor
Starting >>> urdf_tutorial
Finished <<< urdf_tutorial [5.92s]
Summary: 1 package finished [6.26s]
C:\\ros_ws\\urdf_tutorial>
galactic:
from ament_index_python.packages import get_package_share_path
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.conditions import IfCondition, UnlessCondition
from launch.substitutions import Command, LaunchConfiguration
from launch_ros.actions import Node
from launch_ros.parameter_descriptions import ParameterValue
def generate_launch_description():
urdf_tutorial_path = get_package_share_path('urdf_tutorial')
default_model_path = urdf_tutorial_path / 'urdf/01-myfirst.urdf'
default_rviz_config_path = urdf_tutorial_path / 'rviz/urdf.rviz'
gui_arg = DeclareLaunchArgument(name='gui', default_value='true', choices=['true', 'false'],
description='Flag to enable joint_state_publisher_gui')
model_arg = DeclareLaunchArgument(name='model', default_value=str(default_model_path),
description='Absolute path to robot urdf file')
rviz_arg = DeclareLaunchArgument(name='rvizconfig', default_value=str(default_rviz_config_path),
description='Absolute path to rviz config file')
robot_description = ParameterValue(Command(['xacro ', LaunchConfiguration('model')]),
value_type=str)
robot_state_publisher_node = Node(
package='robot_state_publisher',
executable='robot_state_publisher',
parameters=['robot_description': robot_description]
)
# Depending on gui parameter, either launch joint_state_publisher or joint_state_publisher_gui
joint_state_publisher_node = Node(
package='joint_state_publisher',
executable='joint_state_publisher',
condition=UnlessCondition(LaunchConfiguration('gui'))
)
joint_state_publisher_gui_node = Node(
package='joint_state_publisher_gui',
executable='joint_state_publisher_gui',
condition=IfCondition(LaunchConfiguration('gui'))
)
rviz_node = Node(
package='rviz2',
executable='rviz2',
name='rviz2',
output='screen',
arguments=['-d', LaunchConfiguration('rvizconfig')],
)
return LaunchDescription([
gui_arg,
model_arg,
rviz_arg,
joint_state_publisher_node,
joint_state_publisher_gui_node,
robot_state_publisher_node,
rviz_node
])
注意和foxy版本差异性!
import launch
from launch.substitutions import Command, LaunchConfiguration
import launch_ros
import os
def generate_launch_description():
pkg_share = launch_ros.substitutions.FindPackageShare(package='urdf_tutorial').find('urdf_tutorial')
default_model_path = os.path.join(pkg_share, 'urdf/01-myfirst.urdf')
default_rviz_config_path = os.path.join(pkg_share, 'rviz/urdf.rviz')
robot_state_publisher_node = launch_ros.actions.Node(
package='robot_state_publisher',
executable='robot_state_publisher',
parameters=['robot_description': Command(['xacro ', LaunchConfiguration('model')])]
)
joint_state_publisher_node = launch_ros.actions.Node(
package='joint_state_publisher',
executable='joint_state_publisher',
name='joint_state_publisher',
condition=launch.conditions.UnlessCondition(LaunchConfiguration('gui'))
)
joint_state_publisher_gui_node = launch_ros.actions.Node(
package='joint_state_publisher_gui',
executable='joint_state_publisher_gui',
name='joint_state_publisher_gui',
condition=launch.conditions.IfCondition(LaunchConfiguration('gui'))
)
rviz_node = launch_ros.actions.Node(
package='rviz2',
executable='rviz2',
name='rviz2',
output='screen',
arguments=['-d', LaunchConfiguration('rvizconfig')],
)
return launch.LaunchDescription([
launch.actions.DeclareLaunchArgument(name='gui', default_value='True',
description='Flag to enable joint_state_publisher_gui'),
launch.actions.DeclareLaunchArgument(name='model', default_value=default_model_path,
description='Absolute path to robot urdf file'),
launch.actions.DeclareLaunchArgument(name='rvizconfig', default_value=default_rviz_config_path,
description='Absolute path to rviz config file'),
joint_state_publisher_node,
joint_state_publisher_gui_node,
robot_state_publisher_node,
rviz_node
])
两点提示:
输入:
path = "/Users/krunal/Desktop/code/" print(os.path.join(path, "pyt", "database", "app.py"))
输出:
/Users/krunal/Desktop/code/pyt/database/app.py
SyntaxError
default_model_path = os.path.join('C:\\ros_ws\\urdf_tutorial\\src', 'urdf\\01-myfirst.urdf') ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 9-10: truncated \\uXXXX escape
\\\\
以上是关于URDF机器人模型ROS1&2案例的主要内容,如果未能解决你的问题,请参考以下文章
机器人类专业不同层次院校课程差异性简述-ROS1/ROS2-