Skip to content

MoveIt Path Planning 결과 실제 로봇에 적용하기

C++ Indy Driver 를 이용한 MovetIt 연결

MoveIt은 복잡한 이동경로를 생성할 수 있는 모션 계획 알고리즘을 포함하고 있습니다. Moveit을 이용하기 위한 패키지는 indy[X]_moveit_config 입니다. [X]는 사용하고 있는 로봇의 모델명입니다. 예를들어 Indy7의 경우 indy7_moveit_config이며 제공되는 예제는 다음 명령어로 실행 시킬 수 있습니다.

1
2
roslaunch indy7_moveit_config moveit_planning_execution.launch \
  robot_ip:=192.168.0.103 robot_name:=NRMK-Indy7

Note

  • robot_ip: STEP-PC의 IP 주소 (192.168.0.103)
  • robot_name: 로봇의 이름 (NRMK-Indy7)

에러가 발생하지 않을 경우, Rviz에 Indy7과 Moveit plugin 이 표시되는것을 확인할 수 있습니다.


Indy7 with Moveit plugin

로봇 엔드툴의 마커는 목표 상태를 설정하기 위함입니다. 마커를 마우스로 드래그 하면 오랜지 색의 목표 상태가 움직이는 것을 확인할 수 있습니다. 적절한 위치로 목표를 드래그 하여 목표 상태를 설정한 후, Plan 버튼을 클릭합니다. 계획에 성공하면 계획궤적의 애니메이션이 화면에 출력됩니다. 그 후 Execute 버튼을 클릭하면 Indy 로봇이 천천히 궤적을 따라 이동하는 것을 확인할 수 있습니다.

Warning

안전을 위하여 움직이기 전에 비상정지 버튼을 준비해 주십시오.


Execution of a planned trajectory

본 예제는 MoveIt의 계획결과를 Extended IndyDCP의 Joint Move To WaypointSet명령어로 실행하는 예제입니다. 각 웨이포인트 사이에 블렌딩이 설정되어 있지 않기 때문에 로봇이 웨이포인트 마다 정지하게 됩니다.

Python Indy Driver 를 이용한 MoveIt 연결

indy_driver_py 패키지를 활용하여 MoveIt 의 웨이포인트를 블렌딩을 적용하여 로봇에 전달 할 수 있습니다. 이를 실행하기 제공되는 예제는 indy-ros-example/indy7_moveit_dcp_example 포함되어있습니다.

패키지 구성

1
2
3
4
5
6
7
├── indy7_moveit_dcp_example
    ├── launch/
        └── moveit_indy7.launch
    ├── rviz_config/
    ├── src/
        └── app.py
    └── ...

실행방법 및 결과

1. 터미널에서 indy7_moveit_dcp_example 패키지가 설치된 폴더로 이동합니다.

2. 아래 명령어를 실행하여 dcp driver와 rviz, moveit를 실행합니다. 192.168.x.x는 로봇의 IP이며 robot_name은 로봇의 이름입니다(RP2의 경우 NRMK-IndyRP2). 사용자의 환경에 맞는 적절한 값을 입력해야합니다.

1
roslaunch indy7_moveit_dcp_example moveit_indy7.launch robot_ip:=192.168.x.x robot_name:=NRMK-Indy7

3. 별도의 터미널에서 app.py 파일을 실행합니다.


4. 마우스로 마커를 드래그하여 로봇의 목표 상태를 설정합니다.


5. 'p'를 입력하여 MoveIt의 플래닝을 실행합니다. 계획에 성공하면 계획궤적의 애니메이션이 화면에 출력됩니다.


6. 'e'를 입력하여 계획궤적을 실행합니다.


7. 궤적 실행 중 's'를 입력하면 로봇의 모션이 중지됩니다.