2nd ROS Tutorial Seminar Section 4

Preview:

Citation preview

2nd ROS Tutorial Seminar 2015/11/08

제2회ROS

튜토리얼 세미나!

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

2nd ROS Tutorial Seminar

표윤석

Section 42015/11/08

www.facebook.com/yoonseok.pyo

3

ROSRobot Operating System

ROSRobot Operating System

로봇 암?

6

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

내가할아버지

급이지~

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

원통좌표형

극좌표형

직교좌표형

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

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

원통좌표형

극좌표형

직교좌표형

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

오늘 세미나에서다룰 녀석

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

http://www.robotis.com/

6th axis

5th axis

4th axis

3rd axis

2nd axis

1st axis관절

(revolute joint)

링크(link)

10

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

안녕!

6th axis

5th axis

4th axis

3rd axis

2nd axis

1st axis관절

(revolute joint)

링크(link)

11

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

Yaskawa SmartPal V

13

14

https://youtu.be/4VtDHWiN0as

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

15

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

근데! 판이 바뀌었다!

등장!\(^^)/

16

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

17

18

x

yz

3차원 공간

저기!(x,y,z)

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

19

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

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

x

y

z

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

roll(θ)

pithch(φ) yaw(ψ)

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

21

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

23

24

ROSRobot Operating System

고생들 하셨습니다!

26

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

고생들 하셨습니다!

27

28

https://youtu.be/dblCGZzeUqs

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

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

URDF

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

즉,

하나면 된다!

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

32

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

https://github.com/oroca/rosbook_robot_arm

$ 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

기저 링크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

기저 링크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

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

$ 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

<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

39

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

40

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

https://github.com/oroca/turtlebot_arm

$ 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

$ roslaunch turtlebot_arm_bringup arm_4dof_sim.launch --screen

42https://youtu.be/zNYrWzFBgqg

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

ROSRobot Operating System

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

45

46

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

의 MoveIt 설정”

따라 해 봅시다!

47

$ roslaunch moveit_setup_assistant setup_assistant.launch

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

클릭

48

1.선택

2.클릭

49

2.클릭

1.확인

50

모델이 보이네요.

51

2.클릭

1.클릭

52

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

53

1.클릭

2.클릭

54

2.클릭

1.입력

55

확인

56

1.클릭

2.클릭

57

2.클릭

1.입력

58

6.클릭

2.선택

4.선택

3.클릭5.클릭

1.클릭

59

2.클릭

1.확인

60

2.클릭1.입력

61

2.클릭

1.선택 4.클릭

3.확인

62

클릭

63

2.클릭

1.선택

4.클릭

3.확인

64

확인

65

1.클릭

2.클릭

66

3.클릭

1.입력

2.모델 확인!

67

4.클릭

2.변경

1.입력

3.모델 확인!

68

4.클릭

2.변경

1.입력

3.모델 확인!

69

4.클릭

2.변경

1.입력

3.모델 확인!

70

확인

71

1.클릭

2.클릭

72

1.입력

2.클릭

73

확인

74

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

4.확인

75

2.입력

1.클릭

3.클릭

76

클릭끝.

77

$ roslaunch turtlebot_arm_4dof_moveit_config setup_assistant.launch

78

$ roslaunch turtlebot_arm_4dof_moveit_config demo.launch

79

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

2.Plan and Execute 클릭

3. 동작 확인

80

체크

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]

이부분임

82

PC와의통신에 사용

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

$ 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

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

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

84

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

지정된 위치로 이동한다.

85

말단 장치의 위치 값

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

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

마지막 과제!

모바일 로봇과 매니퓰레이터의 결합(섹션3 + 섹션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

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

89

$ roslaunch turtlebot_rviz_launchers view_model.launch

짜~짠!

90

91

질문대환영!

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

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

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

여기서! 광고 둘 나가요~

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

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

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

여기서! 광고 셋 나가요~

다른 말이 필요 없습니다!

감사합니다.

Yoonseok Pyopassionvirus@gmail.com

www.robotpilot.net

표윤석

www.facebook.com/yoonseok.pyo

또~ 봬요!*^^*

끝.

Recommended