Manipulator arm in gazebo goes bonkers and keeps spinning whenever I include gazebo_ros2_controller in urdf.
Hello everyone,
I am working with "ros2 (humble)" and trying to simulate openmanipulator arm in Gazebo. I can spawn it in gazebo, but when I include "gazeboros2_controller", it keeps moving everywhere like shown in this photo. C:\fakepath\Noworldjoint-min.png. It keeps rotating. Sometimes it flies in the air as well. I tried introducing a fixed joint (I thought it might stop rotating if I do so). When I did that, as you can see in the screenshot, the base link stays fixed to ground, other links start flying.C:\fakepath\Fixedworldjoint-min.png. I dont know if this the problem related to gazebo or I am giving some false input. The URDF file that I am using:
Link and Joints part of URDF:
<?xml version="1.0"?>
<!-- Open_Manipulator Chain -->
<!-- <robot xmlns:xacro="http://ros.org/wiki/xacro"> -->
<robot name="open_manipulator" xmlns:xacro="http://ros.org/wiki/xacro">
<!-- Link 1 -->
<link name="link1">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="grey"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
<inertial>
<origin xyz="3.0876154e-04 0.0000000e+00 -1.2176461e-04" />
<mass value="7.9119962e-02" />
<inertia ixx="1.2505234e-05" ixy="0.0" ixz="-1.7855208e-07"
iyy="2.1898364e-05" iyz="0.0"
izz="1.9267361e-05" />
</inertial>
</link>
<!-- Joint 1 -->
<joint name="joint1" type="revolute">
<parent link="link1"/>
<child link="link2"/>
<origin xyz="0.012 0.0 0.017" rpy="0 0 0"/>
<axis xyz="0 0 1"/>
<limit velocity="4.8" effort="1" lower="${-pi*0.9}" upper="${pi*0.9}" />
</joint>
<!-- Link 2 -->
<link name="link2">
<visual>
<origin xyz="0 0 0.019" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link2.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="grey"/>
</visual>
<collision>
<origin xyz="0 0 0.019" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link2.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
<inertial>
<origin xyz="-3.0184870e-04 5.4043684e-04 ${0.018 + 2.9433464e-02}" />
<mass value="9.8406837e-02" />
<inertia ixx="3.4543422e-05" ixy="-1.6031095e-08" ixz="-3.8375155e-07"
iyy="3.2689329e-05" iyz="2.8511935e-08"
izz="1.8850320e-05" />
</inertial>
</link>
<!-- Joint 2 -->
<joint name="joint2" type="revolute">
<parent link="link2"/>
<child link="link3"/>
<origin xyz="0.0 0.0 0.0595" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<limit velocity="4.8" effort="1" lower="${-pi*0.57}" upper="${pi*0.5}" />
</joint>
<!-- Link 3 -->
<link name="link3">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link3.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="grey"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link3.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
<inertial>
<origin xyz="1.0308393e-02 3.7743363e-04 1.0170197e-01" />
<mass value="1.3850917e-01" />
<inertia ixx="3.3055381e-04" ixy="-9.7940978e-08" ixz="-3.8505711e-05"
iyy="3.4290447e-04" iyz="-1.5717516e-06"
izz="6.0346498e-05" />
</inertial>
</link>
<!-- Joint 3 -->
<joint name="joint3" type="revolute">
<parent link="link3"/>
<child link="link4"/>
<origin xyz="0.024 0 0.128" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<limit velocity="4.8" effort="1" lower="${-pi*0.3}" upper="${pi*0.44}" />
</joint>
<!-- Link 4 -->
<link name="link4">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link4.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="grey"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link4.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
<inertial>
<origin xyz="9.0909590e-02 3.8929816e-04 2.2413279e-04" />
<mass value="1.3274562e-01" />
<inertia ixx="3.0654178e-05" ixy="-1.2764155e-06" ixz="-2.6874417e-07"
iyy="2.4230292e-04" iyz="1.1559550e-08"
izz="2.5155057e-04" />
</inertial>
</link>
<!-- Joint 4 -->
<joint name="joint4" type="revolute">
<parent link="link4"/>
<child link="link5"/>
<origin xyz="0.124 0.0 0.0" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<limit velocity="4.8" effort="1" lower="${-pi*0.57}" upper="${pi*0.65}" />
</joint>
<!-- Link 5 -->
<link name="link5">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link5.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="grey"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link5.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
<inertial>
<origin xyz="4.4206755e-02 3.6839985e-07 8.9142216e-03" />
<mass value="1.4327573e-01" />
<inertia ixx="8.0870749e-05" ixy="0.0" ixz="-1.0157896e-06"
iyy="7.5980465e-05" iyz="0.0"
izz="9.3127351e-05" />
</inertial>
</link>
<!-- Gripper joint -->
<joint name="gripper" type="prismatic">
<parent link="link5"/>
<child link="gripper_link"/>
<origin xyz="0.0817 0.021 0.0" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<limit velocity="4.8" effort="1" lower="-0.010" upper="0.019" />
</joint>
<!-- Gripper link -->
<link name="gripper_link">
<visual>
<origin xyz="0.0 0.0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link_grip_l.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="grey"/>
</visual>
<collision>
<origin xyz="0.0 0.0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link_grip_l.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
<inertial>
<origin xyz="0 0 0" />
<mass value="1.0e-03" />
<inertia ixx="1.0e-03" ixy="0.0" ixz="0.0"
iyy="1.0e-03" iyz="0.0"
izz="1.0e-03" />
</inertial>
</link>
<!-- Gripper joint sub -->
<joint name="gripper_sub" type="prismatic">
<parent link="link5"/>
<child link="gripper_link_sub"/>
<origin xyz="0.0817 -0.021 0" rpy="0 0 0"/>
<axis xyz="0 -1 0"/>
<limit velocity="4.8" effort="1" lower="-0.010" upper="0.019" />
<mimic joint="gripper" multiplier="1"/>
</joint>
<!-- Gripper link sub -->
<link name="gripper_link_sub">
<visual>
<origin xyz="0.0 -0.0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link_grip_r.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="grey"/>
</visual>
<collision>
<origin xyz="0.0 -0.0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="file://$(find open_manipulator_wv_moveit_config)/meshes/chain_link_grip_r.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
<inertial>
<origin xyz="0 0 0" />
<mass value="1.0e-03" />
<inertia ixx="1.0e-03" ixy="0.0" ixz="0.0"
iyy="1.0e-03" iyz="0.0"
izz="1.0e-03" />
</inertial>
</link>
<!-- end effector joint -->
<joint name="end_effector_joint" type="fixed">
<origin xyz="0.126 0.0 0.0" rpy="0 0 0"/>
<parent link="link5"/>
<child link="end_effector_link"/>
</joint>
<!-- end effector link -->
<link name="end_effector_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<box size="0.01 0.01 0.01" />
</geometry>
<material name="red"/>
</visual>
<inertial>
<origin xyz="0 0 0" />
<mass value="1.0e-03" />
<inertia ixx="1.0e-03" ixy="0.0" ixz="0.0"
iyy="1.0e-03" iyz="0.0"
izz="1.0e-03" />
</inertial>
</link>
<!-- Realsense Camera Joint Position -->
<joint name="camera_joint" type="fixed">
<axis xyz="0 1 0" />
<origin xyz="0.070 0.032 0.052" rpy="0 0 0"/>
<parent link="link5"/>
<child link="camera_link"/>
</joint>
<link name="camera_link"/>
<!-- World -->
<link name="world"/>
<!-- World fixed joint-->
<joint name="world_fixed" type="fixed">
<origin xyz="0 0 0" rpy="0 0 0"/>
<parent link="world"/>
<child link="link1"/>
</joint>
ros2_controller part of URDF:
<ros2_control name="GazeboSimSystem" type="system">
<hardware>
<plugin>gazebo_ros2_control/GazeboSystem</plugin>
</hardware>
<joint name="joint1">
<command_interface name="position">
<param name="initial_value">0</param>
<param name="min">-2.826</param> <!-- ** -3.935 -->
<param name="max">2.826</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">0</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="joint2">
<command_interface name="position">
<param name="initial_value">0</param>
<param name="min">-1.7898</param> <!-- ** -3.935 -->
<param name="max">1.6878</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">0</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="joint3">
<command_interface name="position">
<param name="initial_value">0</param>
<param name="min">-0.942</param> <!-- ** -3.935 -->
<param name="max">1.3816</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">0</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="joint4">
<command_interface name="position">
<param name="initial_value">0</param>
<param name="min">-1.7898</param> <!-- ** -3.935 -->
<param name="max">2.041</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">0</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="gripper">
<command_interface name="position">
<param name="initial_value">0</param>
<param name="min">-0.010</param> <!-- ** -3.935 -->
<param name="max">0.019</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">0</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
</ros2_control>
<gazebo>
<plugin filename="libgazebo_ros2_control.so" name="gazebo_ros2_control">
<robot_sim_type>gazebo_ros2_control/GazeboSystem</robot_sim_type>
<parameters>$(find open_manipulator_wv_moveit_config)/config/ros2_controllers.yaml</parameters>
</plugin>
</gazebo>
</robot>
Is there any problem with the gazebo controller code?
My "ros2_controller.yaml":
controller_manager:
ros__parameters:
update_rate: 100 # Hz
arm_controller:
type: joint_trajectory_controller/JointTrajectoryController
hand_controller:
type: position_controllers/GripperActionController
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
arm_controller:
ros__parameters:
joints:
- joint1
- joint2
- joint3
- joint4
command_interfaces:
- position
state_interfaces:
- position
- velocity
hand_controller:
ros__parameters:
joint: gripper
The launch file that I am using is here. C:\fakepath\gazebo_simulation.launch.py
Am I missing something here? Can anyone please guide me? I am trying since three days without any luck.
Asked by aki1608 on 2023-06-05 05:45:42 UTC
Answers
I found the solution. I had to include damping and friction value to all of my joints under
Asked by aki1608 on 2023-06-13 08:13:33 UTC
Comments