MoveIt 패키지를 사용하여 OpenManipulator-X를 최고 속도로 동작하는 방법

문제:

Product

  • OpenManipulator-X    (RM-X52-TNM)

Envrionment

  • System : Nvidia Jetson Orin Nano Dev Kit
  • OS : Ubuntu 22.04.5 LTS
  • ROS 2 Humble

안녕하세요! :grinning:

현재 open_manipulator ROS 패키지를 통해서 오픈매니퓰레이터를 제어하고 있습니다.

Dynamixel Wizard 2.0에서 위치 제어 모드에서 상당히 빠른 속도로 모터가 회전하는 것을 확인했습니다. 그런데, MoveIt 패키지에서 모션 플래닝을 통해 제어하는 경우, 이전에 관측되었던 모터의 속도 보다 느린 속도로 매니퓰레이터가 움직이는 것 같습니다.

OpenManipulator-X를 MoveIt 패키지를 통해 제어할 때, 모터의 최고 속도로 팔이 움직이도록 하려면 어떤 설정을 수정해야 하는지 궁급합니다.

아래는 시도해본 여러가지 방법에 대한 내용입니다.


Moveit 패키지 속도 제한 설정 변경

실행 과정은 e-Manual 에 작성되어 있는 가이드를 따라 진행하였습니다.

$ros2 launch open_manipulator_x_bringup hardware.launch.py # in terminal 1
$ros2 launch open_manipulator_x_moveit_config moveit_core.launch.py # in terminal 2

위 명령어를 실행 후 Rviz2 윈도우가 실행되었고, 무브잇과 관련된 속도/가속도 관련 설정을 수정해보았습니다.

1. Motion Planning 옵션 중 속도/가속도 스케일 변경

아래 그림과 같이 속도/가속도 스케일 값을 '1’로 수정 후 동작했을 때, 조인트에 사용된 모터가 최고 속도로 움직일 것으로 예상했으나 실제 동작은 예상보다 느리게 움직였습니다.

2. Joint_limits.yaml 수정
open_manipulator_x_moveit_config/joint_limits.yaml)

velocity_limits 는 Dynamixel Wizard에서 설정된 최고 속도와 동일하기에 그대로 두었고, 가속도 제한에 대한 설정을 false로 변경하였습니다.

Dynamixel Settings

Dynamixel Wizard 2.0 에서 각 다이나믹셀은 아래 그림과 같이 설정되어 있습니다.


DYNAMIXEL 서보:
XM430-W350-T


DYNAMIXEL 컨트롤러:
Nvidia Jetson Orin nano Dev Kit
SMPS 12V 5A + U2D2 + U2D2 PHB


소프트웨어 인터페이스:
ROS 2 Humble + Moveit2

안녕하세요.

를 보시면 각 다이나믹셀들에 관한 설정들이 있습니다.
이중
<param name="Profile Velocity">200</param><param name="Profile Acceleration">50</param> 항목들을 둘다 0으로 바꿀 시 최대 속도로 움직이게 됩니다. 이 때 안정성이 낮아지는점 참고해주시길 바라겠습니다.


Hello,

Referring to the settings for each Dynamixel in the following link:

Please note that if you change both <param name="Profile Velocity">200</param> and <param name="Profile Acceleration">50</param> to 0, the robot will move at its maximum speed. Please be aware that this may reduce stability.

1 Like

정말 감사합니다!

Profile Velocity 값과 Profile Acceleration 값을 "0"으로 설정하여, 기존 동작보다 빠르게 매니퓰레이터를 동작시키는데 성공하였습니다!

다만 한 가지 더 궁금한 것은 Rviz 환경에서 제어하는 것이 아니라 move_group_interface API (C++)를 사용하여 제어하려고 할 때, 아래 설정 파일의 제한 값이 매니퓰레이터 동작의 속도에 영향을 주는지 알고 싶습니다.

open_manipulator_x_playground/src/hello_moveit.cpp

  ...
  move_group_interface.setPoseTarget(target_pose);
  
  // 속도 & 가속도 스케일링 값을 최대로 설정
  move_group_interface.setMaxVelocityScalingFactor(1.0);
  move_group_interface.setMaxAccelerationScalingFactor(1.0);

  move_group_interface.setGoalPositionTolerance(0.02);
  move_group_interface.setGoalOrientationTolerance(0.02);

최종적으로 구동하고자 하는 속도는 아래 영상에서 우측 하단에 보이는 OpenManipulator-X의 정도의 속도로 구동하고자 합니다.

안녕하세요. 확인을 해본 결과
open_manipulator_x_moveit_config/config/moveit_servo.yaml 파일은 영향을 주지 않고

  // 속도 & 가속도 스케일링 값을 최대로 설정
  move_group_interface.setMaxVelocityScalingFactor(1.0);
  move_group_interface.setMaxAccelerationScalingFactor(1.0);

open_manipulator_x_playground/src/hello_moveit.cpp에서 위의 내용을 설정 후에

max_acceleration 값을 적절한 값으로 높이면 움직이는 속도가 빨라집니다.

1 Like