[IoT Project] J-bot 외형 제작 과정 #1

안녕하세요. 제이콥입니다.

오늘은 J-bot의 외형 제작 준비 과정을 적어봤습니다.
준비 과정을 작성하기에 앞서, J-bot에 대한 소개부터 하겠습니다.

간단한 소개

J-bot은 Jacob`s robot으로, 제가 상상해왔던 모든 것을 적용해볼 로봇입니다. 누구나 직접 만들 수 있는 로봇을 꿈꾸고 있습니다. 그리고 소프트웨어에 집중을 하고 싶어, google AIY voicekit를 기반으로 시작하 였습니다. 한 마디로 표현하자면 DIY Smart Robot using google AIY voicekit 입니다.

현재 J-bot의 기능은 아래와 같습니다.

  • Google assistant와 연동 (날씨 체크, 주가 확인, 캘린더 등록)
  • 사진 촬영
  • 말을 할 때, 로봇팔을 흔든다.
  • 로봇 가까이 손을 두면 로봇팔을 흔든다.

앞으로 개발할 기능이 무궁무진합니다.

  • 비서로서의 역할 (날씨 정보 제공, 캘린더 등록)
  • 스팀잇과의 연동 고려 (스팀 최신 글 읽어주기, 음성으로 보팅 명령하기스팀잇 챗봇 강좌)
  • @willpark님 스팀잇 챗봇 글을 보고 연동하면 좋겠다 생각했습니다.
  • 주변의 여러 IoT 제품을 제어 (불 키고 끄기)
  • 감시 시스템 & 알림

외형을 만들자

이전 글을 보신분들은 아시겠지만, J-bot의 외형은 아직 준비되지 않았습니다. 기능들도 중요하지만 보여지는 것도 중요하기 때문에 먼저 외형을 제작할 것입니다. 먼저, 다른 사람들은 어떻게 외형을 만들었나 살펴봤습니다. Thingiverse - AIY voicekit의 검색 결과 Thingiverse라는 사이트는 3d printing 파일을 서로 공유하는 사이트 입니다. 여기서 검색을 해보니 몇몇 사람들이 3d printing을 이용해서 voicekit의 외형을 아래처럼 만들었습니다. 저도 아래 외형들을 참고해서 만들고자 합니다.

image.png


설계 준비

예전에 sketchup이라는 툴을 사용해본적이 있는데 이것으로 설계할 예정입니다. J-bot은 1번 고양이 형태에다가 눈에는 초음파 센서를, 코에는 카메라를 부착할 것입니다. 기존에 설계된 파일을 무료로 다운받을 수 있어서 그 파일에서 시작했습니다. https://www.thingiverse.com/thing:2783658 그림에서 살짝 앞으로 튀어나온 눈과 코를 볼 수 있는데, 보기 쉽게 일단 저렇게 튀어나오게 해놨습니다. 그 부분에 구멍을 뚫고, 초음파 센서와 카메라를 부착합니다. 옆에는 스팀 그림도 넣을 것 입니다.

image.png

3d printing 하기

서울에서 무료로 3d printer를 사용할 수 있는곳이 어딘지 찾아봤는데 수원에 시제품 제작터가 있더군요. http://www.mss.go.kr/site/gyeonggi/03/10302010000002016110903.jsp 전화해서 확인 해봤는데 현재도 운영 중입니다. 이 곳에 가서 만들 예정입니다. 체크해야할 것이 있는데 다시 전화를 해볼 예정입니다.

  • stl파일을 sd카드에 담아가면 되는지? (체크 필요)
  • 운영시간에 무료로 사용 가능
  • 3d printing 필라멘트 개인 구매, 혹은 시제품 제작터에서 산다.

끝맺음

로봇의 외형 제작을 위한 과정을 적어봤는데요. 기존에 사람들이 해놓은 3d 모델을 기반에 살을 붙여서 만들 예정입니다. 본격적으로 외형을 설계를 해볼 것이며, 시제품제작터에 가서 외형을 제작할 것입니다. 이번에 여행을 다녀오면서 프로젝트 진행을 많이 못했습니다. 꾸준히 개발하면서 내용을 공유하고 싶습니다. 감사합니다.


This page is synchronized from the post: ‘[IoT Project] J-bot 외형 제작 과정 #1’

일본 여행 #2 - 교토편 (아라시야마, 기온거리)

교토, 오사카에 다녀왔습니다!

일본은 처음가는 것이라서 걱정을 많이 했지만

좋은 시간 보냈습니다.

3박 4일로 여행갔는데요

그 중 하루는 교토에서 보냈습니다.

행복했습니다.

인상 깊었던 장소는 아라시야마 대나무 숲!

치쿠린입니다.

image.png

제가 갔을 때 교토는 최대 37도였는데요

대나무 숲에 들어가니깐 그나마 덜 더웠습니다.

그리고 이런 대나무 숲을 처음 가봤는데 되게 멋지더군요.

한국에도 대나무숲이 있던거 같은데

다음에 한 번 가보고 싶어요.

여러분에게 전체 일정을 소개해보고 싶어요.

전체 일정

  • 간사이 공항 -> 교토역
  • 교토역 -> 숙소 (니조성 근처)
  • 숙소 -> 이라시야마 (불교 사찰, 치쿠린, 장어 덮밥, 도게츠 교)
  • 이라시야마 -> 슈퍼마켓 -> 숙소
  • 숙소 -> 기온 거리 -> 와규 -> 숙소

알찬 일정이였습니다.

간사이 공항 도착 (10시) -> 교토역

하루카를 타고 바로 교토로 갔습니다!
하루카는 우리나라로 치면 KTX 같은 느낌이였습니다.

<하루카>
image.png

교토역에 도착한 다음에
교토역에 있는 인포메이션 센터에서
교토 원데이 패스를 삽니다.

교토 원데이 패스는

교토의 모든 버스들을 하루동안 탈 수 있는 티켓입니다.

저도 교토에 있는동안 이 티켓으로 돌아다녔습니다.

600엔이고, 3번만 타도 이득입니다.

강추!!!

교토역 –> 숙소

교토 안내소에서 친절히 설명을 듣고

숙소로 갑니다.

버스를 타고 이동을 했습니다.

숙소를 잘잡아서 교토역에서 한번에 갔습니다.

숙소 –> 이라시야마 대나무숲

숙소에서 짐을 맡기고

이라시야마로 이동합니다.

역시 버스를 타고 이동합니다.

구글 지도로 길찾기를 하면 몇시까지 어디에 도착해야하는지, 어떤 버스를 타야하는지

어디서 내려야하는지까지 알려주는데, 2정거장 전에 진동으로 알려줍니다.

이라시야마

여기에 불교 사찰이 있어서 잠깐 들렀습니다.

연꽃이 예뻐서 찍었습니다.

<불교 사찰에서>
image.png

그리고 바로 치쿠린으로 이동!!

인생 사진 건지고 갑니다.

사방이 다 대나무로 둘러쌓여있는 산책길이였습니다.

되게 좋았습니다. 이런 곳이 있구나.

<치쿠린>

image.png

치쿠린을 갔다가 장어덮밥을 먹었는데요.

이 장어덮밥 집은 엄청 유명하다고 합니다.

미슐랭 가이드에서 별 1개를 받았다고 합니다.

미슐랭에 대해 잘 모르지만 여기에 오르기만 해도 맛집이라고 하더군요.

맛있었습니다. 먹으면서 우리나라 장어도 맛있는데.. 생각도 들었습니다.

2시쯤 갔는데 1시간 기다린것 같습니다.

<히로카와 우나기>

image.png

image.png

밥을 먹고 도게츠교로 이동!

도게츠교는 대나무숲 근처에 있어서 걸어갈 수 있습니다.

목조 다리인데 생각보다 짧았습니다.

여기서도 한 컷!

<도게츠교>

image.png

image.png


도게츠교 –> 숙소

숙소로 가는 길에 마트가 있었는데

마트에서 회와 맥주를 삽니다.

회가 되게 싸면서 신선해 보였습니다.

맥주는 한 캔에 100엔밖에 안해서 깜짝놀랐습니다.

마트에 들렀다 숙소로 가서 조금 쉬었습니다.

<마트>
image.png

숙소 –> 기온 거리

밤에 기온 거리로 갔는데

강이 예뻤습니다.

여기서 술을 마시면 무슨 기분일까? 싶더라고요.

<기온 거리 근처의 강가>
image.png

우연히 찾은 맛집!

라면집에 가려고 했었는데

사람들이 줄서있어서 들어갔습니다.

<규카츠 맛집>
image.png

규카츠와 말차 맥주를 마셨습니다.

녹차맛과 맥주맛이 동시에!! 맛있었습니다.

고기도 맛있어요.

<말차 맥주와 규카츠>
image.png

기온 거리 근처에서 밥을 먹고, 산책을 했습니다.

산책 중에 동상이 있었는데 알고보니 사람이였어요! ㅋㅋ

같이 사진도 찍었습니다.

<동상인 줄 알았는데 사람>
image.png

이제 숙소로!!

숙소에서 낮에 마트에서 산 회와 맥주를 먹습니다.

아주 신선하고 맛있습니다.

만원 어치만 샀는데 2만원 어치 살걸..

아쉬웠습니다.
<숙소에서 회와 과일 맥주>
image.png

이렇게 교토의 하룻밤이 끝났습니다.

느낀점은..

  • 대나무 숲을 꼭 가라!
  • 교토는 하루로는 안될 것 같다. (청수사, 금각사, 은각사를 못갔네요.)
  • 교토 원데이 버스는 꼭 사라
  • 구글 지도는 길찾기에 아주 유용하다.
  • 일본 사람들이 친절하다.

감사합니다.


This page is synchronized from the post: ‘일본 여행 #2 - 교토편 (아라시야마, 기온거리)’

일본 여행 #1 - 교토, 오사카로 가자

교토, 오사카로 자유여행갑니다!

일본은 처음 가보는데 재밌겠다.

기대하고 있습니다.

맛있는 라멘, 스시, 회만 먹어도 만족할거 같아요.

비행기를 탔습니다.

IMG_20180713_061645.jpg

IMG_20180713_061812.jpg

비행기 안에서 찍은 구름 사진

구름으로 만든 바다같아요.

지평선이라고 해야할까

보이는 모든게 다 구름이엿습니다.

멋져요~

IMG_20180713_083757.jpg

교토를 먼저 가는데요.

하루카 기차타고 갑니다!

재밌는 여행이 되길..


This page is synchronized from the post: ‘일본 여행 #1 - 교토, 오사카로 가자’

Q.bo One - Q.bo One is open source personal robot assistant

Q.bo One

Q.bo One is open source personal robot assistant


Screenshots

Xu9y3uO.gif
8KZSFZ4.gif
View Image
lvd5ro8lstunaezcyfw1.png
View Image

Hunter’s comment

Q.bo One is the perfect Open Source Platform for Developers.

It is based on Raspberry Pi and Arduino.

If you want to change boare, you can do it.

I think the greatest thnig on Q.bo One is that it make you focus on only software.

It includes belows sensors and motor, controller.

  • eye - stereo camera
  • mouth - dotmatrix led
  • neck - servo motor x2
  • ear - microphone with noise reductgion
  • audio - speaker
  • touch sensors
  • connection - wifi, Bluetooth

So, you can focus on software.

I added video “Q.bo One Indiegogo Launch”.
https://youtu.be/-AQy-LcculU

Thank you.


https://www.indiegogo.com/projects/q-bo-one-your-open-source-personal-robot-assistant


Contributors

Hunter: @jacobyu



Steemhunt.com

This is posted on Steemhunt - A place where you can dig products and earn STEEM.
View on Steemhunt.com

This page is synchronized from the post: ‘Q.bo One - Q.bo One is open source personal robot assistant’

[IoT Project] 아두이노와 라즈베리파이 간의 시리얼 통신

안녕하세요.

이번 글은 아두이노와 라즈베리파이 간의 시리얼 통신에 대한 글입니다.

먼저, 시리얼 통신이 무엇인지에 대해 설명을 합니다.

그리고 J-bot에서는 시리얼 통신을 활용하였는가? 에 대해 적었습니다.

J-bot이 궁금하신가요? 아래 글들을 읽어보세요.

나만의 비서 로봇, J-bot 만들고 있습니다.
google-aiy-voice-kit 활용기
google-aiy-voice-kit 셋팅

아래는 J-bot의 동작 동영상입니다.

https://youtu.be/Xv3_kfhknEM

위 동영상 처럼 손이 가까이 오거나 답변을 한 후 로봇이 팔을 움직이기 위해서

시리얼 통신을 활용하였습니다.


시리얼 통신

시리얼 통신은 이종의 보드 간에 데이터를 주고 받는 방법 중 하나입니다.

시리얼 통신을 위해서 필요한 것들에 대해 소개를 하겠습니다.


  • Rx, Tx, GND 선 연결

    • 아두이노는 USB로 연결할 경우, 하드웨어는 따로 생각할 필요없습니다. 준비 끝!

    • 아두이노 내부에 칩이 있습니다. 그래서 USB만 연결해도 시리얼 통신을 할 수 있습니다.





  • 보레이트 (Baudrate) 설정

    • 보레이트는 시리얼 통신의 속도를 말합니다.

    • 아두이노와 라즈베리파이 모두 같은 보레이트로 설정해야합니다.

    • 9600 bps, 19200 bps, 38400 bps, 115200 bps 등이 있습니다.

    • bps 는 bit per second로 1초에 보낼수 있는 비트 수를 의미합니다.

    • 9600bps는 1초에 9600 bit를 보낼 수 있습니다.



  • 데이터 포맷

    • 한 번 데이터를 보낼 때, 아래 그림의 데이터 포맷과 같이 8bit씩 보냅니다.

    • 만약 “hello”라는 텍스트를 시리얼 통신을 통해 전송하면 ‘h’, ‘e’, ‘l’, ‘l’, ‘o’로 하나씩 전송됩니다.




사진 <시리얼 데이터 포맷> - http://nptel.ac.in/courses/Webcourse-contents/IIT-KANPUR/microcontrollers/micro/ui/Course_home2_11.htm

fig2.jpg





J-bot은 시리얼 통신을 어떻게 활용하는가?



J-bot은 아래와 같이 아두이노와 라즈베리파이를 활용합니다.

아두이노

  • 내부적으로는 서보모터를 제어하고 그리고 초음파 센서의 거리값을 수집

  • 1초에 10번 모터의 각도와 거리값을 라즈베리파이에게 전송합니다.

  • 라즈베리파이에서 모터를 몇 도로 동작하라는 신호를 받으면 모터 제어

라즈베리파이


  • 아두이노로부터 받는 데이터를 활용하여 여러 동작 수행

  • 라즈베리파이에서 아두이노로 원할 때 명령을 내릴 수 있습니다.


코드를 보면서 이야기 합시다.

먼저 아두이노에서 송수신을 어떻게 하는지 보겠습니다.

아두이노에서 라즈베리파이로 센서 데이터를 보내는 코드는 아래와 같습니다.

image.png

아두이노에서 라즈베리파이로 보내는 센서 데이터는 아래의 형식으로 표현합니다.

초음파 거리 (cm) * 서보 모터 각도 (deg)

50 * 40

위와 같은 데이터라면 거리 50cm, 각도 40도라는 의미입니다.

위에는 제가 단순하게 데이터 포맷을 정한 것입니다.

(필요하다면 데이터 길이, 데이터, 데이터 검증 byte 등으로 구성하여 보내기도 합니다.)

아두이노가 라즈베리파이로부터 데이터를 받아 처리하는 코드는 아래와 같습니다.

image.png

위 코드는 라즈베리파이가 ‘모터를 몇도로 회전하라’ 라는 데이터를 보내는데, 그 데이터를 받는 부분입니다.

위의 코드에서 매 루프마다 serial.read를 통해 입력되는 문자가 있는지 체크합니다.

문자가 있을 경우, inputString이라는 문자열에 추가합니다.

만약 입력된 문자가 ‘*’일 경우, 문자열이 끝나는 것으로 생각합니다.

그리고 * 앞의 데이터를 추출하고, goal_servo_val에 넣습니다.


라즈베리파이에서 아두이노로부터 센서 데이터를 받는 코드는 아래와 같습니다.

image.png

SerialComm은 시리얼 통신을위한 모듈입니다. 초기화, 읽기, 쓰기 함수를 만들었습니다.

init함수에서 먼저 아두이노와 연결되는 드라이버를 초기화합니다.

그리고 read 함수는 아두이노에서 보낸 데이터에서 거리와 각도값을 추출합니다.

*을 구분자로 활용하여 첫번째 데이터가 거리, 두번째 데이터가 각도라는것을 알 수 있고 변수에 저장합니다.

motorcontrol 함수는 아두이노에게 회전할 각도를 전송하는 함수입니다.

main에서는 serial_comm의 객체를 만들고

쓰레드를 하나 만들어서 serial.read를 반복적으로 호출합니다.


결론

라즈베리파이 하나만으로 시스템을 구성하는게 아니라 두개를 같이 쓴 이유는

두개의 역할이 다르며, 각자의 역할을 하는게 효율적이기 때문입니다.

라즈베리파이는 통신, 영상처리, 음성처리 등을 하고

아두이노는 반복적이고 실시간으로 수행해야하는 작업 ( 모터를 제어하는 것이나 10hz로 센서 데이터를 수집)을 하고요!

여기까지해서 시리얼 통신에 대해 적어봤는데요.

읽어주셔서 감사합니다.


This page is synchronized from the post: ‘[IoT Project] 아두이노와 라즈베리파이 간의 시리얼 통신’

[IoT Project] 나만의 비서 로봇, J-bot 만들고 있습니다.

로봇 소개

오늘 소개할 로봇은 나만의 비서 로봇!

제 이름이 Jacob이라.. 이름은 J-bot이라고 지었습니다.

image.png

아직은 볼품없지만, 외형도 갖추고 기능도 하나하나 넣다보면

멋진 로봇이 될거라 믿습니다.


설명

지난 글들에서 google-aiy-voice-kit 를 구매하고 가지고 논 것으로 글을 썼습니다.
google-aiy-voice-kit 활용기
google-aiy-voice-kit 셋팅

이어서 이 로봇도 voice-kit를 활용하여 개발하고자 합니다.

먼저 동영상부터 보시죠!

https://www.youtube.com/watch?v=Xv3_kfhknEM

구현한 기능은 아래와 같습니다.

  • Google assistance 연동
  • 나만의 명령 수행
  • 카메라 촬영
  • 초음파 센서로 가까이 오면 로봇 팔 움직이기
  • 대답 후에 팔 흔들기

구현

하드웨어는 아래와 같이 구성돼있습니다.

  • Voice-kit with 라즈베리파이
  • 카메라
  • Arduino
  • 초음파 센서
  • 서보모터

image.png

코드는 아래와 같습니다.

  • main.py
  • serial_comm.py : arduino와 serial 통신 하는 부분
  • vision.camera.py : camera 이미지 가져오는 부분
  • vision.face_detector.py : face detector하는 부분, 라즈베리파이에서는 너무 느리다.
  • j-bot-arduino : 아두이노에서 모터와 초음파센서를 활용하는 부분

아래 저장소에 업데이트하고 있습니다.
https://github.com/passionbull/J-bot

몇 개 중요한 부분에 대해서만 설명을 하자면..


PC

PC에서 중요한 부분은 아래의 루프이다.

    with aiy.audio.get_recorder():
        while True:
            status_ui.status('ready')
            print('Press the button and speak')
            button.wait_for_press()
            status_ui.status('listening')
            # text is what I said (speech to text)
            # audio is answer of assistant
            text, audio = assistant.recognize()
            local, answer = local_commands(text)
            if local is False:
                aiy.audio.play_audio(audio, assistant.get_volume())
            sc1.action()
  • 버튼이 눌리고 나서 음성을 인식한다.
  • 인식한 음성이 local 명령어인지 체크한다.
  • 아니라면 google_assistant의 답변을 재생한다.
  • 다음으로 아두이노에게 팔을 흔들라고 명령한다.

아두이노

아두이노는 pc로부터 특정 신호를 받을 때, 모터를 제어해야한다.

void setup() {
  Serial.begin(9600);
  leftArm.attach(9);  // attaches the servo on pin 9 to the servo object
  int ultraEvent = timer.every(50, doUltra, (void*)0); //do function per 1sec
  int motorEvent = timer.every(10, doMotor, (void*)0);
  inputString.reserve(200);
  servo_val = 90;
  goal_servo_val = 90;
}
  • 또한, 주기적으로 pc에게 거리 정보와 모터의 각도를 전송한다.
  • 아래 코드는 이를 위한 셋업 코드이다.
  • timer를 사용하여 주기적으로 모터 제어와, 초음파 센서 거리 측정을 수행한다.
  • 시리얼 통신 초기화, PC로부터 데이터를 받는 부분, 보내는 부분 모두 필요하다.

계획

  • 3D 프린터로 외형 제작
  • 로봇 얼굴 달기
  • 근처에 사람이 오면, 푸쉬 알림

관심이 있으신 분들은 언제든 환영입니다.

제가 외형 설계에는 좀 약한 부분이라..

혹시나 로봇의 외형을 해보고 싶으신 분들 있다면 너무 좋을것 같아요!

이 로봇을 만들기 위해 필요한 재료는 voice-kit이 전부입니다!

많은 관심 부탁드립니다!!


This page is synchronized from the post: ‘[IoT Project] 나만의 비서 로봇, J-bot 만들고 있습니다.’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×