로봇 공학에서 FPGA를 언제 사용해야합니까?


12

FPGA는 IO 포인트의 많은 좋은 점을 가지고 있지만 다시 당신은 매우 낮은 수준에서 일을 생각할 필요가 플립 플롭 일들이 아직 성숙되지 않은 지역에 선구자 - 예를 들어이 질문을 참조 여기 에 개발-도구에 대해 FPGA-이것은 현재 나의 이해입니다! 이제 FPGA는 로봇 손이 좋아 우수한 손재주를 만드는 데 사용되었습니다 여기에 . 이제 일부 사람들 은 여기 에서 와 같이 빠른 프로토 타이핑과 "앞으로 보이는" 디자인을 위해 FPGA를 시장에 내놓고 있습니다. 센서와 같은 것들에 대해 많은 IO 포인트가 필요하지 않은 경우 로봇에 FPGA를 선택해야하는 이유는 무엇입니까? 그래서

로봇 공학 프로젝트를 위해 FPGA를 언제 선택해야합니까?


병렬 처리가 필요한 경우 FPGA를 사용하는 것이 좋습니다. 또한 새로운 하드웨어 칩없이 자체 "칩 디자인"및 "쉽게"업그레이드 할 수 있습니다. 카메라에서 실시간으로 여러 물체 감지에 대한 예를 보았습니다. 소규모 프로젝트의 경우 오버 헤드가 발생합니다.
Gossamer

답변:


4

개발 도구에 대한 관련 질문에서 무엇이 성숙하지 않다고 생각하는지 잘 모르겠습니다. 그들 대부분은 독점적이며 오픈 소스가 아닌 것이 사실입니다. 하지만 3 년 전 그 질문을 받았을 때 도구가 아주 성숙했다고 생각했습니다. 현재 Xilinx , AlteraLattice 는 Windows 및 Linux에서 32 및 64 비트를 지원하는 무료 개발 환경을 갖추고 있습니다. 오픈 소스를 고집한다면 Icarus Verilog 는 꽤 많은 일을 할 수 있습니다. 하지만 개인적으로 공급 업체별 도구를 고수합니다.

FPGA는 구성 가능한 플립 플롭 이상의 것이 아닙니다. Altera NIOS II를 고려하십시오 . Linux를 실행할 수있는 32 비트 소프트 코어 프로세서 OpenCores 또는 Xilinx , Altera 또는 Lattice 에서 통신 및 기타 주변 장치를 혼합 및 일치 시키 십시오. 필요한 모든 것과 필요없는 것을 갖춘 맞춤형 마이크로 컨트롤러를 구축했습니다. NIOS II 프로세서 용 C 코드를 작성 하고 속도가 필요한 경우 FPGA 하드웨어에서 직접 특정 기능을 구현할 수도 있습니다 . 그것은 당신을 위해 충분히 높은 수준의 생각입니까?

FPGA는 초기 투자 비용이 높습니다. 그러나 나중에 디자인 프로세스에서 기능을 추가하는 것이 더 저렴하고 쉽습니다. 이것이 "앞으로 보이는"디자인의 의미입니다. 로봇에 모터를 추가하려고하지만 마이크로 컨트롤러에 PWM 생성기가 부족한 프로젝트를 생각해보십시오. 너 뭐하니? 다른 마이크로 컨트롤러를 추가 하시겠습니까? 별도의 PWM 칩을 구입하여 통신 인터페이스에 연결 하시겠습니까? 모든 통신 인터페이스를 사용중인 경우 어떻게합니까? FPGA의 경우 거의 모든 복사 및 붙여 넣기 작업으로 줄어 듭니다. FPGA로 추가 하드웨어를 많이 구매하지 않고도 새로운 기능을 포함하도록 설계를 훨씬 쉽고 저렴하며 빠르게 확장 할 수 있습니다.

그러나 아마도 FPGA를 사용하는 가장 큰 이유는 속도입니다. 나는 순수한 클럭 속도에 대해 이야기하고 있지 않습니다. 그러나 동시에 많은 일이 필요할 때. Gossamer가 언급했듯이 병렬 처리는 FPGA가 실제로 잘하는 것입니다. 필터 설계는 특히 이러한 종류의 병렬 아키텍처에서 이점을 얻습니다. 빠르게 변화하는 센서를 필터링하고 응답해야하는 경우 FPGA가 필요합니다. 또한 병렬 처리의 이점도 있으므로 비디오 처리에 능숙합니다.

이 고속 핸드 로봇 을 예로 들어 보겠습니다 . 촉각 센서뿐만 아니라 고속 (초당 1000 프레임) 머신 비전 카메라의 비디오를 처리하고 단 몇 밀리 초 안에 수많은 액추에이터를 조작하여 반응합니다. 이 유형의 프로젝트는 FPGA를 선택 해야 할 때 입니다.

대규모 병렬 비전 처리


이 "FPGA는 초기 투자 비용이 높다"고 설명해 주시겠습니까? 관련 여기 : 가격은 매우 낮은 본다. 높은 교육 비용이나 다른 수치를 의미합니까?
hhh

1
@hhh 나는 원시 칩 비용에 대해 이야기하지 않았습니다. 개발 비용에 대해 이야기하고있었습니다. PandaBoard 와 같은 마이크로 컨트롤러 개발 키트를 고려하십시오 . 181 달러에 ARM Cortext A9가 들어 있습니다. Cyclone V 와 같은 A9를 수용 할 수 있는 FPGA 개발 보드 는 $ 1,099입니다.
embedded.kyle

@hhh 물론 저렴한 FPGA 개발 키트가 있습니다. 그러나 나는 매우 다른 두 가지를 비교할 수있는 메트릭을 찾으려고 노력했습니다. 따라서 거의 동일한 처리 성능을 가진 개발 키트는 약 10 배 더 많습니다.
embedded.kyle

@hhh Mouser에서 가장 저렴한 ARM은 $ 0.80 입니다. 가장 저렴한 FPGA는 $ 2.80 입니다.
embedded.kyle

2
@hhh 그 손은 수십만 달러의 커스텀 장비가 아니라면 수십만 개의 최첨단 연구를하고 있습니다. 일반적으로 비디오 처리는 더 높은쪽에있는 경향이 있습니다. 여기여기를 참조 하십시오 . 그리고 어느 것도 1kfps 비디오를 처리 할 수 ​​없었습니다. 30-60fps와 비슷합니다. 나열된 보드에 비디오 입력이 없습니다. 가장 확실하게 액츄에이터를 제어하고 촉각 센서를 처리 할 수 ​​있습니다. 당신이 연결 한 손을 모방 할 수있었습니다.
embedded.kyle

2

FPGA가 실제로 무엇이고 디자인에 사용될 때에 대해 오해가있을 수 있다고 생각합니다. 먼저 그 부분을 설명하려고합니다.

FPGA와 하나를 원할 때 ...

단순화의 위험이있는 FPGA는 재구성 가능한 프로세서에 지나지 않습니다.

누군가 '재구성 가능한'마이크로 프로세서를 원하는 이유는 무엇입니까? 실리콘 프로세서를 제조하는 데 너무 많은 비용이 들기 때문에 1, 2 또는 2 백 개의 칩에 사용할 수 있습니다. 경제적으로 실현 가능하게하려면 수천 개의 칩을 배치해야합니다.

처음부터 버그가없는 디자인이 없기 때문에 실리콘 경로를 사용하면 더 큰 테스트 비용이 들지 않으면 서 최소한 두 번의 테스트 비용으로 회사를 효과적으로 운영 할 수 있습니다.

이는 본질적으로 상업적으로 호소력이있는 칩 이외의 것을 설계하고 제조하는 데 관심이있는 상업 회사는 거의 없다는 것을 의미합니다.

그래서, 당신은 정당화 정의 마이크로 프로세서, 당신이있는 화려한 디자인으로 올 경우 실제 칩이 단순히 게이트의 집합 인 FPGA, 그것을 구현하여 적은 예산 생활에 당신의 아이디어를 살리려고 노력하고, '프로그램'(일반적으로 VHDL 또는 Verilog)은 이러한 게이트를 실제 마이크로 프로세서로 정렬합니다.

그러나 그것은 완전히 다른 (마이크로 프로세서 디자인!) 길을 따라가는 길입니다 ...

내가 제안하는 것은

... FPGA는 로봇 공학에 필수적인 것은 아닙니다.

로봇 공학에 필요한 것은 프로세서 입니다. FPGA는 특별한 종류의 프로세서입니다 (재구성 가능).

당신은 당신이 '해야'하는지 물어? 글쎄, 그것은 당신의 지식뿐만 아니라 당신의 진정한 관심사가 어디에 있는지-마이크로 프로세서 디자인이 먼저인가 로봇이 먼저인가에 달려 있습니까?

마이크로 프로세서가 당신의 열정이라면, 꼭! 또한 로봇 공학은 맞춤형 마이크로 프로세서, 하드웨어에서 직접 처리되는 병렬 결정 경로가 많은 비전 피질 또는 하드웨어의 특수 텐서 곱셈과 같은 기본 응용 프로그램 영역으로, 일반적으로 일반 프로세서가 제대로 처리 할 수없는 모든 것입니다.

그러나 FPGA에서 마이크로 프로세서 디자인을한다면, 물론 저수준의 지식과 그 이상의 지식이 필요합니다. 기본적으로 자신의 프로세서를 설계 할 것이기 때문입니다. 대상 응용 프로그램이 로봇 공학 일지라도 로봇 공학과는 아무런 관련이 없습니다.

대부분의 디자이너는 아마도 필요한 것의 대부분을 수행 할 기존 프로세서를 찾을 수 있습니다.

그래서 아마도 당신 은 FPGA가 필요 하지 않다고 생각합니다 .

상용 로드맵에서 (아마도) FPGA까지 ...

제 생각에는 첫 번째 목표는 모든 독창적 인 개념을 작동하는 로봇에 구축하는 것입니다 (중요한 도전 과제).

디자인에 구체적이고 중대한 처리 병목 현상이있는 경우 다음 목표는 여전히 상용 칩을 사용하는 프로세서의 선택 / 디자인을 최적화하는 것입니다. 어쩌면 더 크고 빠를 수도 있습니다 (전력 소모, 열 분산에 의한 거래). 특정 작업을 처리하고 주요 두뇌와의 인터페이스 (알고리즘 / 논리 합병증과의 거래)와 같은 작고 전용 칩.

상용 칩을 처리 할 수없는 기능이있는 경우에만 FPGA 내에 특수 프로세서를 구현하는 것을 고려할 수 있습니다. 그 시점에서 '자체 롤링을 통해 얻을 수있는 이점이 매우 분명하기 때문입니다. 그리고 나머지 디자인에 적합한 인터페이스를 통해 이러한 기능을 구현하는 데 집중할 수 있습니다.

그렇지 않으면, 당신은 당신의 주요 목표에서 부수적으로 추적 될 것입니다 (내가 가정 할 것은 실제로 로봇을 만드는 것입니다!)

결론 : FPGA는 로봇 공학을 시작하는 데 방해가되고 로봇 로봇의 길을 따라갈 때까지 방해가되며 디지털 전자 공학 / 마이크로 프로세서 설계에서 어느 정도 강력한 성과를 얻었습니다.


속도와보다 정확한 결과를 위해 FPGA를 사용한 병렬 처리가 필수적인 비디오 처리와 같은 영역에서 많은 예를 생각할 수 있습니다. 사람들이 단일 CPU로 시끄러운 홍채 감지를 실시간으로 구현하려고하는 장애를 발견했습니다. 아니요. FPGA에는 손재주 나 정밀 / 빠른 비디오 처리의 로봇 손과 같이 흔들리는 특정 영역이 있습니다. FPGA와 마이크로 프로세서를 병렬로 처리 할 수는 없습니다. 그들은 자신의 장점 / 나쁜면을 가진 매우 다른 짐승입니다. 잘못된? FPGA를위한 이런 좋은 영역이 어딘가에 나열되어 있는지 알 수 있습니까?
hhh

FPGA가 유리한 영역이 많이 있음을 확실히 알고 있습니다. 제 답변에서 제외하지 않았습니다. 문제는 당신이 경험 곡선에 있고, FPGA를 사용함으로써 얻을 수있는 특정 이점에 대해 얼마나 분명한가입니다. 당신이 그것에 대한 답을 모른다면 아마 당신은 하나가 필요하지 않을 것입니다! (이것은 아래 Jakob의 답변을 반영합니다.)
Assad Ebrahim

1

로봇 공학 프로젝트에서 FPGA와 마이크로 컨트롤러 모두와 함께 작업 한 결과, 실제로 작업을 수행하는 사람이 가장 경험이 많은 것은 무엇이든 말할 수 있습니다. 둘 다 똑같이 잘 알고 있다면 스스로에게 질문하지 않을 것입니다. 잘 모르는 경우 다음과 같은 사항을 고려해야합니다.

  • I / O 포트에 복잡한 타이밍이 필요합니까? 3 상 모터 제어에는 이러한 요구 사항이있을 수 있습니다. FPGA는 여기에 약간의 이점이 있습니다.
  • 초저 지연 시간 알고리즘을 병렬화 할 수 있습니까? 여기서 FPGA는 실제로 마이크로 컨트롤러와 경쟁하지 않고 임베디드 PC와 경쟁합니다. 임베디드 PC에는 대부분의 것들이 있지만 일부 특정 애플리케이션에서는 FPGA를 사용하는 것이 유리할 수 있습니다. 예를 들어 고밀도 스테레오 프로세싱은 종종 FPGA에서 수행됩니다. 많은 카메라가 데이터 스트림을 처리하기 위해 FPGA를 사용합니다.

하이브리드 솔루션도 자주 사용됩니다. 두 개의 칩, 즉 프로그램 코드를위한 하나의 마이크로 컨트롤러 및 IO 또는 다른 작업을위한 FPGA가 있습니다. 실제로 마이크로 컨트롤러가 내장 된 여러 FPGA가 있습니다.

다른 포스트와 마찬가지로 FPGA에 대해서는 가혹하지는 않지만 VHDL을 잘 알지 못하면 마이크로 컨트롤러를 사용하는 것이 더 좋으며 임베디드 PC를 사용하는 것이 더 나을 것이라고 일반적으로 주장합니다.


FPGA로 어떤 종류의 일을하는 것이 좋으며 마이크로 컨트롤러로 어떤 일을하는지 이해하는 데 도움이되는 프로젝트 예를 보여줄 수 있습니까? 예를 들어 선을 따르는 로봇을 가정 해 봅시다. 이미지 선명 / 콘볼 루션 등을 필요로하는 더 흐릿한 선까지 평평한 깨끗한 표면에있는 단일 마이크로 컨트롤러와 잘 작동합니다. 숲 (또는 다른 시끄러운 표면)에 줄이 있으면 훨씬 더 어려울 것입니다 (fpga로 가능한지 의심 스럽습니다). 이미지 / 비디오 프로세싱 실시간으로 fpga를 사용한 실제 로봇 프로젝트를 수행 했습니까? VHDL의 경우 +1
hhh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.