이봐! AGV 공급 업체로서 저는 이러한 멋진 자동 가이드 차량을 프로그래밍하는 데 많은 경험이 있습니다. 오늘, 나는 AGV를 프로그래밍하는 과정을 안내하고 그 과정에서 몇 가지 팁과 요령을 공유 할 것입니다.
AGV 프로그래밍의 기본 이해
가장 먼저, AGV가 무엇인지에 대해 이야기합시다. an자동화 된 가이드 차량인간 운영자가 필요없이 시설 주변에서 재료를 움직이는 자체 탐색 차량입니다. 그들은 제조에서 창고, 효율성을 향상시키고 인건비를 줄이기 위해 모든 종류의 산업에서 사용됩니다.
프로그래밍을 시작하기 전에 AGV의 하드웨어를 이해해야합니다. 일반적으로 섀시, 모터, 센서 및 제어 장치로 구성됩니다. 센서는 AGV가 환경을 "보기"하는 데 도움이되므로 중요합니다. 공통 센서에는 레이저 스캐너, 카메라 및 근접 센서가 포함됩니다.


올바른 프로그래밍 언어 선택
AGV를 프로그래밍하는 데 사용할 수있는 몇 가지 프로그래밍 언어가 있습니다. 선택은 작업의 복잡성과 AGV 제어 시스템의 기능에 따라 다릅니다.
- 파이썬: 배우기 쉽고 많은 라이브러리가 있기 때문에 인기있는 선택입니다. 예를 들어, 당신은 그것을 사용할 수 있습니다
Numpy수치 계산을위한 라이브러리Opencv컴퓨터 비전 작업의 경우 AGV에 카메라가 장착되어있는 경우. - C/C ++:이 언어는 더 낮은 수준이며 더 나은 성능을 제공합니다. 모터 제어 및 센서 데이터 처리와 같은 실제 시간 제어가 필요한 작업에 적합합니다.
AGV의 작업 정의
다음 단계는 AGV가 수행 해야하는 작업을 파악하는 것입니다. 이것은 A 지점에서 B 지점으로 이동하거나 여러 위치에서 품목을 집어 들고 떨어 뜨리는 것만 큼 간단 할 수 있습니다.
AGV가 사전 정의 된 경로를 따라 이동하기를 원한다고 가정 해 봅시다. 경로의 좌표를 정의해야합니다. 시설의 레이아웃에 따라 좌표계를 사용할 수 있습니다. 예를 들어, 시설이 창고 인 경우 스토리지 랙의 행과 열을 참조로 사용할 수 있습니다.
AGV의 움직임을 프로그래밍합니다
경로 계획
경로 계획은 AGV 프로그래밍의 핵심 부분입니다. AGV가 목적지에 도달하려면 가장 짧고 안전한 경로를 찾아야합니다. 경로 계획에 사용할 수있는 여러 알고리즘이 있습니다.
- 에이연산*: 이것은 그래프에서 가장 짧은 경로를 찾기위한 인기있는 알고리즘입니다. 노드 사이의 거리와 목표에 도달하기위한 예상 비용을 고려합니다. 당신은 당신의 시설의 레이아웃을 그래프로 표현할 수 있으며, 여기서 노드는 바닥의 지점이고 가장자리는 포인트 사이의 가능한 경로입니다.
- Dijkstra의 알고리즘: A* 알고리즘과 유사하지만 목표에는 추정 비용을 사용하지 않습니다. 시작 노드에서 그래프의 다른 모든 노드까지 가장 짧은 경로를 찾습니다.
파이썬에서 A* 알고리즘을 구현할 수있는 방법에 대한 간단한 예는 다음과 같습니다.
import heampq def heuristic (a, b) : return abs (a [0] -b [0]) + abs (a [1] -b [1]) def a_star (배열, 시작, 목표) : neighbors = [(0, 1), (0, -1), (1, 0), (-1, 0)] close_set = set} come_from = {} gscore = {gscore =} {start : heuristic (시작, 목표)} ohep = [] heapq.heappush (oheap, (fscore [start], start)) = 전류 [0] + i, 현재 [1] + J adverative_g_score = gscore [current] + 휴리스틱 (현재, 이웃) 0 <= 이웃 [0] <len (array) : 0 <= 이웃 [1] <len (배열 [0]) : array [0]] [1]] = 다른 경우 # walls에서 계속 된 경우 # walls walls 계속 된 경우 : and wittative_g_score> = gscore.get (이웃, 0) : 임시 _g_score <gscore.get (이웃, 0) 또는 이웃은 [i [1]에 i에 i [1] i에 i [1]을 입력하지 않는다. (fscore [neighbor], neighbor)) 리턴 없음
모터 제어
경로가 계획된 후에는 경로를 따르려면 AGV의 모터를 제어해야합니다. AGV의 제어 시스템에는 일반적으로 명령을 전송하여 제어 할 수있는 모터 드라이버가 있습니다.
Microcontroller를 사용하여 AGV를 제어하는 경우 PWM (Pulse Width Modulation)을 사용하여 모터의 속도를 제어 할 수 있습니다. PWM은 모터 드라이버에 전송 된 펄스의 너비를 변경하여 작동하며, 이는 모터에 적용되는 평균 전압을 제어합니다.
다음은 Arduino (C/C ++를 사용하는)에서 PWM을 사용하여 모터를 제어하는 방법에 대한 간단한 예입니다.
const int motorpin = 9; void setup () {PinMode (MotorPin, 출력); } void loop () {// 모터 속도를 50% 아날로그 라이팅으로 설정합니다 (Motorpin, 128); 지연 (1000); // 모터 속도를 100% 아날로그 라이팅 (MotorPin, 255)으로 설정합니다. 지연 (1000); }
장애물 처리
AGV 프로그래밍의 과제 중 하나는 장애물을 처리하는 것입니다. AGV는 경로의 장애물을 감지하고 피하거나 안전하게 멈출 수 있어야합니다.
장애물 감지
앞에서 언급했듯이 레이저 스캐너 및 카메라와 같은 센서는 장애물 감지에 사용될 수 있습니다. 레이저 스캐너는 레이저 빔을 방출하고 빔이 뒤로 튀는 데 걸리는 시간을 측정합니다. 경로에 장애물이 있으면 비행 시간이 짧아집니다.
카메라를 사용하여 장애물을 감지 할 수도 있습니다. 컴퓨터 비전 기술을 사용하여 카메라에서 캡처 한 이미지를 분석하고 장면에서 객체를 식별 할 수 있습니다.
장애물 회피
장애물이 감지되면 AGV는 피해야합니다. 이를 수행하는 한 가지 방법은 경로를 다시 계획하는 것입니다. 앞에서 언급 한 동일한 경로 계획 알고리즘을 사용할 수 있지만 장애물에 대한 정보가 업데이트 될 수 있습니다.
또 다른 접근법은 반응 제어 전략을 사용하는 것입니다. 예를 들어, AGV가 왼쪽의 장애물을 감지하면 피하기 위해 우회전 할 수 있습니다.
전문 작업을위한 프로그래밍
로드 처리
AGV가 부하를 처리하도록 설계된 경우무거운 부하 레이저 가이드 차량, 부하 처리 메커니즘을 프로그래밍해야합니다. 여기에는 로봇 암이나 컨베이어 벨트를 제어하는 것이 포함될 수 있습니다.
하중을 집어 들고 삭제하기위한 동작을 정의해야합니다. 예를 들어, AGV가 로봇 암을 사용하는 경우 팔 조인트의 움직임을 프로그래밍하여 하중에 도달하고 그립해야합니다.
다른 시스템과의 커뮤니케이션
실제 세계 시나리오에서 AGV는 창고 관리 시스템 (WMS)과 같은 시설의 다른 시스템과 통신해야 할 수도 있습니다. 통신에 Modbus 또는 Ethernet/IP와 같은 프로토콜을 사용할 수 있습니다.
예를 들어, WMS는 작업을 AGV로 보낼 수 있으며 AGV는 상태를 WMS로 다시 보낼 수 있습니다.
결론
AGV를 프로그래밍하는 것은 복잡하지만 보람있는 작업입니다. 여기에는 하드웨어 이해, 올바른 프로그래밍 언어 선택, 작업 정의, 경로 계획, 모터 제어, 장애물 처리 및 전문 작업을위한 프로그래밍이 포함됩니다.
AGV를 운영에 통합하려는 경우 도와 드리겠습니다. 간단한 재료 취급을위한 기본 AGV가 필요한지 여부 또는 무거운 의무무거운 부하 레이저 가이드 차량, 우리는 특정 요구를 충족시키기 위해 AGV를 프로그래밍하고 사용자 정의 할 수있는 전문 지식을 가지고 있습니다. 귀하의 요구 사항에 대한 토론을 시작하고 AGV 솔루션으로 워크 플로를 최적화하는 방법을 확인하려면 저희에게 연락하십시오.
참조
- "인공 지능 : 현대적인 접근"Stuart Russell과 Peter Norvig
- Morgan Quigley, Brian Gerkey 및 William D. Smart의 "Ros와 함께 로봇 프로그래밍"
- Arduino 문서 : https://www.arduino.cc/reference/en/




