< >
Home » ROS1与Interbotix系列机械臂教程 » ROS1与Interbotix系列机械臂教程-仿真-使用moveit控制

ROS1与Interbotix系列机械臂教程-仿真-使用moveit控制

文章说明

  • 本教程主要介绍在gazebo中使用moveit控制机械臂

操作步骤

  • 启动仿真中的moveit
$ roslaunch interbotix_xsarm_moveit_interface xsarm_moveit_interface.launch robot_model:=wx250s use_cpp_interface:=true use_fake:=true dof:=6 
use_cpp_interface:=true use_fake:=true
... logging to /home/ubuntu/.ros/log/846c0ad0-bb5b-11ee-b04b-cb4a99a4e119/ubuntu-8297.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://localhost:41749/

SUMMARY
========

PARAMETERS
 * /rosdistro: noetic
 * /rosversion: 1.16.0
 * /wx250s/joint_state_publisher/rate: 100
 * /wx250s/joint_state_publisher/source_list: ['move_group/fake...
 * /wx250s/move_group/allow_trajectory_execution: True
 * /wx250s/move_group/capabilities: 
 * /wx250s/move_group/controller_list: [{'name': 'fake_i...
 * /wx250s/move_group/disable_capabilities: 
 * /wx250s/move_group/interbotix_arm/default_planner_config: RRTConnect
 * /wx250s/move_group/interbotix_arm/planner_configs: ['SBL', 'EST', 'L...
 * /wx250s/move_group/interbotix_gripper/default_planner_config: RRTConnect
 * /wx250s/move_group/interbotix_gripper/planner_configs: ['SBL', 'EST', 'L...
 * /wx250s/move_group/jiggle_fraction: 0.05
 * /wx250s/move_group/max_range: 5.0
 * /wx250s/move_group/max_safe_path_cost: 1
 * /wx250s/move_group/moveit_controller_manager: moveit_fake_contr...
 * /wx250s/move_group/moveit_manage_controllers: True
 * /wx250s/move_group/octomap_resolution: 0.025
 * /wx250s/move_group/planner_configs/BFMT/balanced: 0
 * /wx250s/move_group/planner_configs/BFMT/cache_cc: 1
 * /wx250s/move_group/planner_configs/BFMT/extended_fmt: 1
 * /wx250s/move_group/planner_configs/BFMT/heuristics: 1
 * /wx250s/move_group/planner_configs/BFMT/nearest_k: 1
 * /wx250s/move_group/planner_configs/BFMT/num_samples: 1000
 * /wx250s/move_group/planner_configs/BFMT/optimality: 1
 * /wx250s/move_group/planner_configs/BFMT/radius_multiplier: 1.0
 * /wx250s/move_group/planner_configs/BFMT/type: geometric::BFMT
 * /wx250s/move_group/planner_configs/BKPIECE/border_fraction: 0.9
 * /wx250s/move_group/planner_configs/BKPIECE/failed_expansion_score_factor: 0.5
 * /wx250s/move_group/planner_configs/BKPIECE/min_valid_path_fraction: 0.5
 * /wx250s/move_group/planner_configs/BKPIECE/range: 0.0
 * /wx250s/move_group/planner_configs/BKPIECE/type: geometric::BKPIECE
 * /wx250s/move_group/planner_configs/BiEST/range: 0.0
 * /wx250s/move_group/planner_configs/BiEST/type: geometric::BiEST
 * /wx250s/move_group/planner_configs/BiTRRT/cost_threshold: 1e300
 * /wx250s/move_group/planner_configs/BiTRRT/frountier_node_ratio: 0.1
 * /wx250s/move_group/planner_configs/BiTRRT/frountier_threshold: 0.0
 * /wx250s/move_group/planner_configs/BiTRRT/init_temperature: 100
 * /wx250s/move_group/planner_configs/BiTRRT/range: 0.0
 * /wx250s/move_group/planner_configs/BiTRRT/temp_change_factor: 0.1
 * /wx250s/move_group/planner_configs/BiTRRT/type: geometric::BiTRRT
 * /wx250s/move_group/planner_configs/EST/goal_bias: 0.05
 * /wx250s/move_group/planner_configs/EST/range: 0.0
 * /wx250s/move_group/planner_configs/EST/type: geometric::EST
 * /wx250s/move_group/planner_configs/FMT/cache_cc: 1
 * /wx250s/move_group/planner_configs/FMT/extended_fmt: 1
 * /wx250s/move_group/planner_configs/FMT/heuristics: 0
 * /wx250s/move_group/planner_configs/FMT/nearest_k: 1
 * /wx250s/move_group/planner_configs/FMT/num_samples: 1000
 * /wx250s/move_group/planner_configs/FMT/radius_multiplier: 1.1
 * /wx250s/move_group/planner_configs/FMT/type: geometric::FMT
 * /wx250s/move_group/planner_configs/KPIECE/border_fraction: 0.9
 * /wx250s/move_group/planner_configs/KPIECE/failed_expansion_score_factor: 0.5
 * /wx250s/move_group/planner_configs/KPIECE/goal_bias: 0.05
 * /wx250s/move_group/planner_configs/KPIECE/min_valid_path_fraction: 0.5
 * /wx250s/move_group/planner_configs/KPIECE/range: 0.0
 * /wx250s/move_group/planner_configs/KPIECE/type: geometric::KPIECE
 * /wx250s/move_group/planner_configs/LBKPIECE/border_fraction: 0.9
 * /wx250s/move_group/planner_configs/LBKPIECE/min_valid_path_fraction: 0.5
 * /wx250s/move_group/planner_configs/LBKPIECE/range: 0.0
 * /wx250s/move_group/planner_configs/LBKPIECE/type: geometric::LBKPIECE
 * /wx250s/move_group/planner_configs/LBTRRT/epsilon: 0.4
 * /wx250s/move_group/planner_configs/LBTRRT/goal_bias: 0.05
 * /wx250s/move_group/planner_configs/LBTRRT/range: 0.0
 * /wx250s/move_group/planner_configs/LBTRRT/type: geometric::LBTRRT
 * /wx250s/move_group/planner_configs/LazyPRM/range: 0.0
 * /wx250s/move_group/planner_configs/LazyPRM/type: geometric::LazyPRM
 * /wx250s/move_group/planner_configs/LazyPRMstar/type: geometric::LazyPR...
 * /wx250s/move_group/planner_configs/PDST/type: geometric::PDST
 * /wx250s/move_group/planner_configs/PRM/max_nearest_neighbors: 10
 * /wx250s/move_group/planner_configs/PRM/type: geometric::PRM
 * /wx250s/move_group/planner_configs/PRMstar/type: geometric::PRMstar
 * /wx250s/move_group/planner_configs/ProjEST/goal_bias: 0.05
 * /wx250s/move_group/planner_configs/ProjEST/range: 0.0
 * /wx250s/move_group/planner_configs/ProjEST/type: geometric::ProjEST
 * /wx250s/move_group/planner_configs/RRT/goal_bias: 0.05
 * /wx250s/move_group/planner_configs/RRT/range: 0.0
 * /wx250s/move_group/planner_configs/RRT/type: geometric::RRT
 * /wx250s/move_group/planner_configs/RRTConnect/range: 0.0
 * /wx250s/move_group/planner_configs/RRTConnect/type: geometric::RRTCon...
 * /wx250s/move_group/planner_configs/RRTstar/delay_collision_checking: 1
 * /wx250s/move_group/planner_configs/RRTstar/goal_bias: 0.05
 * /wx250s/move_group/planner_configs/RRTstar/range: 0.0
 * /wx250s/move_group/planner_configs/RRTstar/type: geometric::RRTstar
 * /wx250s/move_group/planner_configs/SBL/range: 0.0
 * /wx250s/move_group/planner_configs/SBL/type: geometric::SBL
 * /wx250s/move_group/planner_configs/SPARS/dense_delta_fraction: 0.001
 * /wx250s/move_group/planner_configs/SPARS/max_failures: 1000
 * /wx250s/move_group/planner_configs/SPARS/sparse_delta_fraction: 0.25
 * /wx250s/move_group/planner_configs/SPARS/stretch_factor: 3.0
 * /wx250s/move_group/planner_configs/SPARS/type: geometric::SPARS
 * /wx250s/move_group/planner_configs/SPARStwo/dense_delta_fraction: 0.001
 * /wx250s/move_group/planner_configs/SPARStwo/max_failures: 5000
 * /wx250s/move_group/planner_configs/SPARStwo/sparse_delta_fraction: 0.25
 * /wx250s/move_group/planner_configs/SPARStwo/stretch_factor: 3.0
 * /wx250s/move_group/planner_configs/SPARStwo/type: geometric::SPARStwo
 * /wx250s/move_group/planner_configs/STRIDE/degree: 16
 * /wx250s/move_group/planner_configs/STRIDE/estimated_dimension: 0.0
 * /wx250s/move_group/planner_configs/STRIDE/goal_bias: 0.05
 * /wx250s/move_group/planner_configs/STRIDE/max_degree: 18
 * /wx250s/move_group/planner_configs/STRIDE/max_pts_per_leaf: 6
 * /wx250s/move_group/planner_configs/STRIDE/min_degree: 12
 * /wx250s/move_group/planner_configs/STRIDE/min_valid_path_fraction: 0.2
 * /wx250s/move_group/planner_configs/STRIDE/range: 0.0
 * /wx250s/move_group/planner_configs/STRIDE/type: geometric::STRIDE
 * /wx250s/move_group/planner_configs/STRIDE/use_projected_distance: 0
 * /wx250s/move_group/planner_configs/TRRT/frountierNodeRatio: 0.1
 * /wx250s/move_group/planner_configs/TRRT/frountier_threshold: 0.0
 * /wx250s/move_group/planner_configs/TRRT/goal_bias: 0.05
 * /wx250s/move_group/planner_configs/TRRT/init_temperature: 10e-6
 * /wx250s/move_group/planner_configs/TRRT/k_constant: 0.0
 * /wx250s/move_group/planner_configs/TRRT/max_states_failed: 10
 * /wx250s/move_group/planner_configs/TRRT/min_temperature: 10e-10
 * /wx250s/move_group/planner_configs/TRRT/range: 0.0
 * /wx250s/move_group/planner_configs/TRRT/temp_change_factor: 2.0
 * /wx250s/move_group/planner_configs/TRRT/type: geometric::TRRT
 * /wx250s/move_group/planning_plugin: ompl_interface/OM...
 * /wx250s/move_group/planning_scene_monitor/publish_geometry_updates: True
 * /wx250s/move_group/planning_scene_monitor/publish_planning_scene: True
 * /wx250s/move_group/planning_scene_monitor/publish_state_updates: True
 * /wx250s/move_group/planning_scene_monitor/publish_transforms_updates: True
 * /wx250s/move_group/request_adapters: default_planner_r...
 * /wx250s/move_group/sensors: []
 * /wx250s/move_group/start_state_max_bounds_error: 0.1
 * /wx250s/move_group/trajectory_execution/allowed_execution_duration_scaling: 4.0
 * /wx250s/move_group/trajectory_execution/allowed_goal_duration_margin: 0.5
 * /wx250s/move_group/trajectory_execution/allowed_start_tolerance: 0.01
 * /wx250s/robot_description: <?xml version="1....
 * /wx250s/robot_description_kinematics/interbotix_arm/kinematics_solver: lma_kinematics_pl...
 * /wx250s/robot_description_kinematics/interbotix_arm/kinematics_solver_search_resolution: 0.005
 * /wx250s/robot_description_kinematics/interbotix_arm/kinematics_solver_timeout: 0.005
 * /wx250s/robot_description_kinematics/interbotix_arm/position_only_ik: False
 * /wx250s/robot_description_planning/default_acceleration_scaling_factor: 1.0
 * /wx250s/robot_description_planning/default_velocity_scaling_factor: 1.0
 * /wx250s/robot_description_planning/joint_limits/elbow/has_acceleration_limits: True
 * /wx250s/robot_description_planning/joint_limits/elbow/has_velocity_limits: True
 * /wx250s/robot_description_planning/joint_limits/elbow/max_acceleration: 5
 * /wx250s/robot_description_planning/joint_limits/elbow/max_velocity: 2.35
 * /wx250s/robot_description_planning/joint_limits/forearm_roll/has_acceleration_limits: True
 * /wx250s/robot_description_planning/joint_limits/forearm_roll/has_velocity_limits: True
 * /wx250s/robot_description_planning/joint_limits/forearm_roll/max_acceleration: 5
 * /wx250s/robot_description_planning/joint_limits/forearm_roll/max_velocity: 2.35
 * /wx250s/robot_description_planning/joint_limits/left_finger/has_acceleration_limits: True
 * /wx250s/robot_description_planning/joint_limits/left_finger/has_velocity_limits: True
 * /wx250s/robot_description_planning/joint_limits/left_finger/max_acceleration: 0.01
 * /wx250s/robot_description_planning/joint_limits/left_finger/max_velocity: 1
 * /wx250s/robot_description_planning/joint_limits/right_finger/has_acceleration_limits: True
 * /wx250s/robot_description_planning/joint_limits/right_finger/has_velocity_limits: True
 * /wx250s/robot_description_planning/joint_limits/right_finger/max_acceleration: 0.01
 * /wx250s/robot_description_planning/joint_limits/right_finger/max_velocity: 1
 * /wx250s/robot_description_planning/joint_limits/shoulder/has_acceleration_limits: True
 * /wx250s/robot_description_planning/joint_limits/shoulder/has_velocity_limits: True
 * /wx250s/robot_description_planning/joint_limits/shoulder/max_acceleration: 5
 * /wx250s/robot_description_planning/joint_limits/shoulder/max_velocity: 2.35
 * /wx250s/robot_description_planning/joint_limits/waist/has_acceleration_limits: True
 * /wx250s/robot_description_planning/joint_limits/waist/has_velocity_limits: True
 * /wx250s/robot_description_planning/joint_limits/waist/max_acceleration: 5
 * /wx250s/robot_description_planning/joint_limits/waist/max_velocity: 2.35
 * /wx250s/robot_description_planning/joint_limits/wrist_angle/has_acceleration_limits: True
 * /wx250s/robot_description_planning/joint_limits/wrist_angle/has_velocity_limits: True
 * /wx250s/robot_description_planning/joint_limits/wrist_angle/max_acceleration: 5
 * /wx250s/robot_description_planning/joint_limits/wrist_angle/max_velocity: 2.35
 * /wx250s/robot_description_planning/joint_limits/wrist_rotate/has_acceleration_limits: True
 * /wx250s/robot_description_planning/joint_limits/wrist_rotate/has_velocity_limits: True
 * /wx250s/robot_description_planning/joint_limits/wrist_rotate/max_acceleration: 5
 * /wx250s/robot_description_planning/joint_limits/wrist_rotate/max_velocity: 2.35
 * /wx250s/robot_description_semantic: <?xml version="1....
 * /wx250s/rviz_ubuntu_8297_2613924948350264319/interbotix_arm/kinematics_solver: lma_kinematics_pl...
 * /wx250s/rviz_ubuntu_8297_2613924948350264319/interbotix_arm/kinematics_solver_search_resolution: 0.005
 * /wx250s/rviz_ubuntu_8297_2613924948350264319/interbotix_arm/kinematics_solver_timeout: 0.005
 * /wx250s/rviz_ubuntu_8297_2613924948350264319/interbotix_arm/position_only_ik: False

NODES
  /wx250s/
    joint_state_publisher (joint_state_publisher/joint_state_publisher)
    move_group (moveit_ros_move_group/move_group)
    moveit_interface (interbotix_moveit_interface/moveit_interface)
    moveit_interface_gui (interbotix_moveit_interface/moveit_interface_gui)
    robot_state_publisher (robot_state_publisher/robot_state_publisher)
    rviz_ubuntu_8297_2613924948350264319 (rviz/rviz)

auto-starting new master
process[master]: started with pid [8310]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 846c0ad0-bb5b-11ee-b04b-cb4a99a4e119
process[rosout-1]: started with pid [8320]
started core service [/rosout]
process[wx250s/joint_state_publisher-2]: started with pid [8327]
process[wx250s/robot_state_publisher-3]: started with pid [8328]
process[wx250s/move_group-4]: started with pid [8329]
process[wx250s/rviz_ubuntu_8297_2613924948350264319-5]: started with pid [8330]
process[wx250s/moveit_interface-6]: started with pid [8331]
process[wx250s/moveit_interface_gui-7]: started with pid [8337]
[ WARN] [1706171224.536054981]: Falling back to using the move_group node's namespace (deprecated Melodic behavior).
[ INFO] [1706171224.543181585]: Loading robot model 'wx250s'...
[ INFO] [1706171224.543225180]: No root/virtual joint specified in SRDF. Assuming fixed joint
[ INFO] [1706171224.571768279]: waitForService: Service [/wx250s/get_planning_scene] has not been advertised, waiting...
[ INFO] [1706171224.640911280]: Publishing maintained planning scene on 'monitored_planning_scene'
[ INFO] [1706171224.642752990]: Listening to 'joint_states' for joint states
[ INFO] [1706171224.645900736]: Listening to '/wx250s/attached_collision_object' for attached collision objects
[ INFO] [1706171224.645947305]: Starting planning scene monitor
[ INFO] [1706171224.647585199]: Listening to '/wx250s/planning_scene'
[ INFO] [1706171224.647620885]: Starting world geometry update monitor for collision objects, attached objects, octomap updates.
[ INFO] [1706171224.649170628]: Listening to '/wx250s/collision_object'
[ INFO] [1706171224.650972708]: Listening to '/wx250s/planning_scene_world' for planning scene world geometry
[ INFO] [1706171224.655343641]: rviz version 1.14.20
[ INFO] [1706171224.655392053]: compiled against Qt version 5.12.8
[ INFO] [1706171224.655455189]: compiled against OGRE version 1.9.0 (Ghadamon)
[ INFO] [1706171224.656751452]: Loading planning pipeline ''
[ INFO] [1706171224.663402798]: Forcing OpenGl version 0.
[ INFO] [1706171224.705329301]: Using planning interface 'OMPL'
[ INFO] [1706171224.707797715]: Param 'default_workspace_bounds' was not set. Using default value: 10
[ INFO] [1706171224.708118674]: Param 'start_state_max_bounds_error' was set to 0.1
[ INFO] [1706171224.708409644]: Param 'start_state_max_dt' was not set. Using default value: 0.5
[ INFO] [1706171224.708731938]: Param 'start_state_max_dt' was not set. Using default value: 0.5
[ INFO] [1706171224.709016090]: Param 'jiggle_fraction' was set to 0.05
[ INFO] [1706171224.709314445]: Param 'max_sampling_attempts' was not set. Using default value: 100
[ INFO] [1706171224.709365131]: Using planning request adapter 'Add Time Parameterization'
[ INFO] [1706171224.709402513]: Using planning request adapter 'Fix Workspace Bounds'
[ INFO] [1706171224.709446600]: Using planning request adapter 'Fix Start State Bounds'
[ INFO] [1706171224.709481239]: Using planning request adapter 'Fix Start State In Collision'
[ INFO] [1706171224.709494626]: Using planning request adapter 'Fix Start State Path Constraints'
[ INFO] [1706171224.714593208]: Fake controller 'fake_interbotix_arm_controller' with joints [ waist shoulder elbow forearm_roll wrist_angle wrist_rotate ]
[ INFO] [1706171224.714966906]: Fake controller 'fake_interbotix_gripper_controller' with joints [ left_finger ]
[ INFO] [1706171224.715286977]: Returned 2 controllers in list
[ INFO] [1706171224.724965478]: Trajectory execution is managing controllers
[ INFO] [1706171224.725016230]: MoveGroup debug mode is OFF
Loading 'move_group/ApplyPlanningSceneService'...
Loading 'move_group/ClearOctomapService'...
Loading 'move_group/MoveGroupCartesianPathService'...
Loading 'move_group/MoveGroupExecuteTrajectoryAction'...
Loading 'move_group/MoveGroupGetPlanningSceneService'...
Loading 'move_group/MoveGroupKinematicsService'...
Loading 'move_group/MoveGroupMoveAction'...
Loading 'move_group/MoveGroupPickPlaceAction'...
[ INFO] [1706171224.759504864]: waitForService: Service [/wx250s/get_planning_scene] is now available.
[ INFO] [1706171224.768626250]: Loading robot model 'wx250s'...
[ INFO] [1706171224.768684228]: No root/virtual joint specified in SRDF. Assuming fixed joint
Loading 'move_group/MoveGroupPlanService'...
Loading 'move_group/MoveGroupQueryPlannersService'...
Loading 'move_group/MoveGroupStateValidationService'...
[ INFO] [1706171224.773301243]: 

********************************************************
* MoveGroup using: 
*     - ApplyPlanningSceneService
*     - ClearOctomapService
*     - CartesianPathService
*     - ExecuteTrajectoryAction
*     - GetPlanningSceneService
*     - KinematicsService
*     - MoveAction
*     - PickPlaceAction
*     - MotionPlanService
*     - QueryPlannersService
*     - StateValidationService
********************************************************

[ INFO] [1706171224.773614600]: MoveGroup context using planning plugin ompl_interface/OMPLPlanner
[ INFO] [1706171224.773647988]: MoveGroup context initialization complete

You can start planning now!

[ INFO] [1706171225.523774319]: Stereo is NOT SUPPORTED
[ INFO] [1706171225.523875395]: OpenGL device: SVGA3D; build: RELEASE;  LLVM;
[ INFO] [1706171225.523911268]: OpenGl version: 2.1 (GLSL 1.2).
[ INFO] [1706171225.977496484]: Ready to take commands for planning group interbotix_arm.
[ INFO] [1706171226.486626401]: Reference frame: world
[ INFO] [1706171226.486838584]: End effector link: wx250s/ee_gripper_link
[ INFO] [1706171229.156993809]: Loading robot model 'wx250s'...
[ INFO] [1706171229.157075574]: No root/virtual joint specified in SRDF. Assuming fixed joint
[ INFO] [1706171229.240663197]: Starting planning scene monitor
[ INFO] [1706171229.242394099]: Listening to '/wx250s/move_group/monitored_planning_scene'
[ INFO] [1706171229.283486107]: Constructing new MoveGroup connection for group 'interbotix_arm' in namespace ''
[ INFO] [1706171230.500019661]: Ready to take commands for planning group interbotix_arm.

请输入图片描述

  • moveit启动成功之后,会弹出一个gui窗口

请输入图片描述

  • 可以通过调整gui中滑块来指定夹具的位置和方向

    • Plan Pose - MoveIt尝试规划夹具移动所需位置和方向的轨迹
    • Plan Position - MoveIt尝试规划夹具移动所需位置的轨迹,忽略具体方向
    • Plan Orientation -MoveIt尝试规划夹具移动所需方向的轨迹,忽略具体位置
    • Execute - 执行规划到的轨迹
    • Reset - 重置gui中的所有参数值为0

请输入图片描述

有时候MoveIt会出现无法成功有效轨迹的情况。其主要有两个可能:一是机械臂无法在物理上到达所需的位置,二是MoveIt生成的随机轨迹是不能执行的。如果很明显该位置在物理上可以到达,请多点击按钮重新规划轨迹

指定位置和方向先比较于仅是指定位置时,那找到有效的轨迹要困难得多,特别是对于较低自由度的机械臂

  • 通过下图,可更一步了解启动文件的其他参数

请输入图片描述

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros1与interbotix系列机械臂教程