학습 목표
- 로봇팔의 Link·Joint·축·자유도·End-effector를 구분할 수 있다.
- 회전·직선 관절과 직렬·병렬·협동 로봇팔의 특징을 설명할 수 있다.
- 정기구학과 역기구학으로 관절값과 Tool Pose의 관계를 계산할 수 있다.
- Jacobian, 특이점, 작업공간과 여유 자유도의 의미를 설명할 수 있다.
- 위치·속도·가속도·Jerk가 포함된 안전한 관절 궤적을 구성할 수 있다.
- URDF·TF·JointState·ros2_control·MoveIt 2의 연결 구조를 이해할 수 있다.
- 실제 Pick-and-place 작업을 설계하고 충돌·파지·가반하중 위험을 검증할 수 있다.
1. 로봇팔은 무엇인가
로봇팔 또는 Manipulator는 여러 Link를 Joint로 연결하고 각 Joint를 구동해 원하는 위치와 자세로 도구를 옮기는 로봇입니다. 사람 팔을 닮았지만 사람 모양일 필요는 없습니다. 용접 Robot, SCARA, Delta Robot과 협동 Robot은 구조가 달라도 모두 관절 운동을 작업 공간의 Tool 운동으로 바꾸는 기계입니다.
Base → Joint 1 → Link 1 → Joint 2 → Link 2 → Wrist → End-effector → 작업 대상
로봇팔의 핵심 질문은 세 가지입니다.
- 현재 관절각에서 Tool은 어디에 있는가?
- 원하는 Tool Pose에 도달하려면 관절을 얼마나 움직여야 하는가?
- 그 움직임이 충돌·속도·토크·안전 제한 안에서 가능한가?
첫 질문이 정기구학, 두 번째가 역기구학, 세 번째가 Motion Planning과 제어의 문제입니다.
2. Link, Joint, 축과 자유도
Link는 강체로 취급하는 몸체이고 Joint는 두 Link 사이에서 허용되는 운동입니다. Joint가 움직이는 독립 변수의 수가 자유도, DOF입니다.
| 관절 종류 | 허용 운동 | 변수 | 예시 |
|---|---|---|---|
| Revolute | 한 축 주위 회전 | 각도 rad | 어깨·팔꿈치 |
| Continuous | 제한 없는 회전 | 각도 rad | 회전 Tool |
| Prismatic | 한 축 방향 직선 | 거리 m | 승강축·Linear Rail |
| Fixed | 운동 없음 | 없음 | Sensor Bracket |
| Planar | 평면 이동과 회전 | 3개 | 특수 Mechanism |
공간에서 Tool의 위치 x,y,z와 자세 roll,pitch,yaw를 자유롭게 정하려면 일반적으로 6자유도가 필요합니다. 7축 팔은 같은 Tool Pose를 유지하면서 팔꿈치 자세를 바꿀 여유 자유도 하나가 있습니다. 이 여유는 장애물 회피, Joint Limit 회피와 Manipulability 개선에 사용합니다.
Joint 수와 자유도는 항상 같지 않습니다. Mimic Joint, Closed-chain, 차동 Mechanism은 여러 Joint가 독립적으로 움직이지 않을 수 있습니다.
3. 대표 로봇팔 구조
| 구조 | 특징 | 장점 | 한계 |
|---|---|---|---|
| 6축 직렬형 | Base부터 Wrist까지 직렬 연결 | 넓은 자세 범위·범용성 | 오차와 하중 누적 |
| 7축 직렬형 | 여유 자유도 1개 | 장애물·특이점 회피 | IK 해가 더 많고 제어 복잡 |
| SCARA | 평면 회전+수직축 | 빠른 조립 작업 | 자세 자유도 제한 |
| Delta | 여러 Arm이 Platform을 병렬 지지 | 매우 빠르고 가벼움 | 작업공간과 Payload 제한 |
| Cartesian | 직선축 X·Y·Z | 직관적·높은 강성 | 큰 설치 공간 |
| 협동 Robot | 힘·토크 감지와 제한 기능 | 사람 근처 작업 가능 | 위험성 평가 없이 안전하지 않음 |
협동 Robot이라는 이름만으로 모든 작업이 안전해지지 않습니다. 날카로운 Tool, 무거운 Payload, 좁은 끼임점과 고속 동작이 있으면 독립적인 위험성 평가와 안전 기능이 필요합니다.
4. 좌표계: 같은 위치도 기준이 다르면 다른 숫자다
로봇팔에는 Base, 각 Link, Flange, Tool, Camera, 작업물 Frame이 있습니다.
world
└─ base_link
└─ shoulder_link
└─ elbow_link
└─ wrist_link
└─ flange
└─ tool0
└─ tcp
TCP는 Tool Center Point입니다. Gripper 손가락 사이 중심, 용접봉 끝, Screwdriver Bit 끝처럼 작업이 실제로 일어나는 점입니다. Flange 기준으로 목표를 주면 Tool 길이만큼 위치가 틀립니다.
Pose는 위치 벡터와 Orientation으로 구성됩니다. Euler Angle은 읽기 쉽지만 표현 특이점이 있고, Quaternion은 계산에 안정적이지만 정규화와 부호를 이해해야 합니다.
ros2 run tf2_ros tf2_echo base_link tool0
ros2 run tf2_ros tf2_echo tool0 tcp
ros2 run tf2_tools view_frames
5. 정기구학: 관절값으로 Tool 위치 구하기
정기구학은 관절 변수 q가 주어졌을 때 Base에서 Tool까지의 변환 T(q)를 계산합니다. 각 Joint 변환을 순서대로 곱합니다.
T_base_tool = T_base_1 × T_1_2 × ... × T_n_tool
평면 2축 팔에서 Link 길이가 L1, L2, 관절각이 q1, q2라면 다음과 같습니다.
x = L1 cos(q1) + L2 cos(q1 + q2)
y = L1 sin(q1) + L2 sin(q1 + q2)
import math
def forward_kinematics(q1_deg, q2_deg, l1=0.40, l2=0.30):
q1 = math.radians(q1_deg)
q2 = math.radians(q2_deg)
x = l1 * math.cos(q1) + l2 * math.cos(q1 + q2)
y = l1 * math.sin(q1) + l2 * math.sin(q1 + q2)
heading = q1 + q2
return x, y, math.degrees(heading)
for pose in [(0, 0), (30, 45), (90, -90)]:
print(pose, '->', forward_kinematics(*pose))
관절 Encoder가 정확해도 Link 길이, Joint Zero, Gear Backlash와 Base 설치 Pose가 틀리면 Tool 위치가 틀립니다. 실제 정밀도는 Kinematic Calibration과 구조 강성까지 포함해 평가해야 합니다.
6. 역기구학: 원하는 Tool Pose에서 관절값 찾기
역기구학, IK는 원하는 Tool Pose를 만드는 q를 찾습니다. 하나의 목표에 해가 여러 개일 수 있고, 작업공간 밖이면 해가 없으며, Joint Limit과 장애물 때문에 수학적으로 가능한 해가 실제로는 불가능할 수 있습니다.
2축 평면 팔의 해는 다음처럼 구할 수 있습니다.
import math
def inverse_kinematics(x, y, l1=0.40, l2=0.30, elbow_up=False):
c2 = (x*x + y*y - l1*l1 - l2*l2) / (2*l1*l2)
if abs(c2) > 1.0:
raise ValueError('목표가 작업공간 밖에 있습니다')
s2 = math.sqrt(max(0.0, 1.0 - c2*c2))
if elbow_up:
s2 = -s2
q2 = math.atan2(s2, c2)
q1 = math.atan2(y, x) - math.atan2(l2*s2, l1+l2*c2)
return math.degrees(q1), math.degrees(q2)
print('elbow down:', inverse_kinematics(0.45, 0.25))
print('elbow up :', inverse_kinematics(0.45, 0.25, True))
실제 6·7축 IK는 수치 반복법이나 전용 Solver를 사용합니다. 해를 선택할 때 현재 관절값과의 거리, Joint Limit 여유, 충돌, 특이점, Cable 꼬임과 선호 팔꿈치 자세를 비용으로 고려합니다.
7. 작업공간과 도달 가능성
작업공간은 Tool이 도달할 수 있는 위치와 자세의 집합입니다. 단순히 팔 길이로 그린 구가 아닙니다.
- Joint Limit이 일부 영역을 자릅니다.
- Tool Orientation 요구가 도달 범위를 줄입니다.
- Robot Body와 자기 충돌 영역은 사용할 수 없습니다.
- 바닥·벽·작업대·안전 Fence가 경계를 만듭니다.
- Payload와 속도에 따라 실제 허용 영역이 달라집니다.
Reachable은 위치에 닿는다는 뜻이고 Dexterous는 필요한 여러 자세로 닿을 수 있다는 뜻입니다. Bin 안쪽처럼 위치에는 닿아도 Gripper 방향을 만들 수 없는 곳이 있습니다.
8. Jacobian과 특이점
Jacobian J(q)는 관절 속도를 Tool의 선속도·각속도로 연결합니다.
tool_twist = J(q) × joint_velocity
반대로 원하는 Tool 속도를 관절 속도로 바꿀 때 Jacobian 역 또는 Pseudoinverse를 사용합니다. 특정 자세에서 Jacobian Rank가 줄면 어떤 방향으로 Tool을 움직일 능력을 잃습니다. 이것이 특이점입니다.
특이점 근처에서는 작은 Tool 속도를 만들기 위해 매우 큰 Joint 속도가 필요할 수 있습니다. 흔한 예는 팔이 일직선으로 완전히 펴지는 Elbow Singularity와 Wrist 축이 정렬되는 Wrist Singularity입니다.
| 징후 | 의미 | 대응 |
|---|---|---|
| 관절 속도가 급증 | Manipulability 저하 | 속도 제한·자세 변경 |
| IK 해가 갑자기 바뀜 | 다른 해 Branch로 전환 | Seed와 연속성 비용 사용 |
| Tool이 특정 방향으로 안 움직임 | Jacobian Rank 감소 | 특이점 회피 경로 계획 |
| 작은 Noise에 관절 명령이 흔들림 | 역행렬 조건수 악화 | Damped Least Squares |
7축 팔은 여유 자유도로 TCP Pose를 유지하면서 팔꿈치를 움직여 특이점과 장애물을 피할 수 있습니다.
9. 경로와 궤적은 다르다
Path는 공간에서 지나갈 자세의 순서입니다. Trajectory는 각 지점에 시간, 속도와 가속도를 붙인 것입니다. 실제 Motor는 시간이 없는 Path를 실행할 수 없습니다.
목표 Pose → IK 후보 → 충돌 없는 Path → 시간 파라미터화 → Joint Trajectory → Controller → Motor
| 값 | 너무 크면 생기는 문제 |
|---|---|
| Velocity | 충돌 에너지·Tracking Error 증가 |
| Acceleration | 구조 진동·Grip Slip·Motor Peak Torque |
| Jerk | 충격·기구 수명 저하·Payload 흔들림 |
각 Joint를 같은 시간에 출발·도착하도록 동기화해야 Tool 경로가 예측 가능합니다. 단순히 목표각을 한꺼번에 보내는 것은 충돌 없는 Cartesian 움직임을 보장하지 않습니다.
"""Cubic smoothstep으로 한 관절의 부드러운 위치 명령을 만든다."""
def smooth_joint(q0, q1, duration, dt=0.02):
samples = []
count = int(duration / dt) + 1
for i in range(count):
t = min(i * dt / duration, 1.0)
s = 3*t*t - 2*t*t*t
samples.append(q0 + (q1-q0)*s)
return samples
이 예제는 개념 설명용입니다. 실제 Robot에서는 Controller의 제한, 모든 Joint 동기화, 가속도·Jerk와 Emergency Stop을 포함한 검증된 Trajectory Generator를 사용하십시오.
10. 구동기, 감속기와 센서
로봇팔 Joint는 Motor 하나로 끝나지 않습니다.
| 구성 요소 | 역할 | 대표 문제 |
|---|---|---|
| Motor | 전기 에너지를 Torque로 변환 | 과열·전류 제한 |
| Gearbox | Torque 증가·속도 감소 | Backlash·마찰 |
| Brake | 전원 차단 시 축 유지 | 마모·해제 실패 |
| Encoder | Joint 위치·속도 측정 | Zero Offset·분해능 |
| Torque Sensor | 외력·충돌 추정 | Bias·온도 Drift |
| Bearing | 하중 지지 | 유격·수명 |
Base 쪽 Joint는 뒤의 모든 Link와 Payload를 들어야 하므로 큰 Torque가 필요합니다. Wrist는 가벼워야 빠르게 움직일 수 있습니다. Payload 사양은 질량만이 아니라 무게중심 거리와 관성까지 포함합니다.
정적 Torque ≈ 질량 × 중력가속도 × Joint에서 무게중심까지 거리
2 kg Tool의 무게중심이 Joint에서 0.4 m 떨어져 있으면 약 2×9.81×0.4 = 7.85 N·m가 정지 상태에서만 필요합니다. 가속과 Robot Link 자체 무게는 별도입니다.
11. End-effector와 파지
End-effector는 작업을 수행하는 마지막 장치입니다. Gripper, Vacuum Cup, 용접 Torch, Screwdriver와 Camera가 될 수 있습니다.
| 방식 | 적합한 대상 | 확인할 것 |
|---|---|---|
| Parallel Gripper | 상자·부품 | 폭·힘·마찰·평행도 |
| Vacuum | 평평하고 밀폐되는 표면 | 누설·표면 거칠기 |
| Soft Gripper | 과일·변형 물체 | 반복 정밀도·오염 |
| Magnetic | 철 부품 | 잔류 자력·전원 상실 |
파지 성공을 "Gripper를 닫았다"로 판단하면 안 됩니다. Finger 위치, Motor Current, Force Sensor, Vacuum Pressure와 들어 올린 뒤의 Vision을 조합해 물체가 실제로 잡혔는지 확인해야 합니다.
Pre-grasp 접근 → 저속 직선 접근 → 접촉·정렬 → Gripper 닫기 → 파지 확인 → 수직 후퇴 → 운반
12. URDF와 ROS 2의 로봇 모델
URDF는 Link의 Visual·Collision·Inertial과 Joint의 Parent·Child·Axis·Limit을 정의합니다.
<joint name="elbow_joint" type="revolute">
<parent link="upper_arm_link"/>
<child link="forearm_link"/>
<origin xyz="0 0 0.32" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<limit lower="-2.2" upper="2.2"
velocity="1.5" effort="45.0"/>
</joint>
- Visual Mesh가 예뻐도 Collision Geometry가 틀리면 Planning이 위험합니다.
- Inertial이 없거나 비현실적이면 Simulation이 불안정합니다.
- Joint Axis와 실제 양의 회전 방향이 일치해야 합니다.
- Limit은 Manufacturer 사양과 안전 Margin을 반영해야 합니다.
check_urdf robot.urdf
ros2 run robot_state_publisher robot_state_publisher --ros-args \
-p robot_description:="$(xacro robot.urdf.xacro)"
ros2 topic echo /joint_states --once
ros2 run tf2_tools view_frames
robot_state_publisher는 URDF와 /joint_states를 이용해 움직이는 Link TF를 발행합니다. Fixed Joint는 /tf_static으로 제공됩니다.
13. ros2_control과 JointTrajectoryController
일반적인 실행 흐름은 다음과 같습니다.
MoveIt 또는 작업 Node → FollowJointTrajectory Action → JointTrajectoryController → Hardware Interface → Drive → Encoder Feedback
arm_controller:
ros__parameters:
joints:
- joint_1
- joint_2
- joint_3
- joint_4
- joint_5
- joint_6
- joint_7
command_interfaces: [position]
state_interfaces: [position, velocity]
action_monitor_rate: 20.0
allow_partial_joints_goal: false
ros2 control list_controllers
ros2 control list_hardware_interfaces
ros2 action info /arm_controller/follow_joint_trajectory
ros2 topic echo /joint_states
Python으로 짧은 관절 목표 보내기
import rclpy
from rclpy.action import ActionClient
from rclpy.node import Node
from control_msgs.action import FollowJointTrajectory
from trajectory_msgs.msg import JointTrajectoryPoint
from builtin_interfaces.msg import Duration
class ArmGoal(Node):
def __init__(self):
super().__init__('arm_goal')
self.client = ActionClient(
self, FollowJointTrajectory,
'/arm_controller/follow_joint_trajectory')
async def send(self):
goal = FollowJointTrajectory.Goal()
goal.trajectory.joint_names = [f'joint_{i}' for i in range(1, 8)]
point = JointTrajectoryPoint()
point.positions = [0.0, -0.5, 0.0, 1.0, 0.0, -0.5, 0.0]
point.time_from_start = Duration(sec=5)
goal.trajectory.points = [point]
await self.client.wait_for_server()
handle = await self.client.send_goal_async(goal)
if not handle.accepted:
self.get_logger().error('Trajectory가 거부되었습니다')
return
result = await handle.get_result_async()
self.get_logger().info(f'error_code={result.result.error_code}')
실제 Robot에서는 현재 상태, Joint Limit, 충돌 여부와 Controller 활성 상태를 먼저 확인하고 Cancel·Timeout·Fault 처리를 추가해야 합니다.
14. MoveIt 2의 Motion Planning
MoveIt 2는 Robot Model, Planning Scene, Kinematics Solver, Motion Planner와 Controller 연결을 조합합니다. 목표는 Joint Space 또는 End-effector Pose로 줄 수 있고, 기본적으로 자기 충돌과 환경 충돌을 검사합니다.
RobotState + PlanningScene + Goal Constraints
↓
Motion Planner
↓
충돌 없는 Path + 시간 파라미터화
↓
FollowJointTrajectory Controller
Motion Planner가 Path를 찾았다는 것만으로 실행 가능한 것은 아닙니다. 시작 상태가 실제 Robot과 맞는지, 속도·가속도 제한이 적용됐는지, Planning 이후 장애물이 움직이지 않았는지 확인해야 합니다.
ros2 launch moveit2_tutorials move_group.launch.py
ros2 topic echo /planning_scene --once
ros2 action list | grep move
ros2 action list | grep trajectory
7축 팔에서는 같은 목표 Pose에 많은 IK 해가 있으므로 현재 자세와 가까운 Seed, Joint Limit 여유, 충돌 거리와 특이점 비용이 중요합니다.
15. Pick-and-place를 단계로 설계하기
- Object Pose와 공분산을 얻습니다.
- Grasp 후보와 Pre-grasp Pose를 생성합니다.
- IK·Joint Limit·자기 충돌을 검사합니다.
- 작업대와 주변 물체를 Planning Scene에 넣습니다.
- Pre-grasp까지 충돌 없는 경로를 계획합니다.
- 제한 속도로 직선 접근합니다.
- Gripper를 닫고 Sensor로 파지를 검증합니다.
- 수직으로 들어 올리고 부착 물체를 Scene에 반영합니다.
- 바구니 위 Place Pose로 이동합니다.
- 저속 하강, Gripper 열기, 분리 확인 후 후퇴합니다.
물체를 잡은 뒤에는 Robot의 Collision Geometry와 Payload가 바뀝니다. MoveIt Planning Scene에 Attached Collision Object로 반영하지 않으면 잡은 물체가 주변과 부딪혀도 Planner가 모릅니다.
16. 안전과 실제 로봇 운용
| 위험 | 원인 | 방어 |
|---|---|---|
| 충돌·끼임 | 잘못된 경로·사람 진입 | Fence·Scanner·제한 속도·정지 |
| 낙하 | 파지 실패·전원 상실 | 파지 확인·Brake·낙하 영역 통제 |
| 과부하 | Payload·무게중심 초과 | Payload 설정·Torque 감시 |
| 급격한 움직임 | 단위·Frame·IK Branch 오류 | Limit·Preview·속도 Scaling |
| 자기 충돌 | Collision Model 오류 | URDF 검증·Planning Scene |
| 통신 단절 | Network·Controller Fault | Watchdog·Hold·Protective Stop |
비상 정지는 일반 Software Node 하나에만 의존하면 안 됩니다. Safety-rated Controller, Drive STO, 안전 입력과 위험성 평가가 필요한 영역입니다. Simulation 성공은 실제 안전을 보장하지 않습니다.
실제 Robot에 처음 적용할 때는 Tool과 Payload를 확인하고, 작업 공간을 비우고, 최소 속도에서 한 단계씩 실행하며, 언제든 정지할 수 있는 위치에서 시험하십시오.
17. 진단과 검증 체크리스트
ros2 topic hz /joint_states
ros2 topic echo /joint_states --once
ros2 control list_controllers
ros2 action info /arm_controller/follow_joint_trajectory
ros2 run tf2_ros tf2_echo base_link tool0
| 검사 | 통과 기준 |
|---|---|
| Joint 이름·순서 | URDF·Controller·Trajectory가 일치 |
| 단위·부호 | rad·m, 양의 방향이 Model과 일치 |
| Zero Pose | 실제와 RViz Link 자세가 일치 |
| Joint Limit | Software와 Hardware Limit 모두 검증 |
| TF | Base·Flange·TCP 변환이 실제 치수와 일치 |
| Collision | 자기 충돌·작업대·Tool 형상 포함 |
| Trajectory | 속도·가속도·Jerk·Tracking Error 제한 |
| Payload | 질량·무게중심·관성이 설정 범위 |
| Fault | 통신 단절·Encoder 오류·과전류 때 안전 정지 |
| Recovery | 원인 확인 없이 자동 재시작하지 않음 |
- Manipulator로봇팔·매니퓰레이터
- 여러 Link와 Joint를 구동해 Tool을 원하는 위치와 자세로 옮기는 로봇 기구입니다.
- Link링크
- 로봇의 관절과 관절 사이를 연결하며 해석에서 강체로 취급하는 몸체입니다.
- Joint관절
- Parent Link와 Child Link 사이에서 허용되는 회전·직선 이동 또는 고정 관계입니다.
- Degree of Freedom자유도
- 로봇이 서로 독립적으로 바꿀 수 있는 운동 변수의 수입니다.
- End-effector말단장치
- Gripper·용접기처럼 로봇팔 끝에 달려 실제 작업을 수행하는 장치입니다.
- TCP도구 중심점
- Gripper 중심이나 용접봉 끝처럼 작업 위치와 자세의 기준이 되는 Tool Center Point입니다.
- Forward Kinematics정기구학
- 관절 변수로부터 Base 기준 Tool의 위치와 자세를 계산하는 과정입니다.
- Inverse Kinematics역기구학
- 원하는 Tool 위치와 자세를 만드는 관절 변수 조합을 찾는 과정입니다.
- Jacobian자코비안
- 관절 속도와 Tool의 선속도·각속도 사이 관계를 나타내는 행렬입니다.
- Singularity특이점
- 로봇팔이 특정 방향의 운동 능력을 잃거나 관절 속도가 과도하게 커질 수 있는 자세입니다.
- Workspace작업공간
- Joint Limit·충돌·기구 구조를 고려할 때 Tool이 도달할 수 있는 위치와 자세의 집합입니다.
- Trajectory궤적
- 경로의 각 지점에 시간·속도·가속도 조건을 부여한 실행 가능한 운동 계획입니다.
- Payload가반하중
- 로봇팔이 허용된 성능과 안전 범위에서 다룰 수 있는 Tool과 물체의 질량·무게중심·관성 조건입니다.
- Planning Scene계획 장면
- 로봇 상태와 환경 장애물·부착 물체를 모아 충돌 검사와 Motion Planning에 사용하는 세계 모델입니다.
- Attached Collision Object부착 충돌 물체
- 로봇이 잡아 함께 움직이는 물체를 Robot 일부처럼 충돌 검사하도록 등록한 객체입니다.
연습 문제
- 4축·6축·7축 로봇팔이 표현할 수 있는 Tool Pose 차이를 설명하세요.
- Revolute·Prismatic·Fixed Joint의 URDF 예제를 작성하세요.
- 2축 팔의 정기구학 결과를 세 관절 자세에서 계산하세요.
- 같은 목표에 Elbow-up·Elbow-down IK 해를 구하고 차이를 그리세요.
- 목표가 작업공간 밖일 때 IK가 실패하도록 단위 시험을 작성하세요.
- 팔이 완전히 펴진 자세에서 Jacobian 특이점을 설명하세요.
- 7축 여유 자유도로 팔꿈치를 움직이면서 TCP Pose를 유지하는 이유를 조사하세요.
- Path와 Trajectory의 차이를 위치·시간·속도 관점에서 설명하세요.
- Tool 2 kg, 무게중심 거리 0.4 m의 정적 Torque를 계산하세요.
- URDF Visual과 Collision Geometry가 다를 때 생기는 위험을 설명하세요.
/joint_states, TF와 Controller Joint 순서를 자동 검사하세요.- Pick-and-place State Machine과 각 단계의 실패 복구를 설계하세요.
- 파지 성공을 확인할 Sensor 세 가지와 판정 조건을 정하세요.
- 사람 진입·통신 단절·Payload 낙하 시험 절차를 작성하세요.
참고 자료
- MoveIt 2 공식 문서
- MoveIt 2 Motion Planning 개념
- MoveIt 2 URDF와 SRDF
- ros2_control 공식 문서
- JointTrajectoryController
- URDF 공식 튜토리얼
18. 확인 퀴즈 12문항
답을 선택한 뒤 정답 확인을 누르세요. 정답과 해설은 제출 후에 표시됩니다.
1. Link와 Link 사이에서 허용되는 운동을 정의하는 것은?
Joint는 Parent Link와 Child Link 사이의 회전·직선 이동 또는 고정 관계를 정의합니다.
2. 공간에서 Tool 위치와 자세를 자유롭게 지정하는 데 일반적으로 필요한 자유도는?
위치 3개와 Orientation 3개를 독립적으로 정하려면 일반적으로 6자유도가 필요합니다.
3. 7축 팔의 추가 자유도를 활용하는 대표 목적은?
여유 자유도는 같은 Tool Pose에서 팔꿈치 자세와 Joint 배치를 바꾸는 데 사용합니다.
4. 관절값에서 Tool Pose를 계산하는 것은?
Forward Kinematics는 각 Joint 변환을 곱해 Base 기준 Tool Pose를 구합니다.
5. 역기구학 해에 대한 올바른 설명은?
같은 목표에 여러 자세가 가능하며 작업공간·Limit·충돌 조건 때문에 유효한 해가 없을 수도 있습니다.
6. Jacobian이 연결하는 것은?
Jacobian은 관절 속도가 Tool의 선속도와 각속도로 어떻게 변환되는지 나타냅니다.
7. 특이점 근처에서 나타나는 현상은?
Jacobian 조건이 나빠지면 특정 방향 운동 능력을 잃고 역속도 계산이 크게 증폭됩니다.
8. Path와 Trajectory의 핵심 차이는?
Path는 공간적 경로이고 Trajectory는 각 지점의 시간과 운동 제한을 포함합니다.
9. TCP는 무엇인가?
Gripper 중심이나 용접봉 끝처럼 작업 기준이 되는 Tool Center Point입니다.
10. 물체를 잡은 뒤 Planning Scene에서 해야 할 일은?
잡은 물체도 Robot과 함께 움직이며 주변과 충돌할 수 있으므로 부착 형상으로 반영해야 합니다.
11. 파지 성공을 확인하는 올바른 방법은?
명령과 실제 파지는 다르므로 여러 Sensor Feedback으로 확인해야 합니다.
12. 협동 Robot에 대한 올바른 설명은?
Payload, Tool, 속도, 끼임점과 작업 환경까지 포함해 안전을 검증해야 합니다.
COMMUNITY
강의 댓글
질문과 학습 경험을 함께 나눠보세요.댓글을 불러오는 중입니다.