universal robot사의 UR3를 이용한 양팔 로봇 팔 gazebo 시뮬레이션 중 에러가 생겨 도움을 구하고 싶습니다!

602 views
Skip to first unread message

Hyeonjun Park

unread,
Feb 22, 2018, 1:55:59 AM2/22/18
to 한국 ROS 사용자
안녕하세요, 
저는 경희대학교를 다니고 있는 대학원생입니다.

현재 저는 연구실에서 UR3를 이용해서 양팔 로봇을 제작 중인데요.

지금까지 진행된 상황은,
universal robot 사에서 제공하는 패키지들(http://wiki.ros.org/universal_robot)을 이용해서 
제가 하고자 하는 양팔 로봇의 URDF 작성 및 moveit! 패키지, gazebo 시뮬레이션 환경까지 작성했습니다.



시스템 사양은 Linux-min(16.04), ROS Kinetic 1.12.12 입니다.

그래서 작성한 gazebo를 띄우고, moveit! rviz를 띄워서 plan --> execute를 진행했는데요,
여기서 plan 은 성공하나, execute 시에 아래와 같은 에러를 확인했습니다.

<moveit! 을 실행시킨 cmd 창> 
[ INFO] [1519281586.410268867, 9.183000000]: Execution request received for ExecuteTrajectory action.
[ WARN] [1519281590.729237772, 9.791000000]: Controller l_arm_controller_dual failed with error code PATH_TOLERANCE_VIOLATED
[ WARN] [1519281590.729375753, 9.791000000]: Controller handle l_arm_controller_dual reports status ABORTED
[ INFO] [1519281590.729495866, 9.791000000]: Execution completed: ABORTED
[ INFO] [1519281590.738399432, 9.792000000]: ABORTED: Solution found but controller failed during execution



아무래도 gazebo와  controller 간의 소통(?)이 되지 않아 발생 된 것 같아 gazebo를 실행 시킨 창을 보니 아래와 같은 에러를 발견했습니다.

<gazebo를 실행시킨 창>   <!-- 핵심 질문 -->
[ INFO] [1519281519.268396686, 0.163000000]: Loading gazebo_ros_control plugin
[ INFO] [1519281519.268549975, 0.163000000]: Starting gazebo_ros_control plugin in namespace: /
[ INFO] [1519281519.269636949, 0.163000000]: gazebo_ros_control plugin is waiting for model URDF in parameter [robot_description] on the ROS param server.
[ INFO] [1519281519.401388285, 0.163000000]: Loaded gazebo_ros_control.
[ INFO] [1519281519.401612659, 0.163000000]: Loading gazebo_ros_control plugin
[ INFO] [1519281519.401677732, 0.163000000]: Starting gazebo_ros_control plugin in namespace: /

Loaded l_arm_controller_dual
[ERROR] [1519281519.527780162, 0.163000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/list_controllers]
[ERROR] [1519281519.527820775, 0.163000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/list_controller_types]
[ERROR] [1519281519.527837622, 0.163000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/load_controller]
[ERROR] [1519281519.527853349, 0.163000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/unload_controller]
[ERROR] [1519281519.527869669, 0.163000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/switch_controller]
[ERROR] [1519281519.527887135, 0.163000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/reload_controller_libraries]

[ INFO] [1519281519.527936241, 0.163000000]: Loaded gazebo_ros_control.
[INFO] [1519281519.534601, 0.169000]: Controller Spawner: Waiting for service controller_manager/switch_controller
[INFO] [1519281519.536754, 0.171000]: Controller Spawner: Waiting for service controller_manager/unload_controller
[INFO] [1519281519.538781, 0.173000]: Loading controller: joint_state_controller
Loaded r_arm_controller_dual
Started ['l_arm_controller_dual'] successfully
[INFO] [1519281519.592000, 0.188000]: Controller Spawner: Loaded controllers: joint_state_controller
Started ['r_arm_controller_dual'] successfully
[INFO] [1519281519.603280, 0.190000]: Started controllers: joint_state_controller
[l_arm_controller_spawner-7] process has finished cleanly
log file
: /home/mint-phj/.ros/log/026079a0-179b-11e8-9196-f0d5bf83d45c/l_arm_controller_spawner-7*.log
[r_arm_controller_spawner-8] process has finished cleanly
log file
: /home/mint-phj/.ros/log/026079a0-179b-11e8-9196-f0d5bf83d45c/r_arm_controller_spawner-8*.log
[ WARN] [1519281586.472481010, 9.191000000]: Dropping first 1 trajectory point(s) out of 29, as they occur before the current time.
First valid point will be reached in 0.157s


제 짧은 소견으로는, 빨간 색으로 보이는 에러만 해결하면 될 것 같은데요....

도움을 주시면 정말 감사하겠습니다.




gazebo launch 코드:
<dual_arm_bringup.launch>
<launch>
   
<include file="$(find violin_dual_gazebo)/launch/violin_dual_arm_world.launch" />
   
<!--include file="$(find violin_dual_gazebo)/launch/controller_utils.launch" /-->
   
<include file="$(find violin_dual_gazebo)/launch/dual_arm_joint_state_controller.launch" />
   
<include file="$(find violin_dual_gazebo)/launch/dual_arm_l_controller.launch" />
   
<include file="$(find violin_dual_gazebo)/launch/dual_arm_r_controller.launch" />
</launch>


<violin_dual_arm_world.launch>
<launch>
   
<arg name="paused" default="false"/>
   
<arg name="use_sim_time" default="true"/>
   
<arg name="gui" default="true"/>
   
<arg name="headless" default="false"/>
   
<arg name="debug" default="false"/>


   
<include file="$(find gazebo_ros)/launch/empty_world.launch">
       
<arg name="world_name" value="$(find violin_dual_gazebo)/worlds/violin_dual_arm.world"/>
       
<arg name="debug" value="$(arg debug)" />
       
<arg name="gui" value="$(arg gui)" />
       
<arg name="paused" value="$(arg paused)"/>
       
<arg name="use_sim_time" value="$(arg use_sim_time)"/>
       
<arg name="headless" value="$(arg headless)"/>
   
</include>


   
<param name="robot_description"
           
command="$(find xacro)/xacro.py $(find violin_description)/urdf/violin_dual_arm_v1.xacro" />
         
   
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
           
args="-urdf -model dual_robot -param robot_description"/>
</launch>


다음은 각 팔에 대한 controller launch 파일입니다.
<dual_arm_l_controller.launch>
<launch>
 
<rosparam file="$(find violin_dual_gazebo)/controller/l_arm_controller_dual.yaml" command="load"/>
 
<node name="l_arm_controller_spawner" pkg="controller_manager" type="controller_manager" respawn="false"
 
output="screen" args="spawn l_arm_controller_dual" />
</launch>

<dual_arm_r_controller.launch>
<launch>
 
<rosparam file="$(find violin_dual_gazebo)/controller/r_arm_controller_dual.yaml" command="load"/>
 
<node name="r_arm_controller_spawner" pkg="controller_manager" type="controller_manager" respawn="false"
 
output="screen" args="spawn r_arm_controller_dual" />
</launch>


<dual_arm_joint_state_controller.launch>
<launch>
 
<rosparam file="$(find violin_dual_gazebo)/controller/joint_state_controller.yaml" command="load"/>

 
<!-- joint_state_controller -->
 
<node name="joint_controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
 
output="screen" args="joint_state_controller" />

 
<!-- Robot state publisher -->
 
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="false"
 
output="screen"/>
</launch>

Yoonseok Pyo

unread,
Feb 22, 2018, 2:10:13 AM2/22/18
to Hyeonjun Park, 한국 ROS 사용자
controller_manager 패키지의 controller_manager 노드를 l_arm_controller_spawner 이랑 r_arm_controller_spawner 이라는 이름으로 실행시키셨지만 토픽 및 서비스 등은 이전과 동일한 이름으로 사용될겁니다. 그래서 이미 사용중 이기에 위에서 언급한 에러가 나온게 아닐까요?

만약에 동일 패키지를 사용한다면 하기와 같이 group 의 ns 를 사용하면 어떨까요?

dual_arm_l_controller.launch
<launch>
 <group ns ="l_arm">
  <rosparam file="$(find violin_dual_gazebo)/controller/l_arm_controller_dual.yaml" command="load"/>
  <node name="l_arm_controller_spawner" pkg="controller_manager" type="controller_manager" respawn="false" output="screen" args="spawn l_arm_controller_dual" />
 </group>
</launch>

dual_arm_r_controller.launch
<launch>
 <group ns ="r_arm">
  <rosparam file="$(find violin_dual_gazebo)/controller/r_arm_controller_dual.yaml" command="load"/>
  <node name="r_arm_controller_spawner" pkg="controller_manager" type="controller_manager" respawn="false" output="screen" args="spawn r_arm_controller_dual" />
 </group>
</launch>


2018년 2월 22일 오후 3:55, Hyeonjun Park <korea...@gmail.com>님이 작성:

--
이 메일은 Google 그룹스 '한국 ROS 사용자' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 korea-ros-users+unsubscribe@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 korea-ros-users@googlegroups.com에 이메일을 보내세요.
https://groups.google.com/group/korea-ros-users에서 이 그룹을 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.



--
//------------------------------------------------------------------------------
Yoonseok Pyo, Ph.D.,
Senior Research Engineer / Open Source Team / R&D Dept.
ROBOTIS CO., LTD. (http://www.robotis.com)
#1505 Ace High-End Tower NO. 3, Gasan-dong 145,
GasanDigital 1-ro, GeumCheon-gu, Seoul, Korea 153-787

Follow ROBOTIS on TwitterFacebookLinkedin, Github
Personal Website (http://www.robotpilot.net)
//------------------------------------------------------------------------------
Message has been deleted

Hyeonjun Park

unread,
Feb 22, 2018, 2:39:52 AM2/22/18
to Yoonseok Pyo, 한국 ROS 사용자
우선 바쁘신데도 불구하고 빠른 답변에 정말 감사드립니다.

조언해주신바와 같이 dual_arm_r_controller.launch 및 dual_arm_l_controller.launch를 수정했습니다.

여전히 동일한 에러를 볼 수 있는데요,

혹시 dual_arm_joint_state_controller.launch에서 
...

<!-- joint_state_controller -->
 
<node name="joint_controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
 
 output
="screen" ns="/l_arm" args="joint_state_controller" />
...
이런식으로 작성해줘야 인식할 수 있는건가요??

아니면 별도의 파일에서 작성해야하는 것이 있는건가요??




--


박현준 (Hyeonjun Park)
Ph.D. candidate

경희대학교 (Kyung Hee University)
Tel: +82-31-201-2957
Mobile: 010-4037-8702

2018년 2월 22일 오후 4:09, Yoonseok Pyo <p...@robotis.com>님이 작성:
Reply all
Reply to author
Forward
0 new messages