본문으로 건너뛰기

MoveIt 연동

MoveIt을 사용하여 모션 계획과 실행을 수행하는 방법을 설명합니다.


사전 조건

  • plem_launch.py가 실행 중이어야 합니다.
  • neuromeka_moveit_config 패키지가 설치되어 있어야 합니다.
  • 로봇이 TRAJECTORY 모드여야 합니다 (모드 제어 참조).

1. MoveIt 실행

plem_launch.py가 실행 중인 상태에서, 별도 터미널에서 MoveIt을 시작합니다:

# move_group 노드 실행
ros2 launch neuromeka_moveit_config move_group.launch.py
# RViz 시각화 (별도 터미널)
ros2 launch neuromeka_moveit_config rviz_moveit.launch.py

2. RViz GUI로 모션 계획

RViz가 실행되면 MoveIt 모션 플래닝 패널이 표시됩니다.

Plan & Execute 흐름

  1. RViz에서 로봇 end-effector의 인터랙티브 마커를 드래그하여 목표 자세를 설정합니다.
  2. Plan 버튼을 클릭하여 궤적을 계획합니다. 궤적이 시각화됩니다.
  3. 궤적이 안전한지 확인한 후 Execute 버튼을 클릭합니다.
  4. 또는 Plan & Execute 버튼으로 계획과 실행을 한 번에 수행합니다.
주의

Plan 결과를 반드시 확인한 후 Execute하세요. 충돌 경로가 계획될 수 있습니다.


3. Python에서 MoveIt 사용 (moveit_py)

moveit_py를 사용하면 Python 스크립트에서 모션 계획을 수행할 수 있습니다.

#!/usr/bin/env python3
"""moveit_py를 이용한 간단 모션 계획 예제."""

import rclpy
from rclpy.node import Node
from moveit.planning import MoveItPy
from moveit.core.robot_state import RobotState


def main():
rclpy.init()

# MoveItPy 초기화 (move_group 노드가 실행 중이어야 함)
moveit = MoveItPy(node_name="moveit_py_example")
arm = moveit.get_planning_component("arm")

# 현재 상태를 시작점으로 설정
arm.set_start_state_to_current_state()

# 목표 관절값 설정
robot_state = RobotState(moveit.get_robot_model())
robot_state.set_joint_group_positions(
"arm",
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
)
arm.set_goal_state(robot_state=robot_state)

# 계획
plan_result = arm.plan()
if plan_result:
# 실행
arm.execute()

moveit.shutdown()
rclpy.shutdown()


if __name__ == "__main__":
main()

4. 커스텀 MoveIt Config 생성

기본 제공 neuromeka_moveit_config를 수정해야 하는 경우 (충돌 geometry 추가, planning pipeline 변경 등):

Step 1: 기존 config 복사

cp -r ~/ros2_ws/src/plem-neuromeka/neuromeka_moveit_config \
~/ros2_ws/src/my_moveit_config

Step 2: package.xml과 CMakeLists.txt 수정

패키지 이름을 변경합니다:

# package.xml
<name>my_moveit_config</name>

# CMakeLists.txt
project(my_moveit_config)

Step 3: 설정 파일 수정

config/ 디렉터리 내의 SRDF, kinematics, planning pipeline 등을 프로젝트 요구사항에 맞게 수정합니다.

Step 4: 빌드 및 실행

cd ~/ros2_ws
colcon build --packages-select my_moveit_config
source install/setup.bash

ros2 launch my_moveit_config move_group.launch.py

다음 단계

MoveIt 없이 직접 궤적을 전송하려면 직접 궤적 전송을 참조하세요.