赞
踩
1、修改XXX.moveit_config/config/ros_controllers.yaml
- # MoveIt-specific simulation settings
- moveit_sim_hw_interface:
- joint_model_group: controllers_initial_group_
- joint_model_group_pose: controllers_initial_pose_
- # Settings for ros_control control loop
- generic_hw_control_loop:
- loop_hz: 300
- cycle_time_error_threshold: 0.01
- # Settings for ros_control hardware interface
- hardware_interface:
- joints:
- - magician_joint1
- - magician_joint2
- - magician_joint3
- 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: magician_arm_controller
- action_ns: follow_joint_trajectory
- default: True
- type: FollowJointTrajectory
- joints:
- - magician_joint1
- - magician_joint2
- - magician_joint3

2、修改XXX.moveit_config/launch/ros_controllers.yaml
- <?xml version="1.0"?>
- <launch>
-
- <!-- Load joint controller configurations from YAML file to parameter server -->
- <rosparam file="$(find magician_moveit_config)/config/ros_controllers.yaml" command="load"/>
-
- <!-- Load the controllers -->
- <node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
- output="screen" args=""/>
-
- </launch>
3、修改XXX.moveit_config/launch/moveit_rviz.launch
- <launch>
-
- <arg name="debug" default="false" />
- <arg unless="$(arg debug)" name="launch_prefix" value="" />
- <arg if="$(arg debug)" name="launch_prefix" value="gdb --ex run --args" />
-
- <arg name="config" default="false" />
- <arg unless="$(arg config)" name="command_args" value="" />
- <arg if="$(arg config)" name="command_args" value="-d $(find magician_moveit_config)/launch/moveit.rviz" />
-
- <node name="$(anon rviz)" launch-prefix="$(arg launch_prefix)" pkg="rviz" type="rviz" respawn="false"
- args="$(arg command_args)" output="screen">
- <rosparam command="load" file="$(find magician_moveit_config)/config/kinematics.yaml"/>
- </node>
-
- </launch>

4、在XXX.moveit_config/launch/move_group.launch修改一点小细节
- <launch>
-
- <include file="$(find magician_moveit_config)/launch/planning_context.launch" />
-
- <!-- GDB Debug Option -->
- <arg name="debug" default="false" />
- <arg unless="$(arg debug)" name="launch_prefix" value="" />
- <arg if="$(arg debug)" name="launch_prefix"
- value="gdb -x $(find magician_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="allow_trajectory_execution" default="true"/>
- <arg name="fake_execution" default="false"/>
- <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) -->
- <!--
- <arg name="capabilities" value="
- a_package/AwsomeMotionPlanningCapability
- another_package/GraspPlanningPipeline
- " />
- -->
-
- <!-- inhibit these default MoveGroup capabilities (space seperated) -->
- <!--
- <arg name="disable_capabilities" value="
- move_group/MoveGroupKinematicsService
- move_group/ClearOctomapService
- " />
- -->
-
- <!-- Planning Functionality -->
- <include ns="move_group" file="$(find magician_moveit_config)/launch/planning_pipeline.launch.xml">
- <arg name="pipeline" value="ompl" />
- </include>
-
- <!-- Trajectory Execution Functionality -->
- <include ns="move_group" file="$(find magician_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="magician" unless="$(arg fake_execution)"/>
- <arg name="moveit_controller_manager" value="fake" if="$(arg fake_execution)"/>
- </include>
-
- <!-- Sensors Functionality -->
- <include ns="move_group" file="$(find magician_moveit_config)/launch/sensor_manager.launch.xml" if="$(arg allow_trajectory_execution)">
- <arg name="moveit_sensor_manager" value="magician" />
- </include>
-
- <!-- Start the actual move_group node/action server -->
- <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)" />
- <param name="capabilities" value="$(arg capabilities)"/>
- <param name="disable_capabilities" value="$(arg disable_capabilities)"/>
-
-
- <!-- Publish the planning scene of the physical robot so that rviz plugin can know actual robot -->
- <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、修改trajectory_execution.launch.xml
- <launch>
-
- <!-- This file makes it easy to include the settings for trajectory execution -->
-
- <!-- 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="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 -->
- <arg name="moveit_controller_manager" default="magician" />
- <include file="$(find magician_moveit_config)/launch/$(arg moveit_controller_manager)_moveit_controller_manager.launch.xml" />
-
- </launch>

6、创建magician_moveit_controller_manager.launch.xml文件,并且启动ros_controllers.yaml
- <launch>
-
- <!-- loads moveit_controller_manager on the parameter server which is taken as argument
- if no argument is passed, moveit_simple_controller_manager will be set -->
- <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 -->
- <rosparam file="$(find magician_moveit_config)/config/ros_controllers.yaml"/>
- </launch>
7、新建一个功能包,里面放置启动文件
- <?xml version="1.0"?>
- <launch>
- <arg name="paused" default="true"/>
- <arg name="gazebo_gui" default="true"/>
- <arg name="urdf_path" default="$(find magician_description)/urdf/magician.urdf.xacro"/>
-
- <!-- startup simulated world -->
- <include file="$(find gazebo_ros)/launch/empty_world.launch">
- <arg name="world_name" default="worlds/empty.world"/>
- <arg name="paused" value="$(arg paused)"/>
- <arg name="gui" value="$(arg gazebo_gui)"/>
- </include>
-
- <!-- send robot urdf to param server -->
- <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find magician_description)/urdf/magician.urdf.xacro'" />
-
- <!-- push robot_description to factory and spawn robot in gazebo at the origin, change x,y,z arguments to spawn in a different position -->
- <node name="spawn_model" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
- args="-urdf -model magician
- -param robot_description
- -x 0
- -y 0
- -z 0.14
- -J magician_joint1 0
- -J magician_joint2 0.785
- -J magician_joint3 0.785
- -unpause"/>
-
- <rosparam file="$(find magician_description)/config/joint_state_controller.yaml" command="load"/>
- <node name="joint_state_controller_spawner" pkg="controller_manager" type="controller_manager" args="spawn joint_state_controller" respawn="false" output="screen"/>
-
- <rosparam file="$(find magician_description)/config/magician_arm_controller.yaml" command="load"/>
- <node name="elfin_arm_controller_spawner" pkg="controller_manager" type="controller_manager" args="spawn magician_arm_controller" respawn="false" output="screen"/>
-
- <!-- # The planning and execution components of MoveIt! configured to
- # publish the current configuration of the robot (simulated or real)
- # and the current state of the world as seen by the planner
- -->
- <include file="$(find magician_moveit_config)/launch/move_group.launch">
- <arg name="publish_monitored_planning_scene" value="true" />
- </include>
- <!-- # The visualization component of MoveIt! -->
- <arg name="display" default="true"/>
- <include file="$(find magician_moveit_config)/launch/moveit_rviz.launch" if="$(arg display)">
- <arg name="config" value="true"/>
- </include>
-
- </launch>

最后编译一下,启动launch文件。
到这里moveit和gazebo的联动到此结束。
我们通过以上部分举一反三,其他的机械臂在moveit和gazebo联动时也是这样配置的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。