이오스 나이츠 100층 입주

이오스 나이츠를 한지 10일

드디어 100층에 왔다.

100층부터 유니크 재료가 나오며, 좀 더 강력한 장비를 맞출 수 있다.

지금까지 하면서 느낀점에 대해 간단히 적어본다.

느낀점

게임을 할수록 신경을 덜쓰게된다.

템만 맞춰놓으면 알아서 사냥하기 때문이다.

체감상 장비가 좋아질수록 한판당 시간이 오래 걸리는것 같다.

내가 할 것은 아이템을 팔고 템을 맞추는것


꿀팁

현질은 캐릭터 만들 때, 장비칸, 재료칸 하나씩 늘리는데만 썼다. 1EOS 정도?

그 후로는 재료를 모아 사람들에게 팔았고

판 돈으로 장비를 맞췄다.

꿀팁을 하나 알려주자면

초반 레벨 7까지는 적당히 최저가 템을 사도 괜찮다.

재료를 사서 만드는 것보다 훨씬 싸다.


레벨이 7이 되고 나서는 남는 재료들로

장비를 만들어 사람들에게 팔았다.

이 게임에서 괜찮은게 자기가 잘 사용하던 장비를 그대로 다시 팔 수 있다.

이 무기는 97프로 무기로 얼마에 팔릴지 아주 기대된다. 레벨 11정도 되면 팔 예정이다.

아직까지는 이겜으로 돈을 모은다기 보다는

재미로 하고있다. 템맞추는게 나름 재밌다.

유니크 템을 만드는 것을 기대하고있다.

시간이 나면.. 매크로를 만들어보고 싶긴하다.

근데 매크로 만드는 시간보다 가끔 눌러주는게 낫을거 같다.


100층을 가는 방법

나는 100층을 올라가기 위해 템을 강화했다.

나 같은 경우는 각 캐릭터들의 레벨이 8이다.

그리고 장비 레벨은 7짜리를 끼고 있고 2-3강정도 하고 있다.

이전에 쓰던 장비을 팔고 좋은 장비로 차근차근 바꾸면서 한층한층 올라갔다.

즉, 현질을 하지않는다면 차근차근 재료를 팔아서 아이템을 바꾸거나 강화하면 된다.


두번째 방법은 같이 하는 형이 하고 있는 방법이다. 펫을 강화하면 된다고 한다.

장비는 레벨이 높아질때마다 바꿔야하지만

펫은 좋은거 한번뽑아놓으면 계속쓴다고 펫에 투자했다고 한다.

끝!


궁금한게 있으면 댓글 달아주세요!

친절히 알려드릴게요.

추천인 passionbulll 해주시면 감사합니다.

감사합니다.

[ROS] ros-control과 gazebo를 활용한 Pan/Tilt control

로봇팔이나 머리 등 엑츄에이터를 원하는 곳으로 제어하는 것은 어려운 일이다.

예를 들어, 로봇 팔로 사과를 잡는다고 한다.

사과를 잡기 위해, 로봇 팔의 손가락 (End effector)이 목표하는 위치로 가기 위해서는 팔의 관절 (Joint)들이 각도를 적절히 설정되야한다.

음.. 사람은 자연스럽게 되지만 로봇이 사과를 잡기 위해 관절들의 각도를 계산해야한다. 이것을 역기구학이라고 한다.

하지만 역기구학을 공부를 했다고 하더라도 코드로 작성하는 것은 어려우며, 자유도가 높아질 수록 더 어렵다.

코드를 잘 짠다고 하더라도 수식도 어렵다. 이럴 때는.. 기초적인 것을 이해하고 잘 만들어 논 것을 활용하면 된다.

바로 ros_control..

위의 사진은 공부를 하면서 만든 로봇 머리이다.

이미지에서 좌표를 선택하면, 로봇은 그 좌표를 중심이 되도록 로봇 머리를 움직인다.

공부한 것

1.모터 포지션 컨트롤

모터를 원하는 각도 (위치)로 제어하는 것을 의미한다.

그리고 실제 움직이는 로봇과 시각화 툴에서 그대로 보일수 있도록 한다.

아래 동영상은 joint angle을 수동으로 조작해보는 영상이다.


다음으로는 position control을 해야하는데..

여러 joint의 각도를 설정하여, 모터를 조작하는..

업데이트 예정


 

2.실제 모터컨트롤러 (micro controller)를 ros_control 모듈과 연동시켜, 상위레벨에서 제어하고자 한다. 

Pal robotics

스페인 회사이다.

내가 하고자 하는 것을 제대로 구현을 해놨다.

코드를 보면서 많은 공부가 됐다.

동영상 위치 <http://wiki.ros.org/Robots/TIAGo/Tutorials/motions/head_action>

  • roslaunch tiago_gazebo tiago_gazebo.launch robot:=titanium public_sim:=true world:=look_to_point
  • rosrun look_to_point look_to_point

이미지에서 좌표 찍은 곳을 바라본다.

카메라 z축이 초록색 직선 A와 일치하게 만든다.

Controller에서는 좌표를 받고,  직선을 만든 후, 직선과 카메라 z축이 일치하게 한다.

Controller는 카메라 z축과 직선 A를 일치시키기 위해, 역기구학 문제를 풀고 pan 과 tilt의 각도를 계산한다.

그리고 joint trajectory를 생성하여 모터를 제어한다.

최종적으로 아래와 같은 결과가 된다.


Perception에서는 좌표를 넘기는 역할을 한다.

감자칩에에서 음료수를 볼 수 있도록 x,y 좌표를 넘겨준다.

컨트롤러에서는 좌표를 카메라 축이 보게될 방향으로 변환, 그리고 제어를 한다.


하드웨어

실제 모터 컨트롤러는 아래와 같은 출력과 입력이 필요하다.

출력 : curr_vel, curr_effort, curr_pos

현재 속도, 파워, 위치를 업데이트한다.

입력 : cmd_pos

목표하는 위치(각도)를 입력 받는다.


ROS Control에 연결

추후 정리 예정


참고링크

https://pinkwink.kr/1007

https://pinkwink.kr/1013

Ros control

  • https://github.com/ros-controls/ros_control/wiki/hardware_interface
  • http://gazebosim.org/tutorials/?tut=ros_control
  • https://github.com/PickNikRobotics/ros_control_boilerplate

Head action

  • http://docs.ros.org/electric/api/control_msgs/html/action/PointHeadAction.html
  • http://wiki.ros.org/pr2_controllers/Tutorials/Moving%20the%20Head
  • http://wiki.ros.org/robotican/Tutorials/Moving%20the%20head
  • http://wiki.ros.org/Robots/TIAGo/Tutorials/motions/head_action
  • http://wiki.ros.org/head_action

실험을 하면서 계속 업데이트할 예정이다.

[영화] 보헤미안 랩소디 – 내가 누군지는 내가 결정해

 

방금 영화를 보고왔다.

영화관을 잘못찾아 앞부분을 조금 못봤다.

앞부분을 못봐서 났던 짜증이 영화를 보면서, 노래를 들으면서 사라졌다.

퀸이라는 가수를 전혀 몰랐지만, 보면서 알게되었다.

노래들이 다 너무 좋다. 한동안은 퀸 노래만 들을 것 같다.


퀸의 천재성

이 영화는 노래가 반, 그리고 스토리가 반이다.

스토리에서는 퀸 밴드 사람들의 천재성

싸우다가도 괜찮은 연주를 하면 싸움을 멈추고 연주를 하며

아이디어를 서로 주고받으며 계속 색다른 도전을 하고자 하는 열정

영화로 보면서 되게 멋진사람들이다 생각했다.


그들의 우정

영화만 봐서 실제가 어떤지는 잘 모르겠다.

영화 속에서 싸울 때도 있지만 서로 이해해주고 상처를 감싸주던 따뜻함이 기억난다.


어디서 들어본 노래들

어디서 들어본 노래들이 다 퀸노래였다니..

나는 신나는 노래를 좋아하는데

그런 노래들을 오늘 찾았다.


사랑 이야기

사랑하는 여자가 있었지만

세계 투어를 다녀야 했다.

사랑하는 여자가 있지만

다른 남자도 눈에 들어왔다.

언제나 내곁에 있어줄거라 생각했는데

그렇지 않았다.

슬프지만 놓아주는

그 사람의 행복을 바라는..

그런 주인공의 마음이 느껴지는 것 같았다.


주절주절

노래와 함께 닭살이 돋았다 ㅋㅋ

주인공들의 연주, 창의적인 아이디어, 퍼포먼스

사랑과 우정

밴드를 아우르는 리더의 카리스마

그럼 하늘을 뚫으면 되지!

최고의 영화다.

영화관에서 할 때 한번 더 보겠다.

Connect amazon alexa vocie and ROS using alexa skill, lambda, pubnub #2

이전글에서는 아마존 에코와 로봇을 연결하기 위한 셋업에 대해 설명을 했습니다.

이번 글에서는 실제 적용한 것을 보여드리겠습니다.

감사합니다.


#1에서 만든 alexa skill set을 실제로 에코 스피커에 적용을 해봤다.

에코에 적용을 하는 것은 생각보다 간단했다.

먼저 에코가 다른 사람이 쓰던 거라서 초기화를 했다.

다음으로 alexa skill을 만든 계정으로 에코를 세팅을 한다.

그러면 자동으로 내가 개발한 skill이 스피커에 적용이 된다.


위에 사진에서 왼쪽의 웹페이지는 가상 알렉사 스피커이다.

나는 스피커에게 이렇게 말했다.

  1. Start fiona application
  2. come here
  3. go to ryan

1번을 통해 나의 skill을 활성화 시켰다.

2번을 말하면 로봇이 내 자리로 온다.

3번은 go to {person/place}, 특정 사람에게 이동할 수 있도록 한다.

왼쪽의 웹페이지에서 동작한 것처럼 실제로 에코에서도 똑같이 동작한다.


Alexa skill

Alexa skill에 대해 깜빡하고 말하지 않았던 것 같다.

Alexa skill은 아마존 에코 스피커에 적용되는 앱이다.

예를 들어, 우리는 스마트폰에 여러 애플리케이션을 설치한다.

전화를 하기 위해서는 전화앱, 채팅을 하기 위해서는 카카오톡, 라인을 쓴다.

그런것 처럼 아마존 에코 (스마트 스피커)에도 애플리케이션이 있다.

그걸 Alexa skill (알렉사 스킬)이라고 부른다.

작성자는 스피커에 로봇이랑 통신을 할 수 있는 하나의 앱을 만든 것이다.

장점

원격에서 로봇을 제어할 수 있다는 것에 장점이 있다.

단순히, 원격 제어가 아니라 원격에서 음성으로 제어할 수 있다는 것이다.

음성처리에 대해 깊이있게 알지 않아도 충분히 활용 가능하다.

엄청난 장점이다.

모든 것을 개발할 필요 없고, 기존에 있는 알렉사, pubnub을 통해 원격 제어 기능을 추가한다.

예를 들어, 로봇이 10대가 있다. 그리고 스피커가 5개가 있다.

사람들이 각각 스피커에 말한다.

Jacob: A 로봇 이리로 와줘

Frankie: B 로봇 저리로 가줘

Maria: 불 꺼줘

단점

에코를 활용해서 로봇에 명령을 할 수는 있다.

하지만, 대기시간이 짧다.

무슨 말이냐면

실제로 로봇에게 명령을 위해서는 다음의 과정이 필요하다.

Fiona application이 내가 만든 skill이다.

  • Hey Alexa
  • Start Fiona application
  • help me

3개의 과정을 통해서 로봇에게 명령을 할 수 있다.

명령을 한 후, 10초 이내에 또 말을 하지 않으면

alexa는 꺼진다. 그러면 다시 3개의 과정을 거쳐서 로봇에게 명령을 해야한다.


프라이버시 문제 때문에 계속 듣도록 하지는 않은 것 같다.

하지만 귀찮다.

그래도 쉽게? 연결을 해볼 수 있다는 점에서 시도해볼만하다.


로봇에게 명령 할만한 것

어떤 로봇이냐에 따라 다르겠지만..

  1. 사진 찍어줘 (Take a photo)
  2. 너 앞에 있는게 뭐니? (What is in front of you?)
  3. 오른쪽 봐 (watch your right side)
  4. 왼쪽 봐 (watch your left side)
  5. 어디로 이동 해.

정도로 해봐야 겠다.


실행 방법

git clone https://github.com/passionbull/alexa-ros-python-pubnub

cd path_git

python ros_pubnub_sample.py

동영상

개발 중인 네비게이션 시스템에 echo를 적용해봤다.

원격에서도 로봇을 제어할 수 있다.

아래 동영상은 echo 시뮬레이션으로 로봇을 제어하는 영상이다.

에코 시뮬레이션과 실제 에코는 동일한 답변과 동작을 한다.

단지 컴퓨터에서 동작하는 것인가, 아니면 스피커에서 동작하는 것인가만 다르다.

이 동영상은 실제 에코를 활용하여 로봇을 제어하는 영상이다.

개인 사정으로 비공개로 바꾸었다.

아래 동영상은 사람이 에코에 말을 하면 로봇이 물고기 먹이를 주는 영상이다.

잘만들었다.

결론

알렉사는 내가 로봇들을 말만하면 원하는대로 움직일 수 있게 해줬다.
마치, 토니스타크가 아이언맨 여러 대를 제어한 것처럼 말이다.
멋진 기술들이다.

감사합니다.

Google assistant library on ubuntu #1 사전 조사

저는 취미활동으로 저만의 로봇을 만들고 있습니다. 중간중간 쉬고 있긴 하지만 꾸준히 하는중이긴 합니다.

최근에 계속 로봇에 어떻게하면 쉽게 음성인식 기능을 적용할 수 있을까? 에 대해 고민중입니다.

이 포스팅은 구글 어시스턴트를 어떻게 로봇에 적용할까? 에 관련된 포스팅입니다.

구글 어시스턴트 서비스, 라이브러리를 활용해서 제가 할 것은 아래와 같습니다.

  • 음성인식 결과 (사용자가 말한 것) 가져오기
  • Google assistant의 응답 가져오기
  • 특정 명령에 대해서는 내가 설정한 대답, 혹은 동작을 할 수 있도록 한다. (내방 불꺼줘, Jacob이 누구지? – 제이콥은 저를 만든 사람입니다.)
    • 즉, 구글 어시스턴트의 대답과 내가 설정한 것을 선택할 수 있어야함.
  • 시리야, Ok google 과 같은 Custom Invocation (hot word, wake word)이 필요

이 4가지를 로봇에 적용하려고 합니다.

사실은 적용을 하긴 했고, 아직 글로 정리를 못해서

하나하나 정리를 해보려고 합니다.

감사합니다.

이번 글은 먼저 튜토리얼을 따라서 해보고, 여러가지 검색했던 결과들에 대한 나열입니다.

 

google assistant에 대한 이미지 검색결과

<출처 : https://assistant.google.com/#?modal_active=none>


Google assistant library 튜토리얼

google에서 제공하는 내용이다.

https://developers.google.com/assistant/sdk/guides/library/python/

이대로 따라해보도록 한다.

 

마이크 체크

  • arecord l
    • 마이크 목록 확인
    • 0 카드, 0  장치 (card 0, device 0)

  • arecord –format=S16_LE –duration=5 –rate=16000 –file-type=raw out.raw
    • 옵션
      • -D hw: card,device
      • -D hw:1,0 (CameraB409241의 마이크 선택)

 

마이크 추천

https://community.home-assistant.io/t/best-microphone-for-diy-voice-control-components/51265

스피커 체크

  • speaker-test -t wav

프로젝트 관리

프로젝트 관리

https://console.actions.google.com/u/1/project/

보안 관련, key

https://console.developers.google.com/apis/

Google assistant 튜토리얼 결과물

튜토리얼대로 하면 샘플코드를 실행할 수 있다.

hotword ‘OK google’을 하고, 말을 하면 된다.

  • googlesamples-assistant-hotword –project-id proejctID –device-model-id modelID
    • projectID와 modelID는 아래 순서로 들어가서 가져온다.
    • projectID – 구글 액션 콘솔 -> 톱니 -> Project setting -> project ID
    • modelID – 구글 액션 콘솔 ->Device registration -> model ID

 

기타

Google assistatnt docker 활용 검토

Custom Device Actions

https://developers.google.com/assistant/sdk/device-actions-overview

파이썬 코드 샘플

https://github.com/googlesamples/assistant-sdk-python/tree/master/google-assistant-sdk/googlesamples/assistant/library

무조건 응답이 있는 것 같다.

특정 조건에서 내가 원하는 것을 할 수 있을까?

잘 모르겠다.

GRPC로 해봐야겠다.

Custom Wake

https://github.com/shivasiddharth/GassistPi

https://snowboy.kitt.ai/

 

참고 프로젝트

 

https://wiki.odroid.com/odroid-xu4/application_note/software/ai_speaker

이오스 나이츠 해보자 – 계정 생성과 입금, 그리고 스캐터(scatter), 실행까지

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

블록체인 게임 ‘스팀몬스터’ 카드도 사본김에

이오스 나이츠도 해보기로 결심했습니다.

저는 이오스를 사보지도 않았고 당연히 계정도 없었습니다.

오늘 낮까지만해도 이오스의 용어들을 잘 몰랐는데

이오스 계정만들고 이오스 나이츠 설치하면서 이오스를 조금 이해할 수 있었습니다.

제가 알려드리죠!

이 글을 따라서 순서대로 하시면 이오스 나이츠를 해보실수 있습니다.

또 이 글을 따라하시면 약소하지만 제가 풀보팅 (0.03) 해드릴게요.

추천인 : passionbulll 부탁드립니다. (서로 1000워터를 받을 수 있습니다.)


1.계정 생성과 스캐터

먼저 이오스 아이디를 만들어야 했습니다.

검색을 하다보니 이곳저곳 아이디를 만들어주는 곳이 많았습니다.

저는 노드원의 이오스 계정 생성 서비스를 사용하였습니다.

이오스 계정 생성

위에 설명을 잘해논 페이지를 참고하기를 바랍니다.

이니시스로 결제하는게 참 편하고 좋았습니다.

위의 링크에서 하라는대로 하면 계정 생성과 스캐터 모두 연동을 할 수 있습니다.

저는 잘 몰라서 이것저것 보다가 더 햇갈렸습니다.

위의 링크를 보고 차근차근 계정 생성과 스캐터 툴바를 연동하기를 바랍니다.

참, 계정 이름 조건 : 12자리, 알파벳 소문자 a~z, 숫자 1~5
꼭 12자리여야 되더라고요. 참고하세요.

2.스캐터란?

스캐터란 제가 이해하기로는 여러 Dapp에 자신의 지갑을 연결하는 역할을 합니다.

일명.. ㅋㅋ 스팀커텍트 같은거죠.

스팀커넥트 하나로 여러 스팀 서비스에 연결하는 것 처럼 말입니다.

3.입금

입금이란 업비트 (제가 사용하는 거래소)에서 EOS 지갑으로 EOS를 옮기는 것을 말합니다.

처음에는 잘못들어갈까 걱정을 많이 했지만 무사히 넣었습니다.

넣는 방법은 위의 계정생성을할 때 만든 아이디로 입금을 하시면 됩니다.

다들 실수할 수 있으니 0.001EOS를 입금한 후, 시도하시길 바랍니다.

아쉽게도 캡쳐를 안해놔서 사진을 못올렸네요.

  • 계정명
  • 메모는 안적어도 되더군요.

꼭 0.001EOS부터 입금해보세요.

4.스테이킹이 뭐지?

이오스의 스테이킹은 스팀잇의 스팀 파워업이라고 보시면 됩니다.

스테이킹의 목적은 cpu를 구매하여, 이오스의 dapp를 이용할 때 사용됩니다.

스테이킹의 필요성은 이오스 나이츠를 깔고 하다보면서 느꼈습니다..

보시면 저는 14eos를 스테이킹 (파워업)하였습니다.

스테이킹은 cpu와 net을 임대할 수 있는데

이 게임을 위해서는 cpu만 스테이킹 하시면 됩니다.

5.스테이킹 하자

열심히 스테이킹의 필요성에 대해 설명을 했는데요.

스테이킹 하는 방법은 https://toolkit.genereos.io/account/delegate

스테이킹 툴킷에서 하시면 됩니다.

이 사이트에서 하려면 스캐터 크롬 플러그인 (툴바)를 설치해야합니다!!!

1번을 보고 꼭 플러그인을 설치하세요.

아래 그림을 보시면

Manage Account –> Manage stake를 찾습니다.

누르면 Delegate를 볼 수있는데요.

이게 자기가 갖고있는 EOS로 CPU나 Net를 임대하는 것입니다.

저는 0.0065EOS를 갖고있는데요..

이 EOS 전부 사용해서 cpu를 사보겠습니다.

빨간 박스를 한 곳에 자신의 아이디와,

그리고 CPU에는 어느정도 EOS를 사용할 것인지를 정합니다.


6. 이오스 나이츠를 설치해보자!

이오스 나이츠는 웹버젼, 안드로이드 버젼이 있습니다.

https://game.eosknights.io/

구글 스토어에서 이오스 나이츠라고 검색하면 앱을 찾을 수 있습니다.

웹에서는 5번에 접속하듯이 스캐터를 이용해서 접속할 수 있습니다.

안드로이드에는 스캐터가 불안정이라고 적혀있어서

MEET.ONE 지갑을 사용하였습니다.

MEET.ONE지갑을 누르면 만들거냐고 나오고

기존 계정을 등록하는게 나옵니다.

아쉽게도 사진을 안찍어서.. 5번까지 잘 따라오셨다면 쉽게 하실 수 있으실겁니다.


7. 이오스 나이츠 시작

드디어.. 이오스 나이츠를 하게되었습니다.

게임은 단순하지만 여러 요소들이 흥미로웠습니다.

1. 펫 뽑기

강아지가 귀여웠습니다..

일반,레어,유니크,레전드가 있는데

그나마 강아지여서 행복했습니다.

2. 제작 시스템

제작시스템은 각 아이템마다

특성이 있습니다.

그리고 그 특성이 나올지 안나올지는 랜덤입니다.

즉, 같은 아이템을 여러번 뽑아도 능력치가 항상 다르며

좋은게 붙으면 비싸게 팔릴수도 있다는 것입니다.

아래를 보시면 3번째 이미지는 기가막히게 운이 좋은 경우입니다.

체력, 공격력, 행운 모두 붙은 케이스죠.

제작 시스템은 좋은 아이디어라고 생각합니다.

8. 나머지는 여러분께

저도 시작한지 얼마 안돼서 자세히는 잘 모릅니다.

아이템도 만들어보고 껴보고 죽으면 부활시켜보면서 이 게임을 즐겨보고 있습니다.

추천인은 passionbulll 로 해주시면 감사하겠습니다. (엘이 3개입니다.)

메뉴 –> 설정 –> 추천인 보상 –> 닉네임 적기

9. 게임을 위한 최소 금액

이 게임의 최소 금액은

EOS 계정 생성을 위한 3천원

게임 캐릭터를 구매하기 위한 0.7EOS

EOS CPU는 적어도 3EOS, 저는 14EOS 정도 투자했지만 CPU가 부족해서 재시도할 떄가 많습니다.

한 20EOS 정도를 스테이킹하면 원활하게 할 수 있지 않을까 싶습니다.

10. 이오스 나이츠에 대한 내 생각

방치형 게임을 안해봤지만, 방치형 게임으로는 괜찮은 것 같습니다.

아는 형에게 형이했던 백수키우기랑 비슷한데 현금을 가져와요. 라고 말하니 한번해봐야지라고 말하더군요.

단점은 허들이 너무 높습니다.

EOS 생성, EOS 입금, 스테이킹, dapp과의 연결

많이 복잡합니다. 이건 게임의 문제는 아닌거 같습니다.

차차 나아질거라 믿어요.


거기다가 스테이킹도 많이해야하는게 아쉽습니다.

이 게임만을 위해 EOS 계정을 생성하고, EOS 토큰을 구매해보는 것은 어려울 것 같습니다.

블록체인 게임에 대해 잘 모르겠지만, 모든 것을 블록체인 위에 올려야하고

트랜젝션을 해야하는 것일까?

장비 착용 정도는 게임 서버를 따로 운영해도 되지 않을까?

결론은 트랜잭션을 줄임으로, 스테이킹을 덜해도 게임이 돌아간다면 참 좋겠다 싶었습니다.


그런점에서 봤을 때, 스팀 기반의 게임도 충분히 가치있을것 같다 생각했습니다.

제가 예전에 시도했던 스팀파이터 (컴퓨터를 이기면 보팅을 해준다.)도 충분히 잘 가꾸면 재밌겠다 싶었습니다.

지금 하고있는 일들이 마무리가 되면 스팀파이터는 다시 잘 만들어보고 싶네요.

https://steemit.com/kr-event/@steemfighter/5fndna

https://steemit.com/kr-dev/@jacobyu/steem


긴 글 읽어주셔서 감사합니다.

궁금한 점 있으면 댓글해주세요.

Connect amazon alexa vocie and ROS using alexa skill, lambda, pubnub #1

이 글은 아마존 에코 스피커와 로봇을 연결하여 여러 명령을 하기 위한 셋팅입니다.

이 글 관련으로 2편-3편 정도 시리즈를 생각하고 있습니다.

감사합니다.


목적

스마트 스피커와 로봇을 연결할 필요가 생겼다.

왜냐하면 음성 인식 관련 소프트웨어, 하드웨어를 모두 다 개발할 수 없기 때문이다.

집중할 부분에 집중하고 이미 잘하는 것은 활용하는게 현명한 것 같다.

예를 들어, 여러 마이크를 사용하여 노이즈를 없앤다거나, 어느 방향인지 파악하는 것, 음성인식

잘하는 기존 제품을 활용해본다.

이 글을 쓴 이유는

기존의 글들을 보고 그대로 해도 동작도 안하고 따라하기 어려웠다. (사용하는 라이브러리가 바뀜, UI가 바뀜)

다시해도 제대로 못할 것 같아서 정리를 하게 됐다.


 

시스템 구조

<출처 – https://www.hackster.io/grassjelly/autonomous-home-assistant-robot-fff43e>

기존에 아마존 알렉사와 로봇 사이에 연결한 수많은 예시들을 찾아봤다.

  • 로봇과 알렉사를 연결하는 수많은 예시가 있다.
    • 다 복잡하고 잘 안된다.
    • pubnub으로 하는게 깔끔한 편이다.
      • ip를 알 필요가 없다.
      • 고정 ip가 아니여도 된다.
      • 인터넷만 잡으면 된다.

그 중에 내가 선택한 시스템은 위에 그림이다.

간단히 설명하면

사용자가 Echo 스피커에서 무언가 말을 하고, 그 중에 일부 (내가 설정한 어떤 명령어들)는 AWS LAMBDA FUNCTION (서버)에서 처리한다.

처리된 데이터는 PubNub이라는 중간 브로커를 통해 로봇 시스템 (ROS)에 전달하게 된다.

각자 인터넷만 연결되어 있다면, 스피커에서 로봇으로 각각의 단계를 거쳐 원하는 명령을 내릴 수 있다.


Alexa skill setup

https://developer.amazon.com/alexa/console/ask? 에서 셋업하면 된다.

Interaction Model 작성하기

  • 어떤 명령을 받았을 때, 이 skill (프로그램)을 사용할지 결정한다.
  • 되게 재밌는게 Sample Utterances에 활용해서 비슷한 문장을 말해도 같은 Intent를 실행하게 된다.
    • 즉, 완전 똑같지 말하지 않더라도 원하는 Intent를 호출 할 수 있다.
    • type도 정할 수 있다.
    • My favorite color is {color_type}.

End point 설정

  • 처음할 때 햇갈렸다.
    • 동영상을 보도록 한다.
  • 이 모델에 대한 결과를 만들어 줄 서버가 필요하다.
  • 작성자는 이 서버를 lambd로 만들었다.
    • 이번에 이 시스템을 구현하기 위해서 처음 사용해봤다.
    • 예제를 보면서 하면 할만하다.
    • python, nodejs가 있다.

Skill ID – 이 스킬의 ID이다.

AWS Lambda ANR – 서버라고 생각하면 편하다. 서버의 ID다.

  • ANR은 Lambda 함수를 만들고 나서 그 함수 관리 페이지에서 볼 수 있다.
  • ANR에서도 skill ID를 입력해야하고, Skill에서도 ANR을 입력해야한다. 서로 입력해야함.

주의할 점

  • 항상 save와 build를 잘 하도록 한다.
  • ANR, skill ID 확인

테스트

  • Interaction Model과 ANR을 입력하면 Test를 할 수 있다.
  • Skill은 launch (시작), 서버에서 처리할 수 있는 명령, quit(종료)로 구성된다.
    • 이게 무슨말이냐면
    • Invocation으로 정한 키워드를 통해 alexa에게 나의 skill을 호출하라고 명령한다.
      • Invocation이 “conversation application”이라 가정하면
      • ex – alexa run “conversation application”라 말하면 된다.
      • 이 때 launchIntent가 실행된다.
    • 다음으로 설정한 intent들을 호출할 수 있다.
      • launch 한 후, intent에 대한 결과를 반환한다.
    • quit를 하면 실행했던 skill을 사용중지한다.

시뮬레이션에서 돌려본 결과이다.


Lambda

https://ap-northeast-1.console.aws.amazon.com/console/home?region=ap-northeast-1#

참 괜찮은 서비스다.

하나의 실행 모듈을 돌릴 수 있다.

lambda를 통해, 각 intent에 대해 어떤 동작을 할지 결정할 수 있다.

코드 입력

코드 입력 유형 –> .zip 파일 업로드로 코드를 업데이트 하면된다.

nodejs로 할 경우, package.json에 종속성을 체크한다.

그리고 npm install 후에 그 폴더 자체를 압축해서 lambda로 보낸다.

로그 보기

로그가 보고싶을 땐, 모니터링에서 CloudWatch에서 로그 보기를 한다.

자세한 내용은 튜토리얼을 첨부한다.

https://github.com/alexa/skill-sample-nodejs-hello-world

힘들었던 것

  • 참고했던 링크들을 보면 라이브러리 버젼이 달랐었다.
  • 이제는 안 쓰는 함수들을 쓴다던가..
  • 그래서 링크들의 소스들은 참고만하고
  • hello-world 코드에다가 pubnub을 적용하였다.

 


PubNub

PubNub은 lambda와 로봇의 중간 브로커 역할을 한다.

로봇은 보통 고정 ip를 갖고 있지 않다.

그렇기 때문에 외부에서 로봇에 연결하기 위해서는

포트 포워딩을 통해 로봇 ip에 잘 찾아갈 수 있도록 해야한다. (아는게 이것밖에 없군요.)

Pubnub은 설정을 할 필요 없게 해주는 서비스다.

lambda에서 pubnub으로 데이터를 넘기면 pubnub이 알아서 로봇 쪽으로 보내준다.

반대도 마찬가지다.

 

PubNub Setting

https://admin.pubnub.com/에서 셋팅한다.

  1. Create new App.

  2. Create new keyset.

    1. publish key와 subscribe key는 lambda와 로봇 쪽 코드에서 필요하다.
  3. Debug console

    1. 디버그 콘솔 창에서 add client
    2. channel을 확인한다.
    3. channel 또한 lambda와 로봇쪽에서 필요하다.
    4. 같은 채널로 데이터를 주고받아야 한다.
    5. 주고 받기 위해서는 publish key와 subscribe key가 필요하다.


로봇 쪽 통신 코드

아래 코드를 참고했다.

https://www.pubnub.com/docs/python/data-streams-publish-and-subscribe

 


일단 셋팅 및 테스트는 완료했다.

실제 활용에 대해서는 다음 포스팅에서 적어보도록 하겠다.

셋팅을 하면서 작성한 코드도 깃헙에 올린다.

https://github.com/passionbull/alexa-ros-python-pubnub

 

참고한 링크

Warpsteem 소개 – 워드프레스 글을 스팀잇으로 옮기기

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

워드프레스 플러그인을 하나 소개합니다.

예전에 만든 플러그인을 혼자서 사용하다가

다른 사람들도 혹시 필요할까 싶어 배포하였습니다.

이미 비슷한 플러그인으로는 아래 2개가 있습니다.

  • WordPress Steem은 제일 먼저 개발된 플러그인이다. 현재 동작하지 않는다.
  • Steempress은 이 플러그인과 유사한 플러그인이다.
    • 수익의 15%를 가져간다.
    • 보팅을 선별적으로 해준다고 한다.

 

워프스팀 – 플러그인 소개

  • 워드프레스 하나로 블록체인에 글을 써보자.
  • 워프스팀은 여러 자원(인스타, 페이스북, 블로그, 스팀 등등)에서 쉽게 스팀으로 ‘워프’, 이동할 수 있도록 합니다.
    • 사용자는 자신의 글을 홍보하거나 부수입 창출할 수 있습니다.
    • 이전에 작성한 훌륭한 글들을 스팀으로 옮길 수 있습니다.
  • 첫 시작으로는 wordpress에서 steem으로 글을 쉽게 이동하게 합니다.
    • 현재 플러그인을 배포하였으며, 다운로드 가능합니다.
    • 기존에 있던 한국 워드프레스 사용자들이 쉽게 Steemit에 접근할 수 있도록 합니다.

워프스팀

관리자페이지 -> 플러그인 -> 새로 추가에서 WarpSteem을 검색하면 다운받을 수 있습니다.

https://ko.wordpress.org/plugins/warpsteem/


사용 방법 – 설정

1. 관리자 페이지 -> 설정 -> WarpSteem setting으로 들어갑니다.

2. 순서대로 스팀잇 아이디, Posting key, 기본 tag를 적습니다.

3. ‘Enable’ 체크박스를 체크합니다.

워드프레스 새 글을 작성하거나 수정하면, 자동으로 스팀잇에도 업데이트 됩니다.


사용 방법 – 글 작성

워드프레스를 이용하여 평소대로 글을 작성합니다.

그리고 공개 버튼을 누릅니다. 끝!


사용자를 위한 추가 설정이 몇 개 있습니다.

옆에 포스트 박스를 통해서 태그를 설정할 수 있습니다.

설정된 태그는 스팀잇에 적용됩니다. (인스타그램의 태그)

고유주소에서 permlink를 수정하면 그대로 스팀에도 적용됩니다. (한글로 설정할 경우, post id로 설정됩니다.)

또한, 고유주소도 자신이 원하는대로 설정할 수 있습니다.

하지만 같은 글에 대해 고유주소를 변경하면 중복된 글이 작성됩니다.


계획

  • 유입된 워드프레스 유저들의 글 홍보 및 보팅
  • Steem 계정 생성 지원
    • 워드프레스 유저들의 계정을 생성해주고 싶습니다.
  • 개발 관련
    • Editor 내에서 update on/off
    • 불편한 사항 접수하여 보완

참고사항

Steemit에서는 여러 Key가 있습니다.

Posting key는 스팀잇에 글을 쓰기 위해 필요한 key입니다.

이 플러그인은 Postking key (only 글쓰기, 보팅만 가능) 가 필요합니다.

https://steemit.com/@유저_아이디/permissions에 접속하여 Posting key를 복사하여

워드프레스 설정에 넣습니다.

이 플러그인을 활용하여 글을 작성할 경우, Warpsteem이 수익의 5%를 가져갑니다.

새로 오시는 워드프레스 유저님들을 지원하는데 사용하겠습니다.

  • 유입된 워드프레스 유저들의 글 홍보 및 보팅
  • 계정 생성 – 추후 가능

감사합니다.

[영어] The best movie I have ever watched

오픽 시험 준비중입니다.

제 관심 주제에 대해 영어로 적어보고 있습니다.


I wanna tell you the best movie I ve watched.

This movie name is “about time” which is british film.

Tim is main character and he can travel time.

Also, all man in his family can travel time.

Impressive scene I watched is

Father ask son like that

What do you want to do with this ability?

You should think about..

Son answer like that I just.. want

It would help me make girlfriend.

It is funny situation and make me think about what if I have this ability (travelling time).

Also, this move make me realize time is precious.

I want to live with all my heart so that I will not regret over time.

Thank you for listening.

그리고 이 영화는 나에게 시간의 소중함을 다시한번 깨닫게 했다.

시간이 지나 후회하지 않도록 마음가는대로 전력을 다해 살아가고 싶다.

맞다. 여주인공은 너무 예뻣다. (맞다. 를 어떻게 영어로하지..)

[영화] About time, 내 최고의 영화

제가 가장 좋아하는 영화는 어바웃 타임입니다!!!

이 영화의 시작은 “주인공의 아버지가 아들에게 너는 시간여행을 할 수 있다.”

라고 말해주는 것에서 시작합니다.

주인공 팀의 아버지, 할아버지, 삼촌 모두 시간여행을 할 수 있습니다.

즉, 팀의 가족에서 남자들은 모두 시간여행을 할 수 있는거죠.

그렇게 시작한 이 영화는 로맨스와 코미디, 현재라는 시간,

아버지, 가족 등을 생각하게 해준 아주 감명깊은 영화였습니다.

재밌게 본 장면 몇 개를 뽑아봤습니다.


 

아버지는 아들에게 말합니다.

너는 이 능력으로 무엇을 하고 싶니?

You have to use it for things that you really think will make your life the way you want it to be!

Come on, really think about this.

아들은 말합니다.

여자친구 만드는데 도움이나 됐으면 좋겠다.

To be honest, I suppose, at the moment,

it would be just great if it could help me get a girlfriend.


팀이 메리 (레이첼)과 처음 만난 장면입니다.

이 장면에서 레이첼이 너무 예뻐보였습니다.


결혼식을 한다면 작은 교회에서 하고 싶고

야외에서 파티를 하고 싶습니다.

영화에서는 비바람이 불어도 즐거워하는 팀과 메리, 가족들이 너무 보기 좋았고 행복해보였습니다.


주인공은 시간여행을 하면서 교훈을 얻습니다.

평범한 일상이든 특별한 일상이든 애써 되돌린것처럼

최선을 다해 살아보려고 한다.

이게 행복인것 같다. 라고 저는 이해했는데..

멋진 말이였습니다.

I just try to live every day as if I’ve deliberately

come back to this one day to enjoy it

as if it was the full final day of my extraordinary, ordinary life.

감사합니다.