Upload
yoonseok-pyo
View
2.263
Download
0
Embed Size (px)
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
로봇 암 제어?그리 호락호락한 녀석은 절대 아님!
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
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• 로봇공학 통합 커뮤니티 지향• 일반인과 전문가가 어울러지는 한마당• 로봇공학 소식 공유• 연구자 간의 협력
혼자하기에 답답하시다고요?커뮤니티에서함께해요~
여기서! 광고 셋 나가요~
다른 말이 필요 없습니다!
감사합니다.