Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not able to simulate the planned moveit path in gazebo #81

Open
soumy97 opened this issue Nov 14, 2022 · 0 comments
Open

Not able to simulate the planned moveit path in gazebo #81

soumy97 opened this issue Nov 14, 2022 · 0 comments

Comments

@soumy97
Copy link

soumy97 commented Nov 14, 2022

I am trying to simulate the aubo i5 arm using ROS MoveIt in Gazebo. Initially, I am able to plan the path movement of my arm. But once I click on "Execute", it shows me

[ERROR] [1667725586.193688574, 20.055000000]: Unable to identify any set of controllers that can actuate the specified joints: [ foreArm_joint shoulder_joint upperArm_joint wrist1_joint wrist2_joint wrist3_joint ]
[ERROR] [1667725586.193709294, 20.055000000]: Known controllers and their joints:

I have tried a lot of things centered around this discussion but nothing is working. Any help would be appreciated. The necessary files are below:
ros_controllers.yaml

 auboi5_controller:
  type: position_controllers/JointTrajectoryController
  default: True
  joints:
    - foreArm_joint
    - shoulder_joint
    - upperArm_joint
    - wrist1_joint
    - wrist2_joint
    - wrist3_joint
  gains:
    foreArm_joint:
      p: 100
      d: 1
      i: 1
      i_clamp: 1
    shoulder_joint:
      p: 100
      d: 1
      i: 1
      i_clamp: 1
    upperArm_joint:
      p: 100
      d: 1
      i: 1
      i_clamp: 1
    wrist1_joint:
      p: 100
      d: 1
      i: 1
      i_clamp: 1
    wrist2_joint:
      p: 100
      d: 1
      i: 1
      i_clamp: 1
    wrist3_joint:
      p: 100
      d: 1
      i: 1
      i_clamp: 1
controller_list:
  - name: auboi5_controller
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    default: True
    joints:
      - foreArm_joint
      - shoulder_joint
      - upperArm_joint
      - wrist1_joint
      - wrist2_joint
      - wrist3_joint

gazebo_controllers.yaml

 # Publish joint_states
joint_state_controller:
  type: joint_state_controller/JointStateController
  publish_rate: 50

simple_moveit_controllers.yaml

 controller_list:
  - name: auboi5_controller
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    default: True
    joints:
      - foreArm_joint
      - shoulder_joint
      - upperArm_joint
      - wrist1_joint
      - wrist2_joint
      - wrist3_joint

demo_gazebo.launch

<launch>
<!--specify the planning pipeline-->
<arg name="pipeline" default="ompl" />
<!-- Gazebo specific options -->
<arg name="gazebo_gui" default="true"/>
<arg name="paused" default="false"/>
<!-- launch the gazebo simulator and spawn the robot -->
<include file="$(dirname)/gazebo.launch">
<arg name="paused" value="$(arg paused)"/>
<arg name="gazebo_gui" value="$(arg gazebo_gui)"/>
</include>
<include file="$(dirname)/demo.launch" pass_all_args="true">
<!-- robot description is loaded by gazebo.launch, to enable Gazebo features -->
<arg name="load_robot_description" value="false" />
<arg name="moveit_controller_manager" value="ros_control" />
</include>
<node name="ros_control_moveit_controller_manager" pkg="controller_manager" type="controller_manager" respawn="false" output="screen" args="spawn joint_state_controller auboi5_controller" />
</launch>

demo.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 aubo_moveit)/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 -->
<arg name="load_robot_description" default="true"/>
<!-- Choose controller manager: fake, simple, or ros_control -->
<arg name="moveit_controller_manager" default="fake" />
<!-- Set execution mode for fake execution controllers -->
<arg name="fake_execution_type" default="interpolate" />
<!-- By default, hide joint_state_publisher's GUI in 'fake' controller_manager mode -->
<arg name="use_gui" default="false" />
<arg name="use_rviz" default="true" />
<!-- If needed, broadcast static tf for robot root -->
<group if="$(eval arg('moveit_controller_manager') == 'fake')">
<!-- We do not have a real robot connected, so publish fake joint states via a joint_state_publisher MoveIt's fake controller's joint states are considered via the 'source_list' parameter -->
<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>
</node>
<!-- If desired, a GUI version is available allowing to move the simulated robot around manually This corresponds to moving around the real robot without the use of MoveIt. ->
<node name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" if="$(arg use_gui)"*gt;
<rosparam param="source_list">[move_group/fake_controller_joint_states]></rosparam>
</node>
<!-- Given the published joint states, publish tf for the robot links -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="true" output="screen" />
</group>
<!-- Run the main MoveIt executable without trajectory execution (we do not have controllers configured by default) -->
<include file="$(dirname)/move_group.launch">
<arg name="allow_trajectory_execution" value="true"/>
<arg name="moveit_controller_manager" value="$(arg moveit_controller_manager)" />
<arg name="fake_execution_type" value="$(arg fake_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="$(dirname)/moveit_rviz.launch" if="$(arg use_rviz)">
<arg name="rviz_config" value="$(dirname)/moveit.rviz"/>
<arg name="debug" value="$(arg debug)"/>
</include>
<!-- If database loading was enabled, start mongodb as well -->
<include file="$(dirname)/default_warehouse_db.launch" if="$(arg db)">
<arg name="moveit_warehouse_database_path" value="$(arg db_path)"/>
</include>
</launch>

gazebo.launch

<?xml version="1.0"?>
<launch>
<arg name="paused" default="false"/>
<arg name="gazebo_gui" default="true"/>
<arg name="initial_joint_positions" doc="Initial joint configuration of the robot" default=" -J foreArm_joint 0 -J shoulder_joint 0 -J upperArm_joint 0 -J wrist1_joint 0 -J wrist2_joint 0 -J wrist3_joint 0"/>
<!-- startup simulated world -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" default="worlds/empty.world"/>
<arg name="paused" value="true"/>
<arg name="gui" value="$(arg gazebo_gui)"/>
</include>
<!-- send robot urdf to param server -->
<param name="robot_description" textfile="$(find aubo)/urdf/aubo_i5.urdf" />
<!-- unpause only after loading robot model -->
<arg name="unpause" value="$(eval '' if arg('paused') else '-unpause')" />
<!-- push robot_description to factory and spawn robot in gazebo at the origin, change x,y,z arguments to spawn in a different position -->
<arg name="world_pose" value="-x 0 -y 0 -z 0" />
<node name="spawn_gazebo_model" pkg="gazebo_ros" type="spawn_model" args="-urdf -param robot_description -model robot $(arg unpause) $(arg world_pose) $(arg initial_joint_positions)" respawn="false" output="screen" />
<!-- Load joint controller parameters for Gazebo -->
<rosparam file="$(find aubo_moveit)/config/gazebo_controllers.yaml" />
<!-- Spawn Gazebo ROS controllers -->
<node name="gazebo_controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="joint_state_controller auboi5_controller" />
<!-- Load ROS controllers -->
<include file="$(dirname)/ros_controllers.launch"/>
</launch>

ros_controllers.launch

<?xml version="1.0"?>
<launch>
<!-- Load joint controller configurations from YAML file to parameter server -->
<rosparam file="$(find aubo_moveit)/config/ros_controllers.yaml" command="load"/>
<!-- Load the controllers -->
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="joint_state_controller auboi5_controller"/>
</launch>

ros_control_moveit_controller_manager.launch.xml

<launch>
<!-- Define MoveIt controller manager plugin -->
<param name="moveit_controller_manager" value="moveit_ros_control_interface::MoveItControllerManager" />
<!-- Load controller list to the parameter server -->
<rosparam file="$(find aubo_moveit)/config/simple_moveit_controllers.yaml" />
< </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="rviz_config" default="" />
<arg if="$(eval rviz_config=='')" name="command_args" value="" />
<arg unless="$(eval rviz_config=='')" name="command_args" value="-d $(arg rviz_config)" />
<node name="$(anon rviz)" launch-prefix="$(arg launch_prefix)" pkg="rviz" type="rviz" respawn="false" args="$(arg command_args)" output="screen">
</node>
</launch>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant