지금까지 인공지능은 어떻게 보고, 듣고, 말하고, 생각하는지에 대해 간단히 소개해 봤다. 이번 편에서는 인공지능이 어떻게 로봇이란 형체를 가지고 주변 환경에 반응하고 움직이는지에 대해 간단히 소개해 보겠다. 현재 로봇은 기능에 따라 여러 형태로 나누어지고 있고 로봇의 목적과 알고리즘 기능에 따라 서로 다양하다. 짧은 글 하나로 모든 영역을 소개할 수 없지만 기본적인 로봇 움직임과 내비게이션 그리고 수서적인 행동 움직임에 대해서 소개해 보겠다.
Inverse Kinematics 역 운동학
역 운동학(Inverse Kinematics, IK)은 로봇 팔 같은 다자 관절 시스템의 위치와 속도를 제어하기 위한 수학적 기술이다. 로봇 팔은 일반적으로 수많은 다자 관절이 연결된 구조로 이루어져 있다. 이 구조에서 각각의 다자 관절은 관절의 각도를 변경함으로써 로봇 팔의 위치와 방향을 제어할 수 다. IK에서 주로 쓰이는 방법은 Jacobian을 사용해서 계산하는 방법이다.
자코비안 방법 (Jacobian method for Inverse Kinematics)은 로봇 팔의 위치와 방향이 주어졌을 때, 각각의 다자 관절의 각도를 계산하기 위한 알고리즘이다. 이 알고리즘은 로봇 팔의 현재 상태와 목표 위치 간의 오차를 최소화하기 위해 사용된다. 이 방법을 통해 로봇 팔의 위치와 방향을 제어하기 위한 수식을 유도하고, 그 수식을 리용하여 각각의 다자 관절의 각도를 계산하고 그 변화가 위치와 방향의 변화에 어떤 영향을 미치는지를 계산할 수도 있다. 이렇게 계산된 값을 리용하여 로봇 팔의 위치와 방향이 목표 위치와 일치하도록 다자 관절 각도를 역으로 계산하면 로봇 팔은 목표까지 움직일 수 있다.
IK는 주로 공업용 로봇 팔에서 사용하지만 게임 속 캐릭터 디자인에서 도 많이 사용된다. 이런 방식으로 만들어 낸 움직임은 인체와 비슷한 물리학적인 움직임을 자연스럽게 재현할 수 있고 움직임을 구현하기 위해 필요한 시간이 줄어든다.
Navigation 내비게이션
로봇 청소기나 식당에서 서빙을 한 로봇은 주로 네비게션 알고리즘으로 움직임을 실현한다. 내비게이션 알고리즘은 로봇이 주어진 환경에서 목적지까지 이동하는 경로를 결정하는 방법을 의미한다. 이 알고리즘은 로봇의 위치와 주변 환경을 고려하여 가장 효율적인 경로를 결정하며, 다양한 센서를 리용하여 환경 정보를 수집하고 분석한다.
내비게이션 알고리즘은 크게 두 가지 유형으로 분류할 수 있다. 첫 번째는 전역 경로 계획 알고리즘으로, 로봇의 시작점과 목적지를 고려하여 최적 경로를 계획한다. 이러한 알고리즘은 A* 알고리즘, Dijkstra 알고리즘 등이 많이 쓰이고 있다. 두 번째는 지역 경로 계획 알고리즘으로, 로봇의 현재 위치를 기준으로 가까운 범위 내에서 이동 경로를 계획한다. 이 알고리즘은 Potential Field 알고리즘, Occupancy Grid 알고리즘 등이 유명하다.
두 가지 방법 외에도 로봇 내비게이션 알고리즘은 환경에 따라 다양한 방법으로 구현될 수 있다. 예를 들어, GPS 및 지도 정보를 리용한 알고리즘, 라이다 및 카메라 정보를 용한 알고리즘, 자율주행차에 사용되는 스테레오 카메라와 레이더 정보를 리용한 알고리즘 등이 있다. 로봇 내비게이션 알고리즘의 성능은 로봇이 수행해야 하는 작업의 복잡도와 환경의 복잡도, 사용되는 센서의 성능 등에 따라 다르다. 최근에는 딥러닝 기술을 리용하여 보다 정확한 로봇 내비게이션 알고리즘을 개발하고 있으며, 딥 러닝을 리용하여 로봇의 자율주행 기술을 발전시키는 노력이 이어지고 있다.
Behavior Tree 비해비어 트리
비해 비어 트리(Behavior Tree, BT)는 “인공지능 행동 나무”라는 뜻으로 게임 및 로봇 등 인공지능 시스템에서 사용되는 의사결정 트리의 한 형태이다. 이는 인공지능 에이전트가 특정 상황에서 수행해야 하는 동작을 나타내는 트리 구조이다. 트리는 노드(Node)로 구성된 자료구조(Data Structure)이고 트리는 다양한 노드(논리, 제어, 행동 등)를 포함하며, 각 노드는 다음에 수행해야 할 노드를 결정한다.
BT는 일련의 조건과 행동으로 구성되어 있다. 이러한 행동은 각각 다양한 우선순위를 가지며, 더 높은 우선순위를 가진 행동이 더 우선적으로 수행된다. BT를 사용하면 인공지능 시스템이 특정 상황에서 적절한 의사결정을 내리고, 이에 따른 행동을 수행할 수 있도록 할 수 있다.
이 기술은 인공지능 게임 캐릭터나 로봇 등 다양한 분야에서 사용되고 있으며, 이를 통해 더욱 현실적이고 자연스러운 동작을 수행하는 인공지능 시스템을 개발할 수 있다.
Epilogue 에필로그
이번 편에서 인공지능의 움직임을 간단히 소개해 보았다. 이로써 인공지능의 생각하기, 보기, 듣기, 말하기, 움직임에 관한 소개는 마치게 됐다. 이 시리즈는 복잡한 내용을 생략하고 기본적인 부분만 소개했지만 기회가 된다면 수학 추리 과정과 특정한 알고리즘에 대해 더 상세하게 소개해 보도록 새로운 시리즈를 만들어 보겠다. 다음 편은 이번 시리즈 마지막 편으로 인공지능의 분야, 그리고 인공지능은 어떤 영역에서 사용되는지, 로봇 및 인공지능에 관한 공부를 하려면 어떤 지식이 필요한지에 대해서 공유해 보기로 하겠다.
참고자료:
- 게임학과 : 네이버블로그. (n.d.). https://blog.naver.com/jerrypoiu/221532945268
- https://blog.naver.com/kswdavid/222930587624
- Nori : 네이버블로그. (n.d.). https://blog.naver.com/kswdavid/222930587624
- Automaticaddison, A. (2021, November 17). Go to a Goal Location Upon Low Battery – ROS 2 Navigation – Automatic Addison. https://automaticaddison.com/go-to-a-goal-location-upon-low-battery-ros-2-navigation/
- Automaticaddison, A., Automaticaddison, A., & Automaticaddison, A. (2021, November 14). Automatic Addison – Page 5 – Build the Future. https://automaticaddison.com/page/5/
- Automaticaddison, A. (2020, October 23). The Ultimate Guide to Inverse Kinematics for 6DOF Robot Arms – Automatic Addison. https://automaticaddison.com/the-ultimate-guide-to-inverse-kinematics-for-6dof-robot-arms/
- Joar Engberg. (n.d.). https://joaen.github.io/
- Testing a PR2 Robot in a simulated Hospital World. (2021, January 16). Amazon Web Services. https://aws.amazon.com/blogs/robotics/hospital-world-simulating-robot/
- Tom Looman. (2018, January 1). Unreal Engine AI Tutorial: Create AI with Behavior Trees. YouTube. https://www.youtube.com/watch?v=tq-ULFuNyig
- 최. (2021c, November 18). Unreal Engine 5 – 비헤이비어트리(Behavior Tree)를사용한 AI 캐릭터랜덤이동및타겟이동 (Move to Tar. 공부. https://dlemrcnd.tistory.com/23
- The Driverless Car’s Invisible Brain: Planning and Control. (2022, March 7). Automated Driving in Any Weather. https://sensible4.fi/technology/articles/the-driverless-cars-invisible-brain-planning-and-control/
- Navigate Gazebo Worlds – nlamprian. (2019, December 26). https://nlamprian.me/blog/software/ros/2019/12/26/navigate-gazebo-worlds/
- A. (2018, May 10). SpotMini Autonomous Navigation GIF. Gfycat. https://gfycat.com/bronzescaredhamster
실시간으로 영상으로 팔의 위치를 판단해야되니 정교한 움직임이 필요한 로봇은 시간이 지나 gpu cpu성능이 감소함에 따라 나중에 버벅거릴수도 있겠네요 ㅎㅎ 아니면 이정도 계산은 가벼운 workload인가요?
네네. 알고리즘에 따라서 컴퓨터 자원 사용도는 다르겠지만 실시간 타겟 분석과 주변환경 데이터 처리는 엄청난 컴퓨터 자원이 필요합니다. 메모리가 적거나 Gpu,cpu가 부족 할 경우 갑자기 이상한 행동 하는 로봇도 봤습니다.ㅋㅋㅋㅋ 가끔 개발자들이 코드를 잘못 써서 메모리 핸들링 잘못하면 로봇이 미친 짓을 합니다.
아이언맨 영화에서 미친로봇 장면을 본듯합니다 ㅋㅋㅋ