MoveIt!生成的机器人**_moveit_config包中config文件和launch文件

MoveIt!生成的机器人**_moveit_config包中config文件和launch文件

  • MoveIt
  • config文件
    • srdf
    • cartesian_limits.yaml
    • joint_limits.yaml
    • fake_controllers.yam
    • simple_moveit_controllers.yaml
    • gazebo_controllers.yaml
    • 1. ros_controllers.yaml
    • kinematics.yaml
    • sensors_3d.yaml
    • ompl_planning.yaml
    • chomp_planning.yaml
    • stomp_planning.yaml
    • OMPL与CHOMP STOMP
  • launch文件
    • 2. jaka_zu12_moveit_controller_manager.launch.xml
    • 3. trajectory_execution.launch.xml
    • 4. move_group.launch
    • 5.6. demo.launch
    • demo_gazebo.launch

ros版本:noetic
官方教程地址MoveIt1
官方教程地址MoveIt2
安装MoveIt!
通过以下命令安装MoveI!

 sudo apt install ros-noetic-moveit

MoveIt

在这里插入图片描述

在这里插入图片描述

follow_joint_trajectory
允许客户端向机器人控制器发送关节轨迹。
轨迹以关节位置、速度和加速度的列表形式指定,控制器将尝试尽可能精确地跟踪轨迹。
JointTrajectoryAction:
关节轨迹动作组,包括空间轨迹的接收,机械臂对规划轨迹的执行结果等信息。
Joint States Topic:
关节状态话题,描述机械臂中,各个关节执行的角度状态。

在这里插入图片描述
在这里插入图片描述

move_group 通过参数服务器(param server)获取以下信息:

    URDF:robot_description 参数,获取机器人 URDF 模型信息
    SRDF:robot_description_semantic参数,获取机器人模型的配置信息,SRDF 是通过 MoveIt Setup Assistant 生成的;
    MoveIt configuration:机器人的其他配置信息,如关节限位、运动学插件、运动规划插件等,Config files for these components are automatically generated by the MoveIt setup assistant and stored in the config directory of the corresponding MoveIt config package for the robot.

config文件

以JAKA zu12 为例
在这里插入图片描述

在这里插入图片描述

srdf

SRDF文件(Systematic Robot Description Format)是一种机器人描述文件格式,用于描述机器人的运动学和动力学模型。SRDF文件由一系列XML元素组成,每个元素描述机器人的某个方面。 SRDF文件可以用于在机器人仿真器中创建机器人模型,也可以用于在机器人控制器中编写控制代码。

cartesian_limits.yaml

Limits for the cartesian position of the robot
机器人笛卡尔位置的限制

joint_limits.yaml

The joint_limits.yaml file contains the joint limits for the robot. The joint limits are the maximum and minimum values that the joints can move to. The joint limits are used to prevent the robot from moving into a position where it could damage itself.

文件 joint_limits.yaml 包含了机器人的关节限制。关节限制是关节可以移动到的最大和最小值。关节限制用于防止机器人移动到可能损坏自身的位置。

fake_controllers.yam

The fake_controllers.yaml file contains the parameters for the fake controllers. The fake controllers are used to simulate the behavior of the real controllers. The parameters in the fake_controllers.yaml file control the behavior of the fake controllers, such as the maximum velocity and acceleration of the robot.

文件 fake_controllers.yaml 包含了假控制器的参数。假控制器用于模拟真实控制器的行为。fake_controllers.yaml 文件中的参数控制了假控制器的行为,例如机器人的最大速度和加速度。

simple_moveit_controllers.yaml

The simple_moveit_controllers.yaml file contains the parameters for the simple MoveIt controllers. The simple MoveIt controllers are used to control the robot in the MoveIt environment. The parameters in the simple_moveit_controllers.yaml file control the behavior of the simple MoveIt controllers, such as the maximum velocity and acceleration of the robot.

文件 simple_moveit_controllers.yaml 包含了简单的 MoveIt 控制器的参数。简单的 MoveIt 控制器用于在 MoveIt 环境中控制机器人。simple_moveit_controllers.yaml 文件中的参数控制了简单的 MoveIt 控制器的行为,例如机器人的最大速度和加速度。

gazebo_controllers.yaml

The gazebo_controllers.yaml file contains the parameters for the gazebo controllers. The gazebo controllers are used to control the robot in the Gazebo simulator. The parameters in the gazebo_controllers.yaml file control the behavior of the gazebo controllers, such as the maximum velocity and acceleration of the robot.

文件 gazebo_controllers.yaml 包含了 gazebo 控制器的参数。gazebo 控制器用于在 Gazebo 仿真器中控制机器人。gazebo_controllers.yaml 文件中的参数控制了 gazebo 控制器的行为,例如机器人的最大速度和加速度。

1. ros_controllers.yaml

The ros_controllers.yaml file contains the parameters for the ROS controllers. The ROS controllers are used to control the robot in the ROS environment. The parameters in the ros_controllers.yaml file control the behavior of the ROS controllers, such as the maximum velocity and acceleration of the robot.

文件 ros_controllers.yaml 包含了 ROS 控制器的参数。ROS 控制器用于在 ROS 环境中控制机器人。ros_controllers.yaml 文件中的参数控制了 ROS 控制器的行为,例如机器人的最大速度和加速度。

#Simulation settings for using moveit_sim_controllers
moveit_sim_hw_interface:
  joint_model_group: jaka_zu12
  joint_model_group_pose: zero
# Settings for ros_control_boilerplate control loop
generic_hw_control_loop:
  loop_hz: 300
  cycle_time_error_threshold: 0.01
# Settings for ros_control hardware interface
hardware_interface:
  joints:
    - joint_1
    - joint_2
    - joint_3
    - joint_4
    - joint_5
    - joint_6
  sim_control_mode: 1  # 0: position, 1: velocity
# Publish all joint states
# Creates the /joint_states topic necessary in ROS
joint_state_controller:
  type: joint_state_controller/JointStateController
  publish_rate: 50
controller_list:
  - name: jaka_zu12_controller
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    default: true
    joints:
      - joint_1
      - joint_2
      - joint_3
      - joint_4
      - joint_5
      - joint_6
jaka_zu12_controller:
  type: position_controllers/JointTrajectoryController
  joints:
      - joint_1
      - joint_2
      - joint_3
      - joint_4
      - joint_5
      - joint_6
  constraints:
      goal_time: 0.6
      stopped_velocity_tolerance: 0
      joint_1: {trajectory: 0.1, goal: 0}
      joint_2: {trajectory: 0.1, goal: 0}
      joint_3: {trajectory: 0.1, goal: 0}
      joint_4: {trajectory: 0.1, goal: 0}
      joint_5: {trajectory: 0.1, goal: 0}
      joint_6: {trajectory: 0.1, goal: 0}
  gains:
      joint_1: {p: 100, d: 1, i: 1, i_clamp: 1}
      joint_2: {p: 100, d: 1, i: 1, i_clamp: 1}
      joint_3: {p: 100, d: 1, i: 1, i_clamp: 1}
      joint_4: {p: 100, d: 1, i: 1, i_clamp: 1}
      joint_5: {p: 100, d: 1, i: 1, i_clamp: 1}
      joint_6: {p: 100, d: 1, i: 1, i_clamp: 1}
  stop_trajectory_duration: 0.5
  state_publish_rate:  25
  action_monitor_rate: 1

kinematics.yaml

The kinematics.yaml file contains the kinematic parameters for the robot. The kinematic parameters are used to calculate the position and orientation of the robot’s joints given the joint angles.

文件 kinematics.yaml 包含了机器人的运动学参数。运动学参数用于计算给定关节角度时机器人关节的位置和方向。

sensors_3d.yaml

The sensors_3d.yaml file contains the parameters for the 3D sensors. The 3D sensors are used to detect objects in the environment. The parameters in the sensors_3d.yaml file control the behavior of the 3D sensors, such as the range and resolution of the sensors.
文件 sensors_3d.yaml 包含了 3D 传感器的参数。3D 传感器用于检测环境中的物体。sensors_3d.yaml 文件中的参数控制了 3D 传感器的行为,例如传感器的范围和分辨率。

ompl_planning.yaml

The ompl_planning.yaml file contains the parameters for the OMPL planner. The OMPL planner is a sampling-based planner that uses a variety of heuristics to find a collision-free path between the start and goal states. The parameters in the ompl_planning.yaml file control the behavior of the OMPL planner, such as the number of iterations to run the planner for, the maximum time to run the planner for, and the maximum number of nodes to expand in the planner.

文件 ompl_planning.yaml 包含了 OMPL 规划器的参数。OMPL 规划器是一种基于采样的规划器,它使用各种启发式方法来找到起点和目标状态之间的无碰撞路径。ompl_planning.yaml 文件中的参数控制了 OMPL 规划器的行为,例如运行规划器的迭代次数、运行规划器的最大时间以及规划器中要扩展的最大节点数。

chomp_planning.yaml

The chomp_planning.yaml file contains the parameters for the CHOMP planner. The CHOMP planner is a sampling-based planner that uses a heuristic to quickly find a collision-free path between the start and goal states. The parameters in the chomp_planning.yaml file control the behavior of the CHOMP planner, such as the number of iterations to run the planner for, the maximum time to run the planner for, and the maximum number of nodes to expand in the planner.

文件 chomp_planning.yaml 包含了 CHOMP 规划器的参数。CHOMP 规划器是一种基于采样的规划器,它使用启发式方法快速找到起点和目标状态之间的无碰撞路径。chomp_planning.yaml 文件中的参数控制了 CHOMP 规划器的行为,例如运行规划器的迭代次数、运行规划器的最大时间以及规划器中要扩展的最大节点数。

stomp_planning.yaml

stomp_planning.yaml is a configuration file used for path planning. STOMP (Stochastic Trajectory Optimization for Motion Planning) is an optimization-based motion planning algorithm used to generate motion trajectories for robots or vehicles in complex environments. The stomp_planning.yaml file contains the parameter settings for the STOMP algorithm and the description of the planning environment. By adjusting these parameters, the results of path planning can be influenced.

stomp_planning.yaml是一个用于路径规划的配置文件。STOMP(Stochastic Trajectory Optimization for Motion Planning)是一种基于优化的运动规划算法,用于在复杂环境中生成机器人或车辆的运动轨迹。stomp_planning.yaml文件包含了STOMP算法的参数设置和规划环境的描述,通过调整这些参数可以影响路径规划的结果。

OMPL与CHOMP STOMP

OMPL是一个开源的运动规划库,提供了多种规划算法的实现。它具有灵活性和可扩展性,可以适应不同的问题和需求。OMPL支持多种搜索策略和采样方法,可以在不同的场景中进行定制和调整。

CHOMP(Covariant Hamiltonian Optimization for Motion Planning)是一种优化运动规划算法,用于解决机器人运动路径规划问题。它的目标是找到在给定环境中,从初始状态到目标状态的最佳运动轨迹。用于解决机器人运动路径规划问题。它的目标是找到在给定环境中,从初始状态到目标状态的最佳运动轨迹。
CHOMP算法基于拉格朗日动力学优化,它将运动规划问题转化为一个优化问题,通过迭代优化来求解最佳轨迹。它使用了一种称为“协变哈密顿优化”的技术,该技术能够考虑到机器人的动力学约束和环境的碰撞避免。
CHOMP算法的基本思想是通过迭代优化来不断改进轨迹,直到找到一个满足约束条件且最优的轨迹。在每次迭代中,它通过计算当前轨迹的梯度来更新轨迹,并使用线性二次规划来处理碰撞避免约束。
CHOMP算法的优点是能够处理复杂的运动规划问题,同时考虑到了机器人的动力学约束和环境的碰撞避免。它在实际应用中被广泛用于机器人运动控制、自动驾驶汽车和无人机路径规划等领域。

STOMP(Stochastic Trajectory Optimization for Motion Planning)是一种基于概率的运动规划算法,用于解决机器人运动路径规划问题。它的目标是找到在给定环境中,从初始状态到目标状态的一条最优概率轨迹。
STOMP算法的基本思想是通过随机采样来生成候选轨迹,然后对这些候选轨迹进行评估,并选择最优的轨迹作为最终结果。在评估候选轨迹时,STOMP算法使用了一种称为“概率优化”的技术,该技术能够考虑到机器人的动力学约束和环境的碰撞避免。
STOMP算法的优点是能够处理复杂的运动规划问题,并且能够在较短的时间内找到较优的轨迹。它在实际应用中被广泛用于机器人运动控制、自动驾驶汽车和无人机路径规划等领域。

launch文件

以节卡为例
在这里插入图片描述
在这里插入图片描述

2. jaka_zu12_moveit_controller_manager.launch.xml

控制器的管理者会将ros_controllers加载到参数服务器

<launch>
  <arg name="execution_type" />

  <!-- loads moveit_controller_manager on the parameter server which is taken as argument  在作为参数的 参数服务器 上加载moveit_controller_manager
    if no argument is passed, moveit_simple_controller_manager will be set 如果没有传递参数,moveit_simple_controller_manager将被设置 -->
    
  <arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
  <param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>

  <!-- loads ros_controllers to the param server 将ros_controllers加载到参数服务器 -->
  <rosparam file="$(find jaka_zu12_moveit_config)/config/ros_controllers.yaml"/>
</launch>

3. trajectory_execution.launch.xml

启动控制器管理者

<launch>

  <!-- This file makes it easy to include the settings for trajectory execution  -->

  <arg name="execution_type" default="interpolate" />

  <!-- Flag indicating whether MoveIt! is allowed to load/unload  or switch controllers -->
  <arg name="moveit_manage_controllers" default="true"/>
  <param name="moveit_manage_controllers" value="$(arg moveit_manage_controllers)"/>

  <!-- When determining the expected duration of a trajectory, this multiplicative factor is applied to get the allowed duration of execution 在确定轨迹的预期持续时间时,应用此乘法因子来获得允许的执行持续时间-->
  <param name="trajectory_execution/allowed_execution_duration_scaling" value="1.2"/> <!-- default 1.2 -->
  <!-- Allow more than the expected execution time before triggering a trajectory cancel (applied after scaling) 在触发轨迹取消之前允许超过预期的执行时间(在缩放后应用) -->
  <param name="trajectory_execution/allowed_goal_duration_margin" value="0.5"/> <!-- default 0.5 -->
  <!-- Allowed joint-value tolerance for validation that trajectory's first point matches current robot state 允许关节值公差验证轨迹的第一个点与当前机器人状态匹配 -->
  <param name="trajectory_execution/allowed_start_tolerance" value="0.01"/> <!-- default 0.01 -->

  <!-- Load the robot specific controller manager; this sets the moveit_controller_manager ROS parameter 加载机器人特定控制器管理器;这将设置moveit_controller_manager ROS参数 -->
  <arg name="moveit_controller_manager" default="jaka_zu12" />
  <include file="$(find jaka_zu12_moveit_config)/launch/$(arg moveit_controller_manager)_moveit_controller_manager.launch.xml">
    <arg name="execution_type" value="$(arg execution_type)" />
  </include>

</launch>

4. move_group.launch

加载trajectory_execution.launch.xml文件

<launch>

  <!-- GDB Debug Option GDB调试选项-->
  <arg name="debug" default="false" />
  <arg unless="$(arg debug)" name="launch_prefix" value="" />
  <arg     if="$(arg debug)" name="launch_prefix"
           value="gdb -x $(find jaka_zu12_moveit_config)/launch/gdb_settings.gdb --ex run --args" />

  <!-- Verbose Mode Option 详细模式选项 -->
  <arg name="info" default="$(arg debug)" />
  <arg unless="$(arg info)" name="command_args" value="" />
  <arg     if="$(arg info)" name="command_args" value="--debug" />

  <!-- move_group settings -->
  <arg name="pipeline" default="ompl" />
  <arg name="allow_trajectory_execution" default="true"/>
  <arg name="fake_execution" default="false"/> #修改为false,下面为真实的机器人运动,而不是假的#
  <arg name="execution_type" default="interpolate"/> <!-- set to 'last point' to skip intermediate trajectory in fake execution -->
  <arg name="max_safe_path_cost" default="1"/>
  <arg name="jiggle_fraction" default="0.05" />
  <arg name="publish_monitored_planning_scene" default="true"/>

  <arg name="capabilities" default=""/>
  <arg name="disable_capabilities" default=""/>
  <!-- load these non-default MoveGroup capabilities (space seperated)加载这些非默认的MoveGroup功能(空格分隔) -->
  <!--
  <arg name="capabilities" value="
                a_package/AwsomeMotionPlanningCapability
                another_package/GraspPlanningPipeline
                " />
  -->

  <!-- 禁止这些默认的移动组功能(空格分隔) -->
  <!--
  <arg name="disable_capabilities" value="
                move_group/MoveGroupKinematicsService
                move_group/ClearOctomapService
                " />
  -->

  <arg name="load_robot_description" default="true" />
  <!-- load URDF, SRDF and joint_limits configuration 加载URDF, SRDF和joint_limits配置-->
  <include file="$(find jaka_zu12_moveit_config)/launch/planning_context.launch">
    <arg name="load_robot_description" value="$(arg load_robot_description)" />
  </include>

  <!-- Planning Functionality 规划功能-->
  <include ns="move_group" file="$(find jaka_zu12_moveit_config)/launch/planning_pipeline.launch.xml">
    <arg name="pipeline" value="$(arg pipeline)" />
    <param name="capabilities" value="$(arg capabilities)"/>
    <param name="disable_capabilities" value="$(arg disable_capabilities)"/>
  </include>

  <!-- Trajectory Execution Functionality 轨迹执行功能-->
  <include ns="move_group" file="$(find jaka_zu12_moveit_config)/launch/trajectory_execution.launch.xml" if="$(arg allow_trajectory_execution)">
    <arg name="moveit_manage_controllers" value="true" />
    <arg name="moveit_controller_manager" value="jaka_zu12" unless="$(arg fake_execution)"/>
    <arg name="moveit_controller_manager" value="fake" if="$(arg fake_execution)"/>
    <arg name="execution_type" value="$(arg execution_type)" />
  </include>

  <!-- Sensors Functionality 传感器功能-->
  <include ns="move_group" file="$(find jaka_zu12_moveit_config)/launch/sensor_manager.launch.xml" if="$(arg allow_trajectory_execution)">
    <arg name="moveit_sensor_manager" value="jaka_zu12" />
  </include>

  <!-- Start the actual move_group node/action server 启动实际的move_group节点/动作服务器 -->
  <node name="move_group" launch-prefix="$(arg launch_prefix)" pkg="moveit_ros_move_group" type="move_group" respawn="false" output="screen" args="$(arg command_args)">
    <!-- Set the display variable, in case OpenGL code is used internally -->
    <env name="DISPLAY" value="$(optenv DISPLAY :0)" />

    <param name="allow_trajectory_execution" value="$(arg allow_trajectory_execution)"/>
    <param name="max_safe_path_cost" value="$(arg max_safe_path_cost)"/>
    <param name="jiggle_fraction" value="$(arg jiggle_fraction)" />


    <!-- Publish the planning scene of the physical robot so that rviz plugin can know actual robot -->
    <!--  发布物理机器人的规划场景,使rviz插件能够了解实际机器人 -->
    <param name="planning_scene_monitor/publish_planning_scene" value="$(arg publish_monitored_planning_scene)" />
    <param name="planning_scene_monitor/publish_geometry_updates" value="$(arg publish_monitored_planning_scene)" />
    <param name="planning_scene_monitor/publish_state_updates" value="$(arg publish_monitored_planning_scene)" />
    <param name="planning_scene_monitor/publish_transforms_updates" value="$(arg publish_monitored_planning_scene)" />
  </node>

</launch>

5.6. demo.launch

move_group.launch
moveit_rviz.launch
moveit.rviz
default_warehouse_db.launch

<launch>

  <!-- specify the planning pipeline 指定规划管道 -->
  <arg name="pipeline" default="ompl" />

  <!-- By default, we do not start a database (it can be large) 默认情况下,我们不启动数据库(它可能很大)。 -->
  <arg name="db" default="false" />
  <!-- Allow user to specify database location -->
  <arg name="db_path" default="$(find jaka_zu12_moveit_config)/default_warehouse_mongo_db" />

  <!-- By default, we are not in debug mode 默认情况下,我们不处于调试模式 -->
  <arg name="debug" default="false" />

  <!-- By default, we will load or override the robot_description 默认情况下,我们将加载或覆盖 robot_description -->
  <arg name="load_robot_description" default="true"/>

  <!-- Set execution mode for fake execution controllers 设置假执行控制器的执行模式 -->
  <arg name="execution_type" default="interpolate" />

  <!--
  By default, hide joint_state_publisher's GUI

  MoveIt!'s "demo" mode replaces the real robot driver with the joint_state_publisher.
  The latter one maintains and publishes the current joint configuration of the simulated robot.
  It also provides a GUI to move the simulated robot around "manually".
  This corresponds to moving around the real robot without the use of MoveIt.
  
 	默认情况下,隐藏joint_state_publisher的GUI
 	 
	MoveIt !的“demo”模式用joint_state_publisher替换了真正的机器人驱动程序。
	后者维护和发布仿真机器人的当前关节构型。
	它还提供了一个GUI来“手动”移动模拟机器人。
`	这相当于在不使用MoveIt的情况下移动真实的机器人。

  -->
  <arg name="use_gui" default="false" />
  <arg name="use_rviz" default="true" />

  <!-- If needed, broadcast static tf for robot root如果需要,为机器人根广播静态tf -->


  <!-- 6. We do not have a robot connected, so publish fake joint states 6. 我们没有机器人连接,所以发布假的联合状态 (6)joint_state_publisheri订阅话题名配置 -->
  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" unless="$(arg use_gui)">
  
  <!-- <rosparam param="source_list" [move_group/fake_controller_joint_states]</rosparam>  -->
  <rosparam param="source_list">[/joint_states]</rosparam>
  </node>
  
  <!-- <node name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" if="$(arg use_gui)">
  <rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
  </node> -->

  <!-- Given the published joint states, publish tf for the robot links 给定已发布的关节状态,发布机器人链接的tf -->
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="true" output="screen" />

  <!-- Run the main MoveIt! executable without trajectory execution (we do not have controllers configured by default) 运行主MoveIt!可执行的,没有轨迹执行(我们没有默认配置的控制器) -->
  <include file="$(find jaka_zu12_moveit_config)/launch/move_group.launch">
    <arg name="allow_trajectory_execution" value="true"/>
    <arg name="fake_execution" value="false"/>     <------------------ 5. false
    <arg name="execution_type" value="$(arg execution_type)"/>
    <arg name="info" value="true"/>
    <arg name="debug" value="$(arg debug)"/>
    <arg name="pipeline" value="$(arg pipeline)"/>
    <arg name="load_robot_description" value="$(arg load_robot_description)"/>
  </include>

  <!-- Run Rviz and load the default config to see the state of the move_group node -->
  <include file="$(find jaka_zu12_moveit_config)/launch/moveit_rviz.launch" if="$(arg use_rviz)">
    <arg name="rviz_config" value="$(find jaka_zu12_moveit_config)/launch/moveit.rviz"/>
    <arg name="debug" value="$(arg debug)"/>
  </include>

  <!-- If database loading was enabled, start mongodb as well -->
  <include file="$(find jaka_zu12_moveit_config)/launch/default_warehouse_db.launch" if="$(arg db)">
    <arg name="moveit_warehouse_database_path" value="$(arg db_path)"/>
  </include>

</launch>

demo_gazebo.launch

jaka_zu12.urdf
gazebo.launch
move_group.launch
moveit_rviz.launch
moveit.rviz
default_warehouse_db.launch

<launch>

  <!-- By default, we do not start a database (it can be large) 默认情况下,我们不启动数据库(它可能很大)。-->
  <arg name="db" default="false" />
  <!-- Allow user to specify database location -->
  <arg name="db_path" default="$(find jaka_zu12_moveit_config)/default_warehouse_mongo_db" />

  <!-- By default, we are not in debug mode 默认情况下,我们不处于调试模式 -->
  <arg name="debug" default="false" />

  <!-- By default, we won't load or override the robot_description 默认情况下,我们不会加载或覆盖robot_description -->
  <arg name="load_robot_description" default="false"/>

  <!--
  By default, hide joint_state_publisher's GUI

  MoveIt!'s "demo" mode replaces the real robot driver with the joint_state_publisher.
  The latter one maintains and publishes the current joint configuration of the simulated robot.
  It also provides a GUI to move the simulated robot around "manually".
  This corresponds to moving around the real robot without the use of MoveIt.
  -->
  <arg name="use_gui" default="false" />

  <!-- Gazebo specific options  Gazebo 特定选项 -->
  <arg name="gazebo_gui" default="true"/>
  <arg name="paused" default="false"/>
  <!-- By default, use the urdf location provided from the package -->
  <arg name="urdf_path" default="$(find jaka_description)/urdf/jaka_zu12.urdf"/>

  <!-- launch the gazebo simulator and spawn the robot  gazebo模拟器并生成机器人 -->
  <include file="$(find jaka_zu12_moveit_config)/launch/gazebo.launch" >
    <arg name="paused" value="$(arg paused)"/>
    <arg name="gazebo_gui" value="$(arg gazebo_gui)"/>
    <arg name="urdf_path" value="$(arg urdf_path)"/>
  </include>

  <!-- If needed, broadcast static tf for robot root 如果需要,为机器人根广播静态tf -->
  

  <!-- We do not have a robot connected, so publish fake joint states -->
  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" unless="$(arg use_gui)">
    <rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
    <rosparam param="source_list">[/joint_states]</rosparam>
  </node>
  <node name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" if="$(arg use_gui)">
    <rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
    <rosparam param="source_list">[/joint_states]</rosparam>
  </node>

  <!-- Given the published joint states, publish tf for the robot links 给定已发布的关节状态,发布机器人链接的tf -->
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="true" output="screen" />

  <!-- Run the main MoveIt! executable without trajectory execution (we do not have controllers configured by default) 运行主MoveIt!可执行的,没有轨迹执行(我们没有默认配置的控制器) -->
  <include file="$(find jaka_zu12_moveit_config)/launch/move_group.launch">
    <arg name="allow_trajectory_execution" value="true"/>
    <arg name="fake_execution" value="false"/>
    <arg name="info" value="true"/>
    <arg name="debug" value="$(arg debug)"/>
    <arg name="load_robot_description" value="$(arg load_robot_description)"/>
  </include>

  <!-- Run Rviz and load the default config to see the state of the move_group node 运行Rviz并加载默认配置以查看move_group节点的状态 -->
  <include file="$(find jaka_zu12_moveit_config)/launch/moveit_rviz.launch">
    <arg name="rviz_config" value="$(find jaka_zu12_moveit_config)/launch/moveit.rviz"/>
    <arg name="debug" value="$(arg debug)"/>
  </include>

  <!-- If database loading was enabled, start mongodb as well 如果启用了数据库加载,也要启动mongodb -->
  <include file="$(find jaka_zu12_moveit_config)/launch/default_warehouse_db.launch" if="$(arg db)">
    <arg name="moveit_warehouse_database_path" value="$(arg db_path)"/>
  </include>

</launch>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/268134.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Qt之Quick模块】6. QML语法详解_1 基础语法与三种导入语句

前言 通过以上1-5文档的介绍&#xff0c;Quick与QML的概念及QML语法、类型、文件作用等已叙述个大概&#xff0c;接下来是对QML语法进行展开来说。 其实&#xff0c;学习任何一门语言或者做任何一件事情&#xff0c;并不用一开始就要求尽善尽美&#xff0c;做个无懈可击&…

vue3组件通信(父给子传参,子调用父的方法,父调用子的方法,顶层组件给底层组件传参,底层组件调用顶层组件的方法)

目录 1.父传子&#xff08;父给子传参&#xff09; 2.子传父&#xff08;子调用父的方法&#xff09; 3.父调用子的方法 4.顶层给底层传参&#xff0c;底层调用顶层的方法 5.模板引用 1.父传子&#xff08;父给子传参&#xff09; ①.步骤 父组件中给子组件通过绑定属性…

收银管理系统怎样帮助商家很好地经营服装门店

收银管理系统对于服装门店的经营可以提供多方面的帮助&#xff0c;以下是一些具体的优势和功能&#xff1a; 1. 快速准确的收银&#xff1a;收银管理系统可以实现快速、准确的收银操作&#xff0c;通过条码扫描或手动输入商品信息&#xff0c;自动计算价格并生成收据。这样可以…

nacos配置中心配置已经常见错误总结

&#x1f4bb;目录 前言1、基础架构2、依赖3、配置文件3.1、bolg-product配置文件3.1.1、application.yml配置文件3.1.2、bootstrap.yml配置文件3.1.3、nacos远程配置 3.2、bolg-system3.1.1、application.yml配置文件3.1.2、bootstrap.yml配置文件3.2.3、nacos远程配置 4、测试…

【文本处理】正则表达式

一、简介 正则表达式&#xff0c;又称规则表达式,&#xff08;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊字符&…

在Redis客户端设置连接密码 并演示密码登录

我们先连接到Redis服务 然后 我们要输入 CONFIG SET requirepass “新密码” 例如 CONFIG SET requirepass "A15167"这样 密码就被设置成立 A15167 我们 输入 AUTH 密码 例如 AUTH A15167这里 返回OK说明成功了 然后 我们退出在登录就真的需要 redis-cli -h IP地…

嵌入式开发——PWM高级定时器

学习目标 加强掌握PWM开发流程理解定时器与通道的关系掌握多通道配置策略掌握互补PWM配置策略掌握定时器查询方式掌握代码抽取优化策略掌握PWM调试方式学习内容 需求 点亮8个灯,采用pwm的方式。 定时器 通道 <

vue3 新项目 - 搭建路由router

创建router/index 文件 main.ts 安装 router 然后 在 app下面 去 设置 路由出口

【贪心】买卖股票的最佳时机含手续费

/** 贪心&#xff1a;每次选取更低的价格买入&#xff0c;遇到高于买入的价格就出售(此时不一定是最大收益)。* 使用buy表示买入股票的价格和手续费的和。遍历数组&#xff0c;如果后面的股票价格加上手续费* 小于buy&#xff0c;说明有更低的买入价格更新buy。如…

深度神经网络下的风格迁移模型(C#)

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 这个是C#版本的&#xff0c;这里就只放出代码。VB.Net版本请参看 深度神经网络下的风格迁移模型-CSDN博客 斯坦福大学李飞飞团队的…

智能优化算法应用:基于天鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于天鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于天鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.天鹰算法4.实验参数设定5.算法结果6.参考文献7.MA…

Unity PlayerPrefs存储数据在Windows环境中本地存储的位置

Unity PlayerPrefs存储数据在Windows环境中本地存储的位置 一、编辑器模式下的PlayerPrefs存储位置1.Win r 输入regedit进入注册表界面2. HKEY_CURRENT_USER/Software/Unity3.CompanyName和ProjectName可以在Unity->Edit->Project Settings->Player中查看和设置 二、…

Vue3数据交互axios

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

Git系统有哪些优势

在现在的这个软件开发领域&#xff0c;版本控制是一项非常重要的工作。Git作为比较流行的分布式版本控制系统&#xff0c;他有着独特的优势成为了很多开发者们的首选。那Git系统都有哪些优势呢&#xff0c;下面我以自己的理解简单的介绍一下。 分布式版本控制的优势 Git用的是…

Java多线程、线程池及线程同步(synchronized关键字、悲观锁、乐观锁)

1.进程与线程定义 进程包含线程&#xff0c;如一个百度网盘进程&#xff0c;该进程的线程可以有上传&#xff0c;下载。 2.创建线程的三种方式 方式1-继承Thread类 方式2-实现Runnabled接口 1.常规写法 2.匿名内部类写法 方式3-实现Callable接口 示例代码&#xff1a; f1.get…

nginx 利用 error_page 实现自定义 404 跳转

文章目录 [toc]指定错误代码的 url 路径使用 response 来更改状态码使用 URL 重定向开始搞事情创建一个 404 文件配置 conf 文件通过 CURL 命令验证 error_page 以下内容&#xff0c;摘抄翻译自官网 语法格式 - error_page code ... [[response]] uri;上下文 - http, server, l…

【数据结构入门精讲 | 第十篇】考研408排序算法专项练习(二)

在上文中我们进行了排序算法的判断题、选择题的专项练习&#xff0c;在这一篇中我们将进行排序算法中编程题的练习。 目录 编程题R7-1 字符串的冒泡排序R7-1 抢红包R7-1 PAT排名汇总R7-2 统计工龄R7-1 插入排序还是堆排序R7-2 龙龙送外卖R7-3 家谱处理 编程题 R7-1 字符串的冒…

SpringSecurity6 | 失败后的跳转

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Java从入门到精通 ✨特色专栏: MySQL学习 🥭本文内容: SpringSecurity6 | 失败后的跳转 📚个人知识库: Leo知识库,欢迎大家访问 学习…

rk3588 之启动

目录 uboot版本配置修改编译 linux版本配置修改编译 启动sd卡启动制作spi 烧录 参考 uboot 版本 v2024.01-rc2 https://github.com/u-boot/u-boot https://github.com/rockchip-linux/rkbin 配置修改 使用这两个配置即可&#xff1a; orangepi-5-plus-rk3588_defconfig r…

高级人工智能之群体智能:蚁群算法

群体智能 鸟群&#xff1a; 鱼群&#xff1a; 1.基本介绍 蚁群算法&#xff08;Ant Colony Optimization, ACO&#xff09;是一种模拟自然界蚂蚁觅食行为的优化算法。它通常用于解决路径优化问题&#xff0c;如旅行商问题&#xff08;TSP&#xff09;。 蚁群算法的基本步骤…