How to connect the MoveIt! planning with Gazebo simulation
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: https://github.com/kkumpa/ros-robotic...
How I got to this code:
- I have build a robot model in URDF format. The robot consists of two moving joints. (robotic_arm_description)
- Following this tutorial, I have used the MoveIt! Setup Assistant 2.0 to generate moveit config files. (robotic_arm_moveit_config)
- I clicked "Generate Collision Matrix" in the Self-Collisions tab. I didn't uncheck anything. Left it as it was generated.
- 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.
- 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.
- I added some robot poses
- I set the end
effector_link
as the end effector in the End Effectors tab. - I have created the
forearm_position_controller
set asposition_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) - And I have generated the files.
- I have followed this tutorial to set the Gazebo part of the package.
- Created the
controllers.yaml
- 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) - uncommented the octomap_frame parameter in the
robotic_arm_moveit_config/launch/sensor_manager.launch.xml
file and set the frame tomap
. - Created a new
config/robotic_arm_control.yaml
andlaunch/robotic_arm_control.launch
files in the robot control package.
- Created the
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?
EDIT 1
I have change the joint interface to effort_controllers ...