96
2 nd ROS Tutorial Seminar 2015/11/08 2 ROS 튜토리얼 세미나 !

2nd ROS Tutorial Seminar Section 4

Embed Size (px)

Citation preview

Page 1: 2nd ROS Tutorial Seminar Section 4

2nd ROS Tutorial Seminar 2015/11/08

제2회ROS

튜토리얼 세미나!

Page 2: 2nd ROS Tutorial Seminar Section 4

로봇암모델링과MoveIt! 사용법

2nd ROS Tutorial Seminar

표윤석

Section 42015/11/08

www.facebook.com/yoonseok.pyo

Page 3: 2nd ROS Tutorial Seminar Section 4

3

Page 4: 2nd ROS Tutorial Seminar Section 4

ROSRobot Operating System

Page 5: 2nd ROS Tutorial Seminar Section 4

ROSRobot Operating System

Page 6: 2nd ROS Tutorial Seminar Section 4

로봇 암?

6

Page 7: 2nd ROS Tutorial Seminar Section 4

세계 최초 산업용 로봇 유니메이트(unimate), 1961

내가할아버지

급이지~

http://en.wikipedia.org/wiki/Unimate 7

Page 8: 2nd ROS Tutorial Seminar Section 4

원통좌표형

극좌표형

직교좌표형

수평다관절형(SCARA형) 수직다관절형

http://www.ait.kyushu-u.ac.jp/ 8

Page 9: 2nd ROS Tutorial Seminar Section 4

원통좌표형

극좌표형

직교좌표형

수평다관절형(SCARA형) 수직다관절형

오늘 세미나에서다룰 녀석

9http://www.ait.kyushu-u.ac.jp/

Page 10: 2nd ROS Tutorial Seminar Section 4

http://www.robotis.com/

6th axis

5th axis

4th axis

3rd axis

2nd axis

1st axis관절

(revolute joint)

링크(link)

10

Page 11: 2nd ROS Tutorial Seminar Section 4

http://www.theroboticschallenge.org/http://www.robotis.com/

안녕!

6th axis

5th axis

4th axis

3rd axis

2nd axis

1st axis관절

(revolute joint)

링크(link)

11

Page 12: 2nd ROS Tutorial Seminar Section 4

12

CHIMP(TARTAN RESCUE)

Aero DRC(TEAM AERO)

HRP2+(TEAM AIST-NEDO)

DRC-Hubo(TEAM DRC-HUBO AT UNLV)

Cog-Burn(TEAM GRIT)

Johnny 05(TEAM HECTOR)

Atlas(TEAM HKU)

HRP-2(Team HRP2-Tokyo)

Running Man(Team IHMC Robotics)

Xing Tian(Team Intelligent Pioneer)

DRC-HUBO(Team KAIST)

Helios (Atlas)(Team MIT)

Hydra(Team NEDO-Hydra)

JAXON(Team NEDO-JSK)

Momaro(Team NimbRo Rescue)

RoboSimian(Team RoboSimian)

THORMANG(Team ROBOTIS)

THORMANG(Team SNU)

THOR-RD(Team THOR)

Hercules(Team TRAC Labs)

LEO(Team TROOPER)

ESCHER(Team VALOR)

Florian(Team ViGIR)

WALK-MAN(Team WALK-MAN)

WARNER(Team WPI-CMU)

http://www.theroboticschallenge.org/teams

Page 13: 2nd ROS Tutorial Seminar Section 4

Yaskawa SmartPal V

13

Page 14: 2nd ROS Tutorial Seminar Section 4

14

https://youtu.be/4VtDHWiN0as

Page 15: 2nd ROS Tutorial Seminar Section 4

로봇 암 제어?그리 호락호락한 녀석은 절대 아님!

15

Page 16: 2nd ROS Tutorial Seminar Section 4

로봇 암 제어?그리 호락호락한 녀석은 절대 아님!

근데! 판이 바뀌었다!

등장!\(^^)/

16

Page 17: 2nd ROS Tutorial Seminar Section 4

그래도, 기초는 알고 가자!

17

Page 18: 2nd ROS Tutorial Seminar Section 4

18

Page 19: 2nd ROS Tutorial Seminar Section 4

x

yz

3차원 공간

저기!(x,y,z)

작업 공간(work space): 말단 장치의 위치(x, y, z)와 자세(θ, φ, ψ)로 표현한 공간

19

Page 20: 2nd ROS Tutorial Seminar Section 4

http:// www.neo-tex.com

x

yz

3차원 공간

저기!(x,y,z)

http://www.robotis.com/

제 뭐래?각도 값으로 주세요. ^^;;(θ1, θ2,… θ 6)

작업 공간(work space): 말단 장치의 위치(x, y, z)와 자세(θ, φ, ψ)로 표현한 공간

6th axis

5th axis

4th axis

3rd axis

2nd axis

1st axis관절 공간(joint space): 관절의 각 각도(θ1,θ2,θ3,...)로 표현한 공간

20

Page 21: 2nd ROS Tutorial Seminar Section 4

http://www.tbotech.com/sodacansafe.htm

x

y

z

위치(x, y, z)자세(θ, φ, ψ)

roll(θ)

pithch(φ) yaw(ψ)

6개의 변수로물체의 위치/자세가 표현 가능= 6자유도로 표현가능

21

Page 22: 2nd ROS Tutorial Seminar Section 4

x

y

z

위치(x, y, z)자세(θ, φ, ψ)

roll(θ)

pithch(φ) yaw(ψ)

6th axis

5th axis

4th axis

3rd axis

2nd axis

1st axis

http://www.robotis.com http://www.tbotech.com/sodacansafe.htm

6개의 변수로물체의 위치/자세가 표현 가능= 6자유도로 표현가능

6개의 변수로로봇의 말단 장치의 위치,자세가 결정= 6자유도를 갖는다

22

Page 23: 2nd ROS Tutorial Seminar Section 4

23

Page 24: 2nd ROS Tutorial Seminar Section 4

24

Page 25: 2nd ROS Tutorial Seminar Section 4

ROSRobot Operating System

Page 26: 2nd ROS Tutorial Seminar Section 4

고생들 하셨습니다!

26

Page 27: 2nd ROS Tutorial Seminar Section 4

좀 쉽게 갑시다.모션 플래닝 툴

고생들 하셨습니다!

27

Page 28: 2nd ROS Tutorial Seminar Section 4

28

https://youtu.be/dblCGZzeUqs

Page 29: 2nd ROS Tutorial Seminar Section 4

29http://wiki.ros.org/ROS/Patterns/RobotModelling

Page 30: 2nd ROS Tutorial Seminar Section 4

URDF(Universal Robot Description Format) → RVizSRDF(Semantic Robot Description Format) → MoveIt!SDF(Simulation Description Format) → Gazebo

URDF

30http://wiki.ros.org/ROS/Patterns/RobotModelling

즉,

하나면 된다!

Page 31: 2nd ROS Tutorial Seminar Section 4

자~ 그렇다면URDF에 대해 알아봅시다.

Page 32: 2nd ROS Tutorial Seminar Section 4

32

실습 시간<3축 매니퓰레이터>

https://github.com/oroca/rosbook_robot_arm

Page 33: 2nd ROS Tutorial Seminar Section 4

$ cd ~/catkin_ws/src$ catkin_create_pkg testbot_description urdf$ cd testbot_description$ mkdir urdf$ cd urdf$ gedit testbot.urdf

기저 링크1

링크2

링크3

말단장치

관절1

관절2

관절3

링크4

33

(전문)

https://github.com/oroca/rosbook_robot_arm/blob/master/testbot_description/urdf/testbot.urdf

Page 34: 2nd ROS Tutorial Seminar Section 4

기저 링크1

링크2

링크3

말단장치

관절1

관절2

관절3

링크4

<link name="link1"><collision><origin rpy="0 0 0" xyz="0 0 0.25"/><geometry><box size="0.1 0.1 0.5"/>

</geometry></collision>

<visual><origin rpy="0 0 0" xyz="0 0 0.25"/><geometry><box size="0.1 0.1 0.5"/>

</geometry><material name="black"/>

</visual><inertial><origin rpy="0 0 0" xyz="0 0 0.25"/><mass value="1"/><inertia ixx="1.0" ixy="0.0" ixz="0.0“

iyy="1.0" iyz="0.0“izz="1.0"/>

</inertial></link>

34

Page 35: 2nd ROS Tutorial Seminar Section 4

기저 링크1

링크2

링크3

말단장치

관절1

관절2

관절3

링크4

<joint name="joint2" type="revolute"><parent link="link2"/><child link="link3"/><origin rpy="0 0 0" xyz="0 0 0.5"/><axis xyz="0 1 0"/><limit effort="30" lower="-2.617“

upper="2.617" velocity="1.571"/></joint>

35

Page 36: 2nd ROS Tutorial Seminar Section 4

36오려 붙이기 용도!https://goo.gl/38UBG8

Page 37: 2nd ROS Tutorial Seminar Section 4

$ check_urdf testbot.urdfrobot name is: test_robot---------- Successfully Parsed XML ---------------root Link: base has 1 child(ren)

child(1): link1child(1): link2

child(1): link3child(1): link4

$ urdf_to_graphiz testbot.urdfCreated file test_robot.gv Created file test_robot.pdf

37

Page 38: 2nd ROS Tutorial Seminar Section 4

<launch><arg name="model" default="$(find testbot_description)/urdf/testbot.urdf" /><arg name="gui" default="True" /><param name="robot_description" textfile="$(arg model)" /><param name="use_gui" value="$(arg gui)"/><node pkg="joint_state_publisher" type="joint_state_publisher“name="joint_state_publisher" /><node pkg="robot_state_publisher" type="state_publisher“name="robot_state_publisher" />

</launch>

$ roslaunch testbot_description testbot.launch$ rosrun rviz rviz

38

Page 39: 2nd ROS Tutorial Seminar Section 4

39

조인트 값을변경 해보세요.

Page 40: 2nd ROS Tutorial Seminar Section 4

40

실습 시간<4축 + 1 그리퍼 매니퓰레이터>

https://github.com/oroca/turtlebot_arm

Page 41: 2nd ROS Tutorial Seminar Section 4

$ cd ~/catkin_ws/src$ git clone https://github.com/oroca/turtlebot_arm.git$ cd ~/catkin_ws/$ catkin_make$ rospack profile$ roslaunch turtlebot_arm_bringup arm_4dof_sim.launch --screen

41

Page 42: 2nd ROS Tutorial Seminar Section 4

$ roslaunch turtlebot_arm_bringup arm_4dof_sim.launch --screen

42https://youtu.be/zNYrWzFBgqg

Page 43: 2nd ROS Tutorial Seminar Section 4

43

코드 분석 시간...$ roscd turtlebot_arm_bringup/launch$ gedit arm_4dof_sim.launch

$ roscd turtlebot_arm_description/urdf$ gedit arm_4dof.urdf.xacro$ gedit arm_4dof.xacro$ gedit arm_4dof_hardware.xacro

Page 44: 2nd ROS Tutorial Seminar Section 4

ROSRobot Operating System

Page 45: 2nd ROS Tutorial Seminar Section 4

http://moveit.ros.org/documentation/concepts/

45

Page 46: 2nd ROS Tutorial Seminar Section 4

46

실습 시간“4축 + 1 그리퍼 매니퓰레이터

의 MoveIt 설정”

따라 해 봅시다!

Page 47: 2nd ROS Tutorial Seminar Section 4

47

$ roslaunch moveit_setup_assistant setup_assistant.launch

마법사 아저씨가여러분을 도와 줍니다 ^^

클릭

Page 48: 2nd ROS Tutorial Seminar Section 4

48

1.선택

2.클릭

Page 49: 2nd ROS Tutorial Seminar Section 4

49

2.클릭

1.확인

Page 50: 2nd ROS Tutorial Seminar Section 4

50

모델이 보이네요.

Page 51: 2nd ROS Tutorial Seminar Section 4

51

2.클릭

1.클릭

Page 52: 2nd ROS Tutorial Seminar Section 4

52

항상 접해있는 (충돌하는) 링크,결코 만나지 않는 링크 등을 미리 계산

Page 53: 2nd ROS Tutorial Seminar Section 4

53

1.클릭

2.클릭

Page 54: 2nd ROS Tutorial Seminar Section 4

54

2.클릭

1.입력

Page 55: 2nd ROS Tutorial Seminar Section 4

55

확인

Page 56: 2nd ROS Tutorial Seminar Section 4

56

1.클릭

2.클릭

Page 57: 2nd ROS Tutorial Seminar Section 4

57

2.클릭

1.입력

Page 58: 2nd ROS Tutorial Seminar Section 4

58

6.클릭

2.선택

4.선택

3.클릭5.클릭

1.클릭

Page 59: 2nd ROS Tutorial Seminar Section 4

59

2.클릭

1.확인

Page 60: 2nd ROS Tutorial Seminar Section 4

60

2.클릭1.입력

Page 61: 2nd ROS Tutorial Seminar Section 4

61

2.클릭

1.선택 4.클릭

3.확인

Page 62: 2nd ROS Tutorial Seminar Section 4

62

클릭

Page 63: 2nd ROS Tutorial Seminar Section 4

63

2.클릭

1.선택

4.클릭

3.확인

Page 64: 2nd ROS Tutorial Seminar Section 4

64

확인

Page 65: 2nd ROS Tutorial Seminar Section 4

65

1.클릭

2.클릭

Page 66: 2nd ROS Tutorial Seminar Section 4

66

3.클릭

1.입력

2.모델 확인!

Page 67: 2nd ROS Tutorial Seminar Section 4

67

4.클릭

2.변경

1.입력

3.모델 확인!

Page 68: 2nd ROS Tutorial Seminar Section 4

68

4.클릭

2.변경

1.입력

3.모델 확인!

Page 69: 2nd ROS Tutorial Seminar Section 4

69

4.클릭

2.변경

1.입력

3.모델 확인!

Page 70: 2nd ROS Tutorial Seminar Section 4

70

확인

Page 71: 2nd ROS Tutorial Seminar Section 4

71

1.클릭

2.클릭

Page 72: 2nd ROS Tutorial Seminar Section 4

72

1.입력

2.클릭

Page 73: 2nd ROS Tutorial Seminar Section 4

73

확인

Page 74: 2nd ROS Tutorial Seminar Section 4

74

1.클릭 3.클릭2.선택

4.확인

Page 75: 2nd ROS Tutorial Seminar Section 4

75

2.입력

1.클릭

3.클릭

Page 76: 2nd ROS Tutorial Seminar Section 4

76

클릭끝.

Page 77: 2nd ROS Tutorial Seminar Section 4

77

$ roslaunch turtlebot_arm_4dof_moveit_config setup_assistant.launch

Page 78: 2nd ROS Tutorial Seminar Section 4

78

$ roslaunch turtlebot_arm_4dof_moveit_config demo.launch

Page 79: 2nd ROS Tutorial Seminar Section 4

79

1. 인터랙티브 마커를 드래그 또는 회전

2.Plan and Execute 클릭

3. 동작 확인

Page 80: 2nd ROS Tutorial Seminar Section 4

80

체크

Page 81: 2nd ROS Tutorial Seminar Section 4

81

$ roslaunch turtlebot_arm_4dof_moveit_config turtlebot_arm_moveit.launch --screen$ rosrun moveit_commander moveit_commander_cmdline.py

> use arm[ INFO] [1446688881.357273154]: Ready to take MoveGroup commands for group arm.OKarm> currentjoints = [0.0 0.0 0.0 0.0 0.0]gripper_link pose = [header:

seq: 0stamp:

secs: 1446688885nsecs: 776949882

frame_id: /base_linkpose:

position:x: -2.83336952646e-06y: 1.10256712683e-06z: 0.341499999981

orientation:x: -1.40783094196e-06y: -0.706830343159z: 1.40672709244e-06w: 0.707383111182 ]

gripper_link RPY = [-0.005091709409684286, -1.5700145846068136, 0.005091707848606231]

이부분임

Page 82: 2nd ROS Tutorial Seminar Section 4

82

PC와의통신에 사용

4 관절 + 1 그리퍼 실습용으로 6대를 준비했습니다.

Page 83: 2nd ROS Tutorial Seminar Section 4

$ sudo apt-get install ros-indigo-arbotix*

$ ls /dev/ttyUSB*/dev/ttyUSB0$ sudo chmod a+rw /dev/ttyUSB0$ roslaunch turtlebot_arm_bringup arm_4dof_real.launch --screen$ arbotix_gui

83

간단한 테스트 용도로 좋음!

슬라이드를 이용해 각 관절 값을 변경 가능

Page 84: 2nd ROS Tutorial Seminar Section 4

84

$ roscd turtlebot_arm_4dof_demo/scripts/$ gedit moveit_fk_demo.py$ gedit moveit_ik_demo.py

지정된 위치로 이동한다.

Page 85: 2nd ROS Tutorial Seminar Section 4

85

말단 장치의 위치 값

말단 장치의 위치 값 지정계획&실행

Page 86: 2nd ROS Tutorial Seminar Section 4

86

$ roslaunch turtlebot_arm_bringup arm_4dof_real.launch --screen$ roslaunch turtlebot_arm_4dof_moveit_config turtlebot_arm_moveit.launch sim:=false --screen$ rosrun turtlebot_arm_4dof_demo moveit_fk_demo.py

$ roslaunch turtlebot_arm_bringup arm_4dof_real.launch --screen$ roslaunch turtlebot_arm_4dof_moveit_config turtlebot_arm_moveit.launch sim:=false --screen$ rosrun turtlebot_arm_4dof_demo moveit_ik_demo.py

실제로 동작해보고 IK 와 FK 값들도 변경해 보세요.로봇이 없다면 아래와 같이 시뮬레이션만 실행해도 됩니다.

$ roslaunch turtlebot_arm_4dof_moveit_config turtlebot_arm_moveit.launch$ rosrun turtlebot_arm_4dof_demo moveit_fk_demo.py또는$ rosrun turtlebot_arm_4dof_demo moveit_ik_demo.py

Page 87: 2nd ROS Tutorial Seminar Section 4

마지막 과제!

모바일 로봇과 매니퓰레이터의 결합(섹션3 + 섹션4)

Page 88: 2nd ROS Tutorial Seminar Section 4

<?xml version="1.0"?><!--

- Base : kobuki- Stacks : hexagons- 3d Sensor : kinect

--><robot name="turtlebot" xmlns:xacro="http://ros.org/wiki/xacro">

<xacro:include filename="$(find turtlebot_description)/urdf/turtlebot_library.urdf.xacro" />

<kobuki/><stack_hexagons parent="base_link"/><sensor_asus_xtion_pro parent="base_link"/>

<xacro:include filename="$(find turtlebot_arm_description)/urdf/arm_4dof.xacro" />

<turtlebot_arm parent="base_link" color="white" gripper_color="green"joints_vlimit="1.571" pan_llimit="-2.617" pan_ulimit="2.617">

<origin xyz="0.1 0 0.4"/></turtlebot_arm>

</robot>

88

$ cd /opt/ros/indigo/share/turtlebot_description/robots/$ sudo gedit kobuki_hexagons_asus_xtion_pro.urdf.xacro

터틀봇에 다이나믹셀로 만든 터틀봇 암 추가

Page 89: 2nd ROS Tutorial Seminar Section 4

89

$ roslaunch turtlebot_rviz_launchers view_model.launch

짜~짠!

Page 90: 2nd ROS Tutorial Seminar Section 4

90

Page 91: 2nd ROS Tutorial Seminar Section 4

91

Page 92: 2nd ROS Tutorial Seminar Section 4

질문대환영!

Page 93: 2nd ROS Tutorial Seminar Section 4

국내 유일! 최초! ROS 책일본어로 변역 되어 나올 책

비 영어권 최고의 책인세 전액 기부

여기서! 광고 하나 나가요~

Page 94: 2nd ROS Tutorial Seminar Section 4

여기서! 광고 둘 나가요~

• 오로카• www.oroca.org• 오픈 로보틱스 지향• 풀뿌리 로봇공학의 저변 활성화• 열린 강좌, 세미나, 프로젝트 진행

• 로봇공학을 위한 열린 모임 (KOS-ROBOT)• www.facebook.com/groups/KoreanRobotics• 로봇공학 통합 커뮤니티 지향• 일반인과 전문가가 어울러지는 한마당• 로봇공학 소식 공유• 연구자 간의 협력

혼자하기에 답답하시다고요?커뮤니티에서함께해요~

Page 95: 2nd ROS Tutorial Seminar Section 4

여기서! 광고 셋 나가요~

다른 말이 필요 없습니다!

감사합니다.

Page 96: 2nd ROS Tutorial Seminar Section 4

Yoonseok [email protected]

www.robotpilot.net

표윤석

www.facebook.com/yoonseok.pyo

또~ 봬요!*^^*

끝.