Gazebo | Ignition | Community
Ask Your Question

How to connect the MoveIt! planning with Gazebo simulation

asked 2019-04-23 08:20:54 -0500

kumpakri gravatar image

updated 2019-04-24 04:46:04 -0500

I am trying for several days to achieve a connection between MoveIt! and Gazebo. I tried to follow various tutorials and find the right usage in other people repositories. I wasn't able to get to a working prototype and I run out of options what to try.

My current code is in this repository:

How I got to this code:

  1. I have build a robot model in URDF format. The robot consists of two moving joints. (robotic_arm_description) image description
  2. Following this tutorial, I have used the MoveIt! Setup Assistant 2.0 to generate moveit config files. (robotic_arm_moveit_config)
    1. I clicked "Generate Collision Matrix" in the Self-Collisions tab. I didn't uncheck anything. Left it as it was generated.
    2. I added a virtual joint in the Virtual Joints tab. I don't know what is this good for. I saw it in one of the tutorial. I don't know what should be the parent frame and the child link.
    3. I added the planning group consisting of the two revolute joints and the fixed joint fixing the long arm to the second revolute joint. And a planning group containing the end effector link.
    4. I added some robot poses
    5. I set the end effector_link as the end effector in the End Effectors tab.
    6. I have created the forearm_position_controller set as position_controllers/JointTrajectoryController (that is the type of the joints in the group) and assigned to it the forearm planning group (two revolute joints and one fixed)
    7. And I have generated the files.
  3. I have followed this tutorial to set the Gazebo part of the package.
    1. Created the controllers.yaml
    2. My robotic_arm_moveit_config/launch/robotic_arm_moveit_controller_manager.launch.xml already had some content which was almost the same to what the tutorial said to write into it, so I rewrite the one different name (ros_controllers.yaml to controllers.yaml)
    3. uncommented the octomap_frame parameter in the robotic_arm_moveit_config/launch/sensor_manager.launch.xml file and set the frame to map.
    4. Created a new config/robotic_arm_control.yaml and launch/robotic_arm_control.launch files in the robot control package.

When I run the gazebo simulation using roslaunch robotic_arm_gazebo empty_world.launch command and run the rviz using the roslaunch robotic_arm_moveit_config moveit_planning_execution.launch command, I can find the predefined positions in the planning manager in rviz and plan the movement from one to another, but when I click 'execute', the robotic arm in Gazebo doesn't move. Not even the arm inside Gazebo changes it's initial position. When I apply a force on some of the robot arm links in gazebo, the controller just keeps the pose in initial position.

I have toyed with other people's robotic arm, there the behavior of the arm in gazebo was such, that without the rviz the robotic arm falls to the ground and when you open rviz, the pose of the robotic arm in the rviz corresponds to the pose in Gazebo.

What am I missing? What is wrong in my package?


I have change the joint interface to effort_controllers ... (more)

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted

answered 2019-04-24 08:35:06 -0500

kumpakri gravatar image

I have solved this problem already and the repository now holds the working project.

I have changed the hardware interface to effort controllers and add launching of the controller together with the moveit and included the robotic_arm_moveit_config/launch/planning_context.lauch script. I used this repository as the reference, since the code in there worked for me. And I just tried to fit it on my own robot.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2019-04-23 08:20:54 -0500

Seen: 8,544 times

Last updated: Apr 24 '19