로봇의 빠른 삼각법을위한 마이크로 컨트롤러 / CPU?


15

이것은 (무게 고양이 크기, 3 DOF 6 다리) 보행 로봇이 운반해야하기 때문에 무게가 작은 하드웨어와 관련이 있습니다. 그 걷기 때문에 많은 삼각법 (매트릭스 수학 사용 또는 확실하지 않음)을 수행해야하며 이것이이 질문의 시작 부분입니다.

PIC, Arduino 또는 저렴한 AVR은 100 / 초의 모든 것을 계산하고 관성 및 장애물 회피를 염두에 두거나 심지어 무차별 경로 / 걸음 걸이를 유지하기에 충분히 빠르지 않습니다.

  • 계획 A는 로봇에 뇌를 운반하는 것입니다. 마이크로 프로세서, 마이크로 ITX, 넷탑 또는 기타가 될 수 있습니다. 삼각법 / 행렬 연산을 빠르게 수행하는 효율적인 하드웨어는 무엇입니까?

    온라인에서 검색 한 결과 AVR, x86 또는 ARM 마이크로 컨트롤러에 대한 정보를 얻을 수 있었지만 운이 없었습니다.

  • 계획 B는 무거운 짐을 들어 올리기 위해 WiFi를 통해 x86 기계를 연결하는 것입니다. 프로토 타이핑에도 좋지만 하드웨어가 소형화 될 때 계획 A로 마이그레이션하고 싶습니다. 그러나 그럼에도 불구하고 어떤 데스크톱 CPU가 삼각법을 가장 빠르게 수행 할 수 있습니까?

  • 계획 C는 부하를 분산시키고 각 레그에 대해 하나의 전력 효율적인 마이크로 컨트롤러 / 코어를 갖도록하는 것입니다.

아직 사용 된 언어 및 / 또는 라이브러리를 결정하지 않았지만 Pascal 및 C ++를 선호합니다.

(보다 적합한 태그에 대한 제안은 환영합니다, 나는 여기에 새로운 것입니다)


11
부동 소수점 수학은 필수는 아닙니다. 항상 사인 (또는 다른 함수) 테이블을 작성하고 AVR 플래시에 넣고 고정 소수점 계산으로 값 사이를 보간 할 수 있습니다. 이것은 귀하의 요구에 충분히 빠를 수 있습니다.
Christoph

3
무거운 수학을 실시간으로 잃어 버리는 대신 일반적인 해결책은 값 테이블을 미리 계산 한 다음 답을 찾는 것입니다. 여러 CPU간에 작업을 분배한다는 아이디어도 좋습니다 (예 : 하나의 강력한 마스터 CPU와 다리 당 하나의 프로세서).
John U

2
Robotics Stackexchange 사이트 에서 이런 종류의 질문을하는 것도 고려할 수 있습니다 .
Rocketmagnet

1
계획 B는 계산을 매우 빠르게 수행하지만 WiFi를 통한 통신은 아마도 성능 향상을 떨어 뜨릴 것입니다. USB를 통해 연결된 Android 전화를 사용해 보셨습니까? Wi-Fi 지연없이 훨씬 더 강력한 컴퓨팅 성능
stefan

1
부동 소수점 장치가있는 STM32F4 보드는 귀하의 응용 분야에 충분합니다. 64k CCM의 128k SRAM이 있습니다. 168MHz에서 실행할 수 있습니다. 32 비트 부동 소수점 곱셈은 단지 하나의 CPU 사이클을 얻어 ..
richieqianle

답변:


16

응용 프로그램이 실제로 계산 집약적 인 것처럼 들리지는 않습니다. 예를 들어 dsPIC은 각 반복마다 400k 명령을 실행할 수 있습니다. 많이입니다. 그러나 좋은 저수준 I / O 기능, PWM 생성기, 타이머 등을 갖는 것이 유용 할 것입니다.

사인과 코사인은 실제로 dsPIC와 같은 정수 기계에서는 그렇게 어렵지 않습니다. 나는 그것을 몇 번 스스로 해냈다. 요령은 각도에 대한 올바른 표현을 선택하는 것입니다. 라디안은 이론적 인 관점에서는 좋지만 계산 상 불편합니다. Degress는 인공적이고 바보입니다. 기계 크기 정수가 하나의 전체 회전을 나타내는 모든 범위를 사용하십시오. 예를 들어, 16 비트 프로세서 인 dsPIC에서 한 번의 전체 회전은 65536 카운트입니다. 이는 로봇을 제어하거나 측정 할 수있는 것보다 훨씬 정확한 정확도와 해상도입니다.

이 표현의 한 가지 장점은 부호없는 정수가 더하고 빼는 방식으로 인해 모든 줄 바꿈이 자동으로 수행된다는 것입니다. 또 다른 중요한 이점은이 표현이 사인 및 코사인에 대한 조회 테이블을 사용하는 데 특히 적합하다는 것입니다. 1/4 사이클 만 저장하면됩니다. 각도의 상위 2 비트는 현재 사분면을 나타내며, 테이블에 앞뒤로 색인을 생성할지 여부와 결과를 부정할지 여부를 알려줍니다. 다음 N 하위 비트는 2 N 세그먼트 (2 N +1 포인트)를 갖는 테이블로 인덱스하기 위해 사용됩니다 . 테이블에 거꾸로 인덱싱하는 것은 테이블 인덱스 비트를 보완하는 것입니다.

가장 가까운 답을 고르는 것이 충분하도록 표에 충분한 점수를 줄 수 있습니다. 예를 들어, 테이블에 1024 개의 세그먼트가 있으면 사인과 코사인이 가장 가까운 원의 1/4096까지 계산됩니다. 그것은 로봇을 제어하기에 충분할 것입니다. 정확도를 높이려면 테이블을 더 크게 만들거나 각도의 나머지 하위 비트를 사용하여 인접한 테이블 항목간에 선형 보간 할 수 있습니다.

어쨌든 요점은이 프로세서에 대한 요구 사항이 명시된 문제와 일치하지 않는 것입니다. 아마도 dsPIC33F를 사용했을 것입니다. 그것은 단일 보드 컴퓨터의 x86과 같은 완전한 범용 컴퓨팅 프로세스보다 확실히 작고 가벼우 며 훨씬 더 효율적입니다.


나는 항상 역 운동학조차도 PIC가 느려질 것이라는 인상을 받았지만 다시 재고해야 할 수도 있습니다. 6legs의 3DOF에 대해 최소 100 / 초에 역 운동학을 수행 할 수 있습니까? 6x3x100 역 운동학은 단지 실제 다리 움직임을 얻는 것입니다. 어쨌든 알고리즘이 실행되는 동일한 플랫폼에서 역 기구학이 필요하므로 이러한 부분을 두 번 다시 구현할 필요가 없습니다. 이 알고리즘은 더욱 까다로워서 PIC 또는 Arduino-isch 보드에서 실행될 수 없습니다.
Barry Staes 2016 년

9

많은 입력 신호를 다룰 것입니다. 처리량이 많은 CPU가 반드시 필요한 것은 아닙니다. 많은 신호를 병렬로 처리 할 수 ​​있습니다. 이것이 전형적인 DSP 영역입니다. 물론 일반적인 CPU 기능도 필요합니다. 문제 없습니다. DSP가 내장 된 CPU가 많이 있습니다.

이러한 애플리케이션을위한 일반적인 칩 설계는 Cortex-M4입니다. 이것은 통합 DSP와 함께 제공되며 -M4F 버전에도 FPU가 있습니다. 이것은 필요하지 않을 수 있으며 삼각법은 고정 소수점 수학으로 쉽게 수행 할 수 있습니다.


매트릭스 수학이 Cortex-M4F에서 우위를 차지할까요? (내가 거기서 프로토 타이핑을하는 경우)
Barry Staes

3
조금만 보자면 Cortex-M4 프로세서 코어에는 DSP가 내장되어 있지 않고 메인 프로세서 코어에 어느 정도의 DSP 기능이 통합되어 있습니다. DSP 확장은 필터링 및 변환과 같은 일반적인 DSP 기능을 용이하게하는 곱하기 / 누적 명령어를 추가 한 것입니다.
uɐɪ

6

몇 가지 말 :

  1. 장애물 회피를 실행하는 동일한 CPU에서 삼각법 연산을 처리 할 필요가 없습니다. 두 마이크로 컨트롤러간에 작업을 분할하고 통신 프로토콜을 사용하여 대화를 나눌 수 있습니다.

  2. 실험 을 위해 ARM Cortex M0 마이크로 컨트롤러 (STM32 였고 나머지는 정확히 기억하지 않지만 32 MHz라고 생각합니다)에서 Kalman 필터를 사용 하여 AHRS 알고리즘을 구현했으며 고정 소수점 수학을 사용하여 실행할 수 있습니다 약 40 샘플 / 초로. 더 빠른 컨트롤러를 사용하면 쉽게 휴대 할 수 있어야하며 물론 FPGA 또는 DSP 방식으로 시도 할 수 있습니다.

  3. 다리 제어는 CPU를 많이 사용하지 않으며 삼각법 및 장애물 회피 작업과 별도로 모든 다리를 함께 제어 할 수 있다고 말하고 싶습니다 (1 참조)


서보는 컨트롤러 또는 다이나믹 셀 버스를 통해 직렬로 제어되므로 기본적으로 이미로드되어 있습니다. 문제는 소프트웨어가 라이브 포즈 / 보행에 필요한 것보다 더 많은 역 운동학 계산을 수행해야한다는 것입니다.
Barry Staes 2016 년

5

삼각법은 까다 롭지 만 지름길이 있습니다. 처리 능력이 부족하면 CORDIC 알고리즘을 고려하십시오.

기본적으로 [예를 들어] 사인 값 테이블입니다. 각도는 각도, 라디안 등 원하는대로 지정할 수 있습니다. 요점은 이러한 값의 SINE은 로봇이 사용할 수있는 정도의 1/2에 해당하는 1/2 (0.5), 1/4 (0.25), 1/8, 1/16 .....입니다.

각도를 입력하고 첫 번째 테이블 값을 빼고 결과를 첫 번째 결과 (0.5)로 설정하십시오. 만약 당신이 각도를 낮추어 당신의 각도가 음수가되면, 다음 값을 더하십시오 (그리고 0.25를 빼십시오). 그렇지 않으면 각도를 빼고 결과를 추가하십시오.

당신이 테이블의 끝에 도달하면, 당신이 한 것은 더하기와 빼기이지만 당신은 아주 가까워집니다. 곱할 마지막 "바이올 팩터"가 있습니다.

결과의 정확도 및 속도는 룩업 테이블의 크기 및 해상도에 따라 다릅니다.


CORDIC은 멋져 보이지만 로봇을 더 빠르게 만드는 경우에만 사용합니다 (필수 사항).
Barry Staes 2016 년

3

범용 GNU / Linux 시스템을 실행하는 Raspberry Pi 보드 사용을 고려할 수 있습니다. Raspberry Pi에는 로봇 서보 또는 확장 보드를 연결하는 데 사용할 수있는 여러 GPIO 핀이 있습니다.

http://www.youtube.com/watch?v=RuYLTudcOaM

Raspberry Pi 모델은 OpenGL ES 2를 사용하는 GPU를 사용하여 최대 24GFLOP의 범용 부동 소수점 계산을 최대 24W의 예산으로 유지하면서 수행 할 수 있습니다.

http://elinux.org/RPi_Hardware

예 : Raspberry Pi를 사용하여 구현 된 배터리 구동 로봇 설정.

http://www.homofaciens.de/technics-robots-R3-construction_en_navion.htm

예 2 : 라즈베리 파이로 제어되는 6 개의 다리 달린 로봇 :

http://www.youtube.com/watch?v=Yhv43H5Omfc

예 3 : 라즈베리 파이로 제어되는 자체 밸런싱 2 륜 반전 진자 로봇 :

http://www.youtube.com/watch?v=n-noFwc23y0


2

다리 로봇의 경우 미리 정의 된 다리 이동 시퀀스를 생성하고 "재생"할 수 있습니다. fuzzy logic모든 것이 다시 테이블 형식으로되어 있고 올바른 값을 선택하여 defuzzyfication프로세스에 사용하는 간단한 구현 으로 실시간 장애물 회피를 수행 할 수 있습니다 .

C에서 어떻게 든 더 빠른 프로세서에서 모든 것을 수행 할 수 있습니다 ARM7. 나는 AVR모든 것을로 바꾸는 데 많은 시간을 보낸 후에 그것을 시도 하고 실패했습니다 fixed point arithmetics.


걸음 걸이 애니메이션을 재생하는 것은 내가 원하지 않는 것입니다. 내가 구현 한 알고리즘은 다리 자체로 무엇을해야하는지 알아 내고 싶습니다. 그 알고리즘 때문에 빠른 삼각법이 필요합니다. 그러나 내 질문에 그것을 분명히하지 못했습니다. 그리고 이것에 너무 많은 차임이 있다는 것을 알면 나는 질문을 편집하지 않아도됩니다. 시간이 지나면 더 구체적으로 물어볼 것입니다.
Barry Staes

이 경우 서보 레그 시스템을 사용합니다. 각 다리에는 자체 컨트롤러가 있습니다. 에이전트 기반 접근.
Gossamer

1

Texas Instruments Stellaris 플랫폼에는 기본적으로 부동 소수점 장치가 있습니다. 80MHz 클럭 ARM 컨트롤러가 애플리케이션에 충분한 속도인지 확실하지 않지만 런치 패드 개발 보드는 상당히 저렴합니다. http://www.ti.com/ww/en/launchpad/stellaris_head.html

USB를 통해 프로그래밍이 가능하며, 최소 Windows 및 Linux에서 무료 툴체인을 사용할 수 있으며 약 4 × 6cm 크기이며 30 개 이상의 GPIO 핀이 있습니다 (정확하게 계산 된 경우).


0

당신은 할 수 귀하의 로봇 응용 프로그램에 86 파워 PC의 CPU 보드를 포함 경계면 카드로 로봇의 구동을 제어하는 AVR의 도움으로. 가장 빠르고 저렴한 솔루션 문제의. 그러나 예, x86 아키텍처로 많은 코딩을 엉망으로 만들어야하지만, 다행히도 오픈 소스 OS 코드에서 많은 코딩을 파악할 수 있습니다. (기계 구조가이 무게를 견딜 수있는 경우)


4
"x86"과 "power pc"는 경쟁 아키텍처와 완전히 다른 (적어도 역사상 어떤 시점에서는) 두 가지입니다.
Chris Stratton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.