문제

프로그래밍을 배우기 전부터 나는 로봇이 어떻게 작동하는지에 매료되었습니다.이제 기본 프로그래밍 지침이 어떻게 작성되는지 알지만, 로봇이 이러한 지침을 따르는 방식이 이해되지 않습니다.

예를 들어, 다음 코드를 작성했다면:

object=Robot.ScanSurroundings(300,400);
if (Objects.isEatable(object))
{
   Robot.moveLeftArm(300,400);
   Robot.pickObject(object);
}

로봇이 왼쪽을 바라보고, 팔을 움직이는 등의 물리적 동작을 수행하도록 하는 방식으로 CPU가 이 프로그램을 어떻게 따르게 될까요?주로 이진 언어/ASM으로 수행됩니까?

마지막으로, 로봇을 만드는 법을 배우고 싶다면 어디로 가야 할까요?

도움이 되었습니까?

해결책

대부분의 최신 로봇에는 공간 좌표를 팔 관절의 위치로 변환하는 메커니즘(이 경우 팔)의 역기구학 모델이 ​​있습니다.이러한 관절은 일반적으로 서보 모터에 의해 움직입니다.팔을 부드럽게 움직이려면 팔이 따라갈 경로를 정의하는 일련의 중간 관절 위치가 필요합니다.또한 팔 끝에 있는 "손"의 속도를 함께 제어하는 ​​관절의 속도에 대해서도 걱정해야 합니다.

팔이 움직이는 동안 서보 시스템은 실제 위치에 대한 피드백을 받게 됩니다.간단한 서보 시스템은 기본 PID 피드백 루프를 사용하여 모터를 조정할 수 있습니다.보다 복잡한 시스템에는 관성, 중력, 마찰 등을 보상하는 피드포워드 매개변수가 포함됩니다.이는 매우 정교해질 수 있습니다.

진짜 재미는 로봇 주변 공간의 장애물을 허용해야 할 때부터 시작됩니다.장애물을 감지하고 이를 피하면서 목적지에 도달하는 방법을 알아내야 합니다.

다른 팁

결국, 높은 수준의 명령을 매우 낮은 수준의 명령으로 분해해야 합니다."컵을 들어 올리세요"를 팔을 움직이는 방법(관절이 어떤 각도에 있어야 하는지)으로 변환하여 실제로 모터를 회전시키는 하드웨어 명령으로 변환해야 합니다.

다음을 포함하되 이에 국한되지 않고 일정량의 번역을 제공하려고 하는 프레임워크가 있습니다.

그러나 로봇공학 연구는 시스템의 모든 계층에 관심이 있기 때문에 전체 번역 스택을 제공하는 시스템은 많지 않습니다.로봇 공학에 관심을 갖고 있다면 이를 더 쉽게 만들 수 있는 여러 시스템이 있습니다(다시 말해 무작위 샘플).

그렇지 않으면 다음과 같은 사이트가 발생합니다. 만들다 시작하는 로봇 프로젝트 구축에 대한 가이드도 제공합니다.도전은 당신이 흥미를 느끼는 프로젝트를 찾아 도시로 가는 것입니다!

체크 아웃해야합니다 Microsoft Robotics Studio (부인). 그들은 많은 것을 가지고 있습니다 비디오/스크린 캐스트, 그리고 서면 튜토리얼. 또한 Channel9가 있습니다 많은 비디오, Robitics 주제에 대한 인터뷰 등. 시연 및 MRS 개발자와의 인터뷰를 포함합니다.

나는 단지 뭔가를 추가해야합니다 Arduino 프로젝트 위에서 언급 한 것을 볼 수 없기 때문에 이것.

Arduino 기반 로봇 프로젝트에 진입하기위한 막대가 매우 낮습니다. 하드웨어에 대해 작성하는 "스케치"프로그램은 픽업하기가 매우 쉽고 C 구문과 유사합니다. 저항기의 트랜지스터를 모르는 경우이 보드는 여전히 플러그인 하드웨어 및 추가로 많은 것을 수행 할 수 있습니다. "방패" 기본 컴퓨터 보드를 확장합니다.

매우 재미 있고 매우 유연하며 코드가 실제 세계와 상호 작용할 수있는 무언가입니다. 또한 오픈 소스 소프트웨어 라인을 따라 "오픈 하드웨어".

로봇은 하드웨어와 상호 작용하여 작동합니다. 코드의 브리지는 종종 다른 유형의 I/O 포트를 통해 수행됩니다. 예를 들어 RS232 케이블 일 수 있습니다 (이전 COM1 포트를 알고 있습니다). 하드웨어 부품은 모터 (예 : 서보 모터) 및 센서 (예 : 장애물을 느끼기위한 초음파, 거리 또는 스위치를 얻기위한 레이저).

어셈블러를 사용할 필요는 없으며,이를 수행 할 수있는 많은 언어가 있지만 하드웨어와 상호 작용하는 방법에 대한 지식이 필요합니다. 운전자를 쓰는 것과 같습니다. 로봇을 직접 구축하려면 최소한 기본 전자 장치가 필요합니다.

관심이 있다면, 나는 당신이 이 책 좋은 프라이머입니다.

또한 프로그래밍을 시도 할 수 있습니다 기본 스탬프, 튜토리얼을 따르는 것은 매우 쉽고 로봇을 만드는 방법에 대한 좋은 출발을 제공합니다. 너무 비싸지 않으며 즉시 하드웨어와 상호 작용할 것입니다.

행운을 빌고 재미있게 보내!

당신이 프로그래밍에 충분히 잘 잡히면, 당신은 당신이 작성해야 할 가장 어려운 코드를 테스트하기 위해 실제로 로봇이 필요하지 않다는 것을 알 수 있습니다 ... (즉, 로봇이 항상 매료 된 장면을보고 인식하게 만들었습니다. 나 ...하지만 어느 시점에서, 나는이 문제에 필요한 물리적 로봇이 쉬운 부분이라는 것을 깨달았습니다 ... 소프트웨어가 어려운 부분입니다!) ...

로봇의 행동과 지능을 설명하고 낮은 수준의 언어를 행동으로 만들기 위해보다 높은 수준의 언어를 얻는 것이 더 쉽습니다 (팔, 걷기, 중지). 지능형 에이전트를위한 BDI 아키텍처 (BDI Architecture)에 대한 많은 연구가 있습니다.

이것에 대해 더 자세히 찾을 수 있습니다 대지, Java에서 작성된 에이전트 동작을 설명하기위한 DSL입니다. Jason Interpreter라고하며 언어는 Agentspeak (L)입니다.

현지인을 찾으십시오 첫 번째 로봇 팀과 멘토가되기위한 자원 봉사. 첫 번째는 중학교 어린이들을위한 로봇 공학 경쟁입니다. 목표는 아이들이 로봇을 구축, 프로그램, 테스트 및 실행하기 위해 모든 작업을 수행하지만 소프트웨어를 파고 실제로 배울 수있는 많은 기회를 갖게 될 것입니다. 그들은 사용 중입니다 labview National Instruments와 2 월 8 일부터 올해의 지역 경쟁을 시작했습니다. LabView는 NI 하드웨어와 인터페이스하여 모터, 액추에이터 및 센서를 프로그래밍 할 수있는 그래픽 프로그래밍 환경입니다. Ni 물건은 꽤 매끄럽고 사용하기 쉽고 각 팀에게 무료로 제공되므로 하드웨어와 소프트웨어를 직접 구입할 필요가 없습니다 (적어도 시작하기 위해) 추가 보너스를 얻을 수 있습니다. 새로운 세대의 엔지니어가 시작하도록 돕습니다.

하드웨어와 인터페이스 한 드라이버가 있어야합니다 (모터 등이있는 스탬프 또는 FPGA 일 가능성이 높습니다 ...). 그런 다음 함수를 me.moveleftarm (x, y)이라고 부릅니다. 그리고 운전자는 Moveleftarm ()이 x 초/밀리 초/도 동안 액추에이터를 이동하는 것을 의미한다는 것을 알고있을 것입니다.

로봇 프로그래밍을 수행하는 키트를 찾을 수 있다고 확신합니다.

Java 대안을 원한다면 책을 추천 할 수 있습니다. 리눅스 로봇 공학. 키트, 부품 및 센서를 얻을 수있는 곳과 Java의 완전한 소스 코드 목록에 대한 많은 정보가 있습니다.

같은 가려움증을 공유합니다 ..처음으로 구매하려고 해요 비글보드 그리고 이를 사용할 수 있는 일부 센서/서보 I2C 버스.나는 이벤트 기반 디자인과 사용자 공간 스레드인 파이버(원하는 경우 원섬유)의 조잡한 구현을 사용할 것입니다.

기본적으로 내 디자인에는 서보 그룹당 하나의 스레드를 실행하는 하나의 프로세스가 필요합니다.각 그룹 관리자 스레드는 서보당 2개(아마도) x개의 피브릴을 실행합니다.하나의 피브릴은 서보를 제어하는 ​​데 사용되고, 다른 피브릴은 해당 서보의 이벤트를 처리합니다(예: 물체를 들기에는 너무 무거움, 물체가 떨어짐 등).

주요 프로세스에는 다른 모든 것의 이벤트를 듣고 앞으로 나아가고 장애물을 협상하는 동안 '왼손이 하는 일을 오른손이 알도록' 하는 작업이 있습니다.

내가 자랑스러워할 만큼 작동하는 일을 하려면 2년 중 더 많은 시간이 걸릴 것입니다.그러나 나는 그 지점까지 가는 많은 즐거운 저녁을 기대합니다.

나는 Linux가 아닌 Microkernel을 사용할 가능성이 매우 높습니다.

나는 이벤트 기반 방법으로 나 자신을 날카롭게 하고 나만의 R2를 만들고자 하는 욕구만큼 이 일을 하고 있습니다 :)

시작합니다 phidets .NET에 익숙한 경우. 체크 아웃 할 수 있습니다 trossenrobotics.com 부품의 경우.

Phidgets 인터페이스 키트는 시작하기에 좋은 장소입니다. 거기에서 서보 컨트롤러를 구입하고 움직이는 물건을 구축하기 시작할 수 있습니다.

Trossen 포럼은 또한 다른 사람들의 프로젝트를 검토하기에 좋은 장소입니다. 코드/프로젝트 샘플이 포함 된 새로운 데이터 센터가 있습니다. 나는 그들을 위해 일하지 않습니다 ... 단지 행복한 고객입니다.

여기에 많은 좋은 답변이 있습니다. 판타지 코드는 MS Robotics Studio를 통해 C#과 같은 더 높은 수준의 언어에서하는 방식과 멀지 않습니다. 단순한 것들 ( "Move Arm Left"와 같은 단순한 것들조차도 "정보 바이어스"가 매우 적재됩니다.

금속까지 로봇 암은 일련의 링크와 [아마도] 전동 조인트입니다. 따라서 "Move Arm Left"(또는 좌표의 모든 지점)는 이미 계산하기에 매우 복잡한 작업입니다 (D & H 테이블, 앞으로 및 조작기를위한 역 운동학을 찾으십시오).

Move Arm Left가 그 공간에 아무것도 없다고 가정하고 충돌이 발생하지 않는다고 가정하는 개념도 있습니다. 환경이 제한되지 않은 경우 종종 일종의 센서 (카메라) 및 기계 비전 알고리즘을 기반으로 충돌 감지 시스템을 구현해야합니다.

요약하면, 언어와 하드웨어 인터페이스는 종종 원하는 동작을 달성하기 위해 시스템을 모델링하는 것과 비교할 때 사소합니다.

"로봇을 만드는 방법"마지막 질문과 관련하여 [Adafruit] [1], [Hackster.io] [2] 또는 [Glitch] [3]와 같은 온라인 커뮤니티에서 관련 프로젝트를 찾는 데 시작합니다. 또는 처음부터 로봇을 만든 사람의 블로그 게시물을 찾고 있습니다. https://burningservos.com, 또는 하드웨어 및 소프트웨어에 대한 문서 및 자습서를 제공하는 제품, 예를 들어, http://emanual.robotis.com/docs/en/platform/openmanipulator_x/overview/.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top