분류없음2017.10.18 02:21

OpenOCD를 이용하여 디버깅 할려고 할때 nRF52832는 아직 플래지 지원이 되지 않아 지원되는 버전을 소스를 다시 컴파일해서 사용해야 한다. 


아직은 리눅스에서 가능하고 윈도우용은 찾아 봐야 할 것 같다.





git clone git://git.code.sf.net/p/openocd/code openocd-code


cd openocd-code/ 


./bootstrap
./configure
make
sudo make install

Posted by chcbaram
Robots2017.10.09 23:22

Arduino IDE에 햄스터로봇을 추가하고, Hamster 라이브러리를 이용하여 로봇을 제어 할 수 있다. 아래 예제를 Arduino 스케치로 작성하고 실행하며, 햄스터로봇이 손바닥과의 일정 거리를 유지하면서 움직이는것을 볼 수 있다. 
Hamster 라이브러리는 기존의 hamster의 api를 포팅하였음으로 기존의 예제들을 대부분 사용 할 수 있다. 


hamster 라이브러리에서 구현된 함수는 아래와 같다. 모든 api 함수가 포팅된것은 아님으로 주의가 필요하다. 

// API
//
void wheels(double leftSpeed, double rightSpeed);
void leftWheels(double speed);
void rightWheels(double speed);
void stop(void);
void leds(int leftColor, int rightColor);
void leftLed(int color);
void rightLed(int color);
void beep();
void buzzer(double hz);
int leftFloor(void);
int rightFloor(void);
int leftProximity(void);
int rightProximity(void);
int accelerationX(void);
int accelerationY(void);
int accelerationZ(void);
int light(void);
int temperature(void);

 




주의할 점은 hamster.begin 함수의 파라메터로 햄스터 로봇 제어를 위한 USB 동글의 시리얼포트를 입력해 주어야한다. 시리얼 포트 번호를 연결되는 PC마다 다를 수 있기때문에 확인 후에 해당 번호로 입력한다.


#include <hamster.h>


Hamster hamster;



void setup() {

  // put your setup code here, to run once:

  hamster.begin("COM16");

}


void loop() {

  int left;

  int right;

  int length;

  int error;

  int error_handle;

  int motor_speed = 0;

  int l_speed = 0;

  int r_speed = 0;

  int speed_control_out;

  int handle_control_out;

  int error_margin = 3;


  

  left  = hamster.leftProximity();

  right = hamster.rightProximity(); 

  length = left+right / 2;


  error = 60 - length;

  speed_control_out = error / 1;

  if (speed_control_out < error_margin && speed_control_out > -error_margin)

  {

    speed_control_out = 0;

  }

  

  error_handle = (left - right);

  handle_control_out = error_handle / 1;

  if (handle_control_out < error_margin && handle_control_out > -error_margin)

  {

    handle_control_out = 0;

  }

  

  l_speed = speed_control_out - handle_control_out;

  r_speed = speed_control_out + handle_control_out;


  l_speed = constrain(l_speed, -100, 100);

  r_speed = constrain(r_speed, -100, 100);


  if (length == 0)

  {

    l_speed = 0;

    r_speed = 0;

  }

  Serial.print(length);

  Serial.print(" ");  

  Serial.print(error);

  Serial.print(" ");

  Serial.print(speed_control_out);

  Serial.print(" ");

  Serial.print(handle_control_out);

  Serial.print(" ");

  Serial.print(motor_speed);

  Serial.println("");


  hamster.wheels(l_speed, r_speed);

  delay(20);








'Robots' 카테고리의 다른 글

[햄스터로봇] 손따라가기 예제  (0) 2017.10.09
[햄스터로봇] Arduino 하드웨어 설치  (0) 2017.10.09
외골격 로봇  (0) 2017.07.06
Posted by chcbaram
Robots2017.10.09 23:19



햄스터 아두이노 하드웨어 설치

https://github.com/chcbaram/hamster_arduino 에서 소스코드를 다운로드 한다. 

내문서 폴더안에 있는 Arduino\hardware 폴더에 다운로드한 소스코드를 hamster라는 폴더로 압축을 해제한다. 


압축을 해제하면 hamster 밑에 hamster 폴더와 tools 폴더가 있다. tools 폴더 안에는 초기에는 cmd_run 폴더만 존재한다. mingw64는 윈도우에서 사용할 수 있는 gcc 컴파일러로 별도로 다운로드해서 복사를 해 주어야 한다. 


아래 사이트에서 최신 버전을 다운로드 후에 hamster/tools 폴더 아래에 압축을 해제 한다. 그러면 mingw64 폴더가 생성이 되고 gcc 컴파일러가 복사된다. 

https://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.1/64-bit/threads-posix/seh/


GCC 실행을 위해 DLL파일들이 필요한데, Arduino IDE 폴더에 해당 DLL을 복사 해줘야 정상적으로 GCC가 실행된다. mingw64->bin 폴더에 있는 아래 dll 파일들을 모두 Arduino IDE 설치 폴더에 복사를 한다. 




Arduino IDE 실행


Arduino IDE를 실하고 Tools->Board에 가면 hamster 보드가 추가된것을 볼 수 있다. 이제 부터는 hamster를 선택하면 햄스터로봇에 아두이노를 이용하여 코딩 할 수 있다.





'Robots' 카테고리의 다른 글

[햄스터로봇] 손따라가기 예제  (0) 2017.10.09
[햄스터로봇] Arduino 하드웨어 설치  (0) 2017.10.09
외골격 로봇  (0) 2017.07.06
Posted by chcbaram