책사서 pspiece 연습하려고 했지만

전기전사 회로 구현하려고 막상 책을보니 보니 너무 응용책을 골라버렸고 딴길로 가는거 같아서

결국에 이용성 교수님 강의만이라도 볼 생각으로 방향을 바꿧다.

 

지난 번에는 IR 센서, 모터 드라이버, Atmega128 보드 정도 밖에 못봤었는데

지금 보니 아두이노 전원 회로에 대한 강의도 올라와 있더라

 

나중에 직접 보드 땜질해서 만들려면

수정 진동자나 프로그래머, 다른 핀을 빼면

파워를 어떻게 해야하나 싶다가 딱 내가 필요한걸 찾았다.

 

강의 링크는 아래와 같다.

 

https://www.youtube.com/watch?v=cIuEymA8nrs&list=PLXklyWpn9peYWUlkubQukMsGajGstAi9g&index=1&ab_channel=%EC%9D%B4%EC%9A%A9%EC%84%B1%EA%B5%90%EC%88%98MFTSMultiFusionTechSpace 

 

 

강의 내용은 아두이노 회로도를 가지고 설명하고계신데

다음 링크의 스케메틱에서 다운받으면 된다.

https://docs.arduino.cc/hardware/uno-rev3

 

아두이노 우노보드는 3가지 파트로 나눠지는데 이렇게 나누면 되나 싶긴한데

일단 아트메가 328를 다루니 MCU부터보면

 

 

 

MCU 회로

- ISP 다운로더 커넥터 : 커넥터로 연결하여 플래시 메모리나 EEPROM에 직접 프로그래밍하는 단자

 참조 : https://m.blog.naver.com/dododokim/221421896361

- 클럭 회로 : 수정 진동자를 이용한 클럭 발생 회로

-  ADC 전원, 전원 회로 : 코일과 캐패시터를 이용한 수동 필터로 노이즈 차단

- 입출력 포트 : PB, PC, PD  3개의 입출력 포트가 각각 8개의 핀과 헤더를 가짐.

 

 

 

 

아두이노 우노 전원 공급

- 방법 : DC 파워잭, VIN 핀, USB 전원

- 권장 입력 전압 : 7 ~ 12V

 

 

 

X1  DC21MM

 잊고 있었는데 강의 영상에 나오는 회로도는 우노 보드 설명 페이지의 인터렉티브 스케메틱으로 볼수 있다.

링크 :https://docs.arduino.cc/hardware/uno-rev3

- X1은 PWR JACK 2.1X5.5MM의 파워잭

 

 

잠깐 PCB를 보기 떄문에 잠깐 관련 용어를 복습좀 해야겠다.

수업듣긴 했는데 PCB는 거의 손을 놓다보니 들어도 잘모른다.

 

 

 

잠깐 검색해보니 눈에 잘 들어오는게 IC뱅큐의 블로그 글이라

링크 걸어놓는다.

ref : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=icbanq&logNo=220931164321

 

다시 파워잭으로 돌아와

인터렉티브 뷰어로는 회로도 뿐만 아니라 PCB, 3D 형태도 같이 볼수 있다.

좌측 하단의 파워잭이 보이고 PCB 바닥면에 3개의 패드가 보이는데

파워잭의 1은 PWRIN으로 전원회로로 넘어가고, 2, 3은 GND로 넘어간다.

 

 

 

 

파워잭 다이오드

- 파워잭의 PWRIN 네트와 연결된 CGRA4007-G라는 다이오드가 있는데 1KV 1A라는 단어가 나온다.

- 허용 최대 역전압 Vpp가 1KV, 순방향 최대 전류는 1A라는 의미

- 회로도 그대로 파워잭의 PWRIN이 다이오드의 애노드와 연결되어 있다.


 

 

 

 

 

 

 

회로도 연습을 하면서 시뮬레이션을 하려고했지만 여러 회로 프로그램을 시도해봤지만

시뮬레이션 동작 때 자꾸 에러나거나 막힌다.

이론 빠삭하지 않은 상태에서 너무 해맬수가 없어서 시뮬을 돌리지는 못했고,

일단 원리까지는 못해도  컨샙, 중요한 개념 위주로 보고 넘어가려고 한다.

 

 

1. 비안정 멀티 바이브레이터

- 저항, 캐패시터, 트랜지스터를 이용한 비안정 멀티바이브레이터로 이것 외에도 타이머나, NAND로도 구현 가능

- 펄스 생성, 주기는 T = 0.7 * (R1 * C1 + R2 * C2)

 

2. 알람 회로

- 비안정 MV : NE555를 이용한 펄스 발생, T = 0.7 x (100k  + 47k x 2) x 1u = 0.135ms

- 분주 회로 : JKFF 2개를 이용한 4분주, MV2에서 교대로 동작

- 비안정 MV2 : 두 MV 중 하나의 주파수로 스피커 동작

                    + 위 MV의 T = 0.7 x 680 x 4.7u x 2 = 4.5ms, 아래 MV의 T = 0.7 x 1k x 1u x 2 = 1.4ms

- 스피커 구동 회로 : 비안정 MV2의 출력 신호에 따라 발진음 발생, 전류 증폭을 위해 달링톤 접속

 

 

 

3.  박자 발생 회로

- 전원 회로 : 9V가 정전압 IC에 공급되어 5V VCC 출력

- 박자 선택 회로 : SW로 박자 선택

- 제어 회로 

- 펄스 발생 회로 : T = 0.7 x ( 4.7k + 2 x 47k) x 3.3u = 0.227s

- 카운트 회로 : 펄스 입력받아, 10진 카운터 동작

- LED 회로 

분류 및 기능 개요

1. 전류 : 직류 DC, 교류 AC, 고주파 RF(radio frequency)

2. 도선, 접속 : 도선, 접지(어스 접지, 섀시 접지, 신호 접지)

3. 수동 소자 : 저항, 가변저항, 인덕턴스, 콘덴서, 임피던스

4. 전원  : 전압원, 전류원, 전지, 교류전원

5. 접점 : 개폐기, 수동조작 자동복귀 접점, 계전기 개폐기 접점,  회전 개폐기


단극 스위치 수동조작 자동복귀접점 계전기 개폐기 접점 회전 개폐기

6. 장치 : 안태나, 퓨즈, 모터, 변압기, 램프 

7. 반도체 소자

- 일반 다이오드 : 정류, 검파(AM 라디오 전파에서 음성 신호 검출)

- 가변 용량 다이오드 : 동조(공진 : 공진 주파수에서 임피던스가 최소 -> 공진 주파수만 통과 => 필터)

- 제너 다이어드 : 정전압 

- 포토 다이오드/트랜지스터 : 광 검출/스위치

- 트랜지스터, MOSFET: 증폭, 발진, 스위칭

- 바리스터 : 전압에 따라 저항 변화

* 싸이리스터 : 전력 제어 소자

  단방향 양방향
2단자 DIAODE(ONOFF불가) DIAC
3단자 SCR(OFF불가), GTO(턴오프가능) TRIAC
4단자 SCS  

8. 논리 소자, 연산증폭기 : pass

 

 

 

 

 

저항

- 전압 강하로 회로 동작하는데 쓰는 소자

- 고정 저항 : 카본(싸다), 금속피막(정밀), 권선(정밀회로서 사용, 고주파에선 x), 어레이 저항(패키징), 칩 저항(SMT) 

- 가변 저항 : 저항 조절, A형(음량), B형(음질, 감도), C형(이득), D(라디오 이득)

카본피막저항 금속피막저항 권선 저항 어레이 저항 칩 저항

 

 

 

콘덴서 

- 2장의 금속판 사이에 유전체를 끼운 장치로 전하 축전

- 고정 콘덴서 : 극성, 무극성 콘덴서로 분류               - 가변 콘덴서 : 바리콘

- 무극성 콘덴서 : 세라믹(온도에 안정, SMT에 사용), 마일러(고주파용)

- 극성 콘덴서 : 전해(큰 용량, 전원회로, 직류서 사용), 탄탈(주파수, 온도, 누설전류 특성이 좋고 소형-커플링, 필터회로)

세라믹 콘덴서 마일러 콘덴서 전해 콘덴서 탄탈 콘덴서

 

인덕터

- 전자기 유도, 교류에는 저항 존재

- 동조(안테나) 코일(수신용), 잡음 방지 코일(전원, 신호선에서 콘덴서와 같이써서 잡음 방지), 초크 코일(교류 제거), 발진 코일(수신기 국부 발진), 변압기(전자유도로 전압 변환)

 

릴레이(전자석)

- 전류로 접점 ONOFF

 

 

스위치

토글 스위치 슬라이드 스위치 푸시버튼 스위치 로터리 스위치 DIP 스위치

 

수정 발진기

- 수정 진동자와 발진회로를 패키징 처리

 

이번 주에는 지난주 전자회로 실습을 마무리한다고 하지 못한 회로도 그리기 연습을 시작하려고한다.

오늘까지는 쇼츠 영상 마무리하고 제출해서 시간이 되면 진행할 예정이고

 

오랜만에 전자 이론 정리와 기능사 문제들과 아래의 1 ~ 4번 영상까지 연습하며

마지막으로 다른 사람들의 자료를 찾아서

내가 원하는 ATmega328 보드 회로도를 그리고 실제 납땜해서 만드는걸 목표로 한다.

 

0. 전자기기/전자계산기 기능사 실기 회로 그리기

 

1. PWM 회로도 그리기

https://www.youtube.com/playlist?list=PLXklyWpn9peYJ1tsiMbAb1Jctxp-vetpY 

 

2. IR 센서 회로도 그리기

https://www.youtube.com/watch?v=LUzBfWQUjSM&list=PLXklyWpn9peYeu_j1cywcUVTBjR03km7e&index=56&t=323s&ab_channel=%EC%9D%B4%EC%9A%A9%EC%84%B1%EA%B5%90%EC%88%98MFTSMultiFusionTechSpace 

 

 

3. L298 모터드라이버 회로도 그리기

https://www.youtube.com/watch?v=pYkd-mGILXA&list=PLXklyWpn9peYeu_j1cywcUVTBjR03km7e&index=43&ab_channel=%EC%9D%B4%EC%9A%A9%EC%84%B1%EA%B5%90%EC%88%98MFTSMultiFusionTechSpace 

 

4. Atmega128 메인보드 회로도 그리기

https://www.youtube.com/watch?v=y1XFo6ZkzOc&list=PLXklyWpn9peYeu_j1cywcUVTBjR03km7e&index=28&t=924s&ab_channel=%EC%9D%B4%EC%9A%A9%EC%84%B1%EA%B5%90%EC%88%98MFTSMultiFusionTechSpace 

 

5. ATmega328 보드 회도로 그리기

 

 

 

기초 단계

1. ROS 설치하고, 설정하기

2. ROS 파일 시스템 살펴보기

3. ROS 패키지 만들기

4. ROS 패키지 빌드하기

5. ROS 노드에 대해서 이해하기

6. ROS Topic을 이해하기

7. ROS 서비스와 파라미터 이해하기

8. rqt_console과 ros launch 사용하기

9. rosed로 파일 수정하기

10. ROS msg와 srv 만들기

11. C++로 간단한 퍼블리셔와 서브스크라이버 작성하기

12. 파이썬으로 간단한 퍼블리셔와 서브스크라이버 작성하기

13. 간단한 퍼블리셔와 서브스크라이버에 대해서 살펴보기

14. 간단한 서비스와 클라이언트 코드 작성하기(C++)

15. 간단한 서비스와 클러이언트 코드 쓰기(파이썬)

16. 간단한 서비스와 클라이언트에 대해서 알아보기

17. 데이터를 녹음하고 재생하기

18. bag file에서 메시지 읽기

19. roswtf 시작하기

20. ROS wiki 살펴보기

21. 다음에 할께 뭐가 있을까?

 

 

슬슬 로스도 질리기 시작한다 얼른 끝내고

쉬었다가 하고싶어질때 urdf나 tf로 넘어가야지

 

 

 

코드 14번째 줄의 rospy.Service의 경우 add_two_ints 라는 이름으로 AddTwoInts라는 서비스 타입 요청을 받으면, handle_add_two_ints 콜백함수를 받아 응답해주는 내용이다.

 

실행권한도 주고 클라이언트로 넘어가자

 

 

 

 

클라이언트 코드 내용이야

 

10번줄은 add_two_ints 서비스 요청 대기하는거고

 

12번은 요청이 오면 'add_two_ints' 서버에다가 AddTwoInts 서비스 타입을 응답해준다는 소린거같고,

13번째 줄에서 함수를 호출하면서 서버에 보내면 응답을 받아 return 하게 되는거같다.

 

 

 

   1 #!/usr/bin/env python
   2 
   3 from __future__ import print_function
   4 
   5 import sys
   6 import rospy
   7 from beginner_tutorials.srv import *
   8 
   9 def add_two_ints_client(x, y):
  10     rospy.wait_for_service('add_two_ints')
  11     try:
  12         add_two_ints = rospy.ServiceProxy('add_two_ints', AddTwoInts)
  13         resp1 = add_two_ints(x, y)
  14         return resp1.sum
  15     except rospy.ServiceException as e:
  16         print("Service call failed: %s"%e)
  17 
  18 def usage():
  19     return "%s [x y]"%sys.argv[0]
  20 
  21 if __name__ == "__main__":
  22     if len(sys.argv) == 3:
  23         x = int(sys.argv[1])
  24         y = int(sys.argv[2])
  25     else:
  26         print(usage())
  27         sys.exit(1)
  28     print("Requesting %s+%s"%(x, y))
  29     print("%s + %s = %s"%(x, y, add_two_ints_client(x, y)))

 

얘도 실행옵션주고,

CMakelists.txt에 추가하자

 

 

 

와 이번에는 에러없이 바로 빌드 잘됬다.

 

 

 

 

http://wiki.ros.org/ROS/Tutorials/ExaminingServiceClient

 

서버를 돌리려했더니

인스톨한 서버 스크립트가 비기너 튜토리얼 모듈을 못찾는데, 오타 였네

 

 

 

오타기도 했지만 빌드 후에 setup.bash를 실행안해줘서 찾지 못하고 있었다.

 

비기너 튜토리얼 모듈 찾는건 해결했지만 이번에는 또 오타.

 

 

 

모든 에러를 다해결해주고서야 이제 서버가 돈다.

 

 

 

클라이언트도 뜨는 에러 다 고쳐주고 매개변수도 잘 주면 원하는데로 동작

 

 

 

 

이제 ROS 기초 튜토리얼은 여기까지 하려고한다

뒤에 녹음 재생하는거 bag 파일 등 남긴했는데,

이제 학교도 며칠안남기도 했고 

 

학기 끝나기 전에는 아트메가 328 회로를 직접 만들어보고 싶어서

그런쪽을 해봐야되겠다 싶다.

 

그래도 오랜만에 ROS 공부하면서 이전에는 있는지도 몰랏거나

영어 실력이 지금보다 많이 부족했고, 책에서 잘 설명하지 않은 내용들을 꽤 봐서

전보다는 ROS를 잘 다룰수 있을 자신도 생겼고

 

 

이정도면 ROS 비기너 튜토리얼 내용에서 중요하다 싶은건 다 정리했다고 봐도 될거같다.

남 보여주려고 하기보다는 그냥 이해되는데로 그냥 적다보니 남들한태는 잘 읽힐지는 모르겠지만

 

 

조만간 기회되면 URDF로 로봇 만들어서 가제보에서 돌려보면서 놀아보고싶다.

기초 단계

1. ROS 설치하고, 설정하기

2. ROS 파일 시스템 살펴보기

3. ROS 패키지 만들기

4. ROS 패키지 빌드하기

5. ROS 노드에 대해서 이해하기

6. ROS Topic을 이해하기

7. ROS 서비스와 파라미터 이해하기

8. rqt_console과 ros launch 사용하기

9. rosed로 파일 수정하기

10. ROS msg와 srv 만들기

11. C++로 간단한 퍼블리셔와 서브스크라이버 작성하기

12. 파이썬으로 간단한 퍼블리셔와 서브스크라이버 작성하기

13. 간단한 퍼블리셔와 서브스크라이버에 대해서 살펴보기

14. 간단한 서비스와 클라이언트 코드 작성하기(C++)

15. 간단한 서비스와 클러이언트 코드 쓰기(파이썬)

16. 간단한 서비스와 클라이언트에 대해서 알아보기

17. 데이터를 녹음하고 재생하기

18. bag file에서 메시지 읽기

19. roswtf 시작하기

20. ROS wiki 살펴보기

21. 다음에 할께 뭐가 있을까?

 

퍼블리셔/서브스크라이버, 서비스/클라이언트 등 c++ 구현도 있긴한데 부담스러워서 패스하고 파이썬만 끄적여야지

 

 

 

http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29

 

좀 쉬었고 이제 퍼블리셔, 서브스크라이버 시작해보자

 

 

내용 보면 beginner_tutorials 패키지에다가 scripts 폴더 만들고

 

wget으로 이미 작성된 코드 받으라고하는데,

연습삼아서 직접 작성하고 실행권한을 주자

 

그 뒤에 CMakelists.txt다가 추가해야한다고하는데,  전에는 이거 안해도 잘썻던거같은데 install 하는데 필요한가보다 

 

 

어짜피 코드 짧으니 금방 작성하자

맨 위의 #! 주석문은 파이썬 스크립트로 실행한다는 의미고

 

import야 rospy와 std_msgs.msg 에서 String 타입을 가져오고

 

7 번 줄에서 Publisher를 생성해서 'chatter'라는 토픽으로 문자를 보낸다, queue_size는 최대 10, 섭스크라이버가 못받으면 10개까지만 보관한다고 이해하면 될까 싶다.

 

그 외는 그냥 넘어가도 괜찮을거같네

 

설명할 필요가 없을거같긴한데

 

listner 함수에서 리스너 노드 초기화하고, anonymous는 노드를 익명으로 해서(이름이 안겹치게) 여러 리스너가 동시에 동작할수 있게 하는 의미인거같다.

그리고 서브스크라이버초기화하고, 콜백 함수 등록, 스트링을 받는다.

그리고 스핀 함수로 종료시킬때까지 안꺼지게 유지하기

 

 

 

그 다음에는 CMakelists.txt에 catkin_install_python 에다가 방금 쓴 파일들을 추가하자

주석보니 목적지(캣킷 패키지 바이너리)에다가 실행가능한 스크립트를 옮기는건가 싶다.

이제 catkin_make로 빌드해주면 되긴한데

 

중간에 오타나 빠트린걸로 오류뜨면 고쳐주자

나는 CMakelists.txt와 package.xml에 잘못쓴게 있어서 고쳐줬다.

또 보니 위 스크립트를 scripts 폴더다가 안넣어둿네

 

내가 오타낸게 꽤 많다.

 

 

 

아까 catkin_install_python이 어디가나 했는데 devel 폴더 밑으로 가는건가보다

 

 

http://wiki.ros.org/ROS/Tutorials/ExaminingPublisherSubscriber

 

 

이제 퍼블리셔, 서브스크라이버 스크립트 짜고, 빌드랑 인스톨까지 다했으니 이제 써보자

 

1. 퍼블리셔 돌리기

아래의 내용대로 치면

 

로그 인포로 안녕 세상이 나온다.

 

 

 

이처럼 서브스크라이버도 하면 될꺼같았는데

오타내서 에러만 줄줄이나온다.

 

 

수정하고 다시 하면

 

리스너도 잘 들었다고 인사해준다.

기초 단계

1. ROS 설치하고, 설정하기

2. ROS 파일 시스템 살펴보기

3. ROS 패키지 만들기

4. ROS 패키지 빌드하기

5. ROS 노드에 대해서 이해하기

6. ROS Topic을 이해하기

7. ROS 서비스와 파라미터 이해하기

8. rqt_console과 ros launch 사용하기

9. rosed로 파일 수정하기

10. ROS msg와 srv 만들기

11. C++로 간단한 퍼블리셔와 서브스크라이버 작성하기

12. 파이썬으로 간단한 퍼블리셔와 서브스크라이버 작성하기

13. 간단한 퍼블리셔와 서브스크라이버에 대해서 살펴보기

14. 간단한 서비스와 클라이언트 코드 작성하기(C++)

15. 간단한 서비스와 클러이언트 코드 쓰기(파이썬)

16. 간단한 서비스와 클라이언트에 대해서 알아보기

17. 데이터를 녹음하고 재생하기

18. bag file에서 메시지 읽기

19. roswtf 시작하기

20. ROS wifi 살펴보기

21. 다음에 할께 뭐가 있을까?

 

 

 

 

ROS msg와 srv 만들기

 이번장에서는 msg와 srv 파일을 만들고 빌드하는 법, 그리고 rosmsg, rossrv, roscp 명령어를 쓰자

 

 

msg와 srv 소개

- msg : msg 파일은 ROS 메시지 속성을 정의한 텍스트 파일로  메시지에 대한 소스코드 만들때 사용

- srv : 서비스에 대해서 정의한 서비스 파일로 리퀘스트와 리스폰스 두 파트로 이뤄짐.

- msg 파일은 패키지의 msg 폴더에다가 놓고, srv파일은 srv 폴더에다가 두면 된다!

- msg 파일은 한 줄당 필드 타입과 필드 명으로 이뤄지고, 필드 타입로 이런것들을 쓸수 있다.

  ex) int8/16/32 ..., float32/64, string, time,duration, 다른 msg파일 등

  + 특별한 타입으로 Header가 있는데, 이 헤더타입은 타임스템프와 coordinate frame(?) 정보를 가진다.

 

msg 파일의 예시

Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist

 

srv 설명과 예시

 srv 파일은 msg파일처럼 타입과 타입명으로 한줄한줄 쓰면되고 리퀘스트와 리스펀스는 '---'로 구분해주면 된다.

int64 A
int64 B
---
int64 Sum

 

 

2. msg 사용하기

2.1 msg 만들기

이전에 만든 beginner_tutorial에 가서 만들자

소스코드에 msg 파일을 추가할수 있도록

package.xml 파일에다가 다음 두줄을 또 넣어야한다고 한다.

어떤식으로 반영이 되는지는 아직 모르겠다.

메타 정보를 담는 package.xml에 추가했으니

 

이제 CMakelists.txt도 수정해주자

빌드할때 찾을수 있도록 message_generation을 추가하고

catkin_package에도 

CATKIN_DEPEND message_runtime를 추가하고

그리고 51번 줄쯤가면

add_message_file에다가

FILE

Num.msgs를 주석해제하거나 추가해주자

 

마지막으로 generate_messages 부분에 주석을 해주면 끝

msg파일 만들고 생성하기 진짜 힘드네

 

 

 

 

 3. rosmsg 사용하기

rosmsg show [message type]

따로 catkin_make 같은거 하지도 않았는데 이미 devel/setup.bash를 실행해놔서인지

내가 만든 Num.msg를 찾아서 보여준다.

 

 

4. rossrv 사용하기

이제 서비스 파일을 만들어보자

근데 만들기 번거로우니 roscp로 다른 패키지의 파일을 여기다가 가져오자

 

아까 package.xml에다가 메시지 생성, 런타임 의존 내용 추가했으니 넘어가고

CMakelists.txt에 아래의 파트 주석을 지워주고 저렇게 고치면 된단다.

 

 

 

4.2 rossrv 사용하기

아까 rosmsg 처럼 써보자

rosrv show [service type]

 

 

 

기초 단계

1. ROS 설치하고, 설정하기

2. ROS 파일 시스템 살펴보기

3. ROS 패키지 만들기

4. ROS 패키지 빌드하기

5. ROS 노드에 대해서 이해하기

6. ROS Topic을 이해하기

7. ROS 서비스와 파라미터 이해하기

8. rqt_console과 ros launch 사용하기

9. rosed로 파일 수정하기

10. ROS msg와 srv 만들기

11. C++로 간단한 퍼블리셔와 서브스크라이버 작성하기

12. 파이썬으로 간단한 퍼블리셔와 서브스크라이버 작성하기

13. 간단한 퍼블리셔와 서브스크라이버에 대해서 살펴보기

14. 간단한 서비스와 클라이언트 코드 작성하기(C++)

15. 간단한 서비스와 클러이언트 코드 쓰기(파이썬)

16. 간단한 서비스와 클라이언트에 대해서 알아보기

17. 데이터를 녹음하고 재생하기

18. bag file에서 메시지 읽기

19. roswtf 시작하기

20. ROS wifi 살펴보기

21. 다음에 할께 뭐가 있을까?

 

 

 

rosed 사용하기

rosed [package이름] [파일명]

ex) rosed roscpp Logger.msg

bashrc에다가 설정한 에디터로 그 패키지 파일을 바로 수정할수 있게 켜진다.

 

기초 단계

1. ROS 설치하고, 설정하기

2. ROS 파일 시스템 살펴보기

3. ROS 패키지 만들기

4. ROS 패키지 빌드하기

5. ROS 노드에 대해서 이해하기

6. ROS Topic을 이해하기

7. ROS 서비스와 파라미터 이해하기

8. rqt_console과 ros launch 사용하기

9. rosed로 파일 수정하기

10. ROS msg와 srv 만들기

11. C++로 간단한 퍼블리셔와 서브스크라이버 작성하기

12. 파이썬으로 간단한 퍼블리셔와 서브스크라이버 작성하기

13. 간단한 퍼블리셔와 서브스크라이버에 대해서 살펴보기

14. 간단한 서비스와 클라이언트 코드 작성하기(C++)

15. 간단한 서비스와 클러이언트 코드 쓰기(파이썬)

16. 간단한 서비스와 클라이언트에 대해서 알아보기

17. 데이터를 녹음하고 재생하기

18. bag file에서 메시지 읽기

19. roswtf 시작하기

20. ROS wifi 살펴보기

21. 다음에 할께 뭐가 있을까?

 

 

 

 

 이번 장에서는 디버깅에 사용하는 rqt_console과 rqt_logger_level, 여러 노드를 한번에 시작할때 쓰는 roslaunche를 알아보자

 

 

 

2. rqt_console과 rqt_logger_level

- rqt_console은 노드의 출력을 보여주는 ROS 로깅 프레임워크

- rqt_logger_level로는 노드의 로그 레벨(디버그, 알림, 경고, 에러, 페이탈)을 바꿔줄수 있음

이라는데 뭔가 잘안되서 그냥 패스

 

2.2 roslaunch 사용하기

사용법 : roslaunch [package] [filename.launch]

 

아래의 코드대로 비기너 튜토리얼로가서 런치파일을 만들자

 

group ns는 네임 스페이스를 별개로 두는 태그이고,

이 네임스페이스로 turtlesim 패키지의 turtlesim_node 노드를 sim이란 이름으로 각각 실행

네임스페이스를 둬서 두 터틀심 노드 이름 중복을 막음

이번에는 터틀심의 미믹 노드로 미믹 노드의 input을 turtlesim1/turtle1으로 매핑

ouput을 turtlesim2/turtle1으로 매핑

즉 tutlesim1에 대한 입력을 turtlesim2에 보내 반영시킨다.

 

이번에는 먼저 rostopic 명령어로 먼저 거북이 조작 명령을 퍼블리시하고

 rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

 

roslaunch 해주면

roslaunch beginner_tutorials turtlemimic.launch

 

 

터틀심 노드가 2개 돌면서 미믹 노드로 터틀심 1에 준 입력이 터틀심2로 매핑되서 똑같이 움직인다. 

 

 

기초 단계

1. ROS 설치하고, 설정하기

2. ROS 파일 시스템 살펴보기

3. ROS 패키지 만들기

4. ROS 패키지 빌드하기

5. ROS 노드에 대해서 이해하기

6. ROS Topic을 이해하기

7. ROS 서비스와 파라미터 이해하기

8. rqt_console과 ros launch 사용하기

9. rosed로 파일 수정하기

10. ROS msg와 srv 만들기

11. C++로 간단한 퍼블리셔와 서브스크라이버 작성하기

12. 파이썬으로 간단한 퍼블리셔와 서브스크라이버 작성하기

13. 간단한 퍼블리셔와 서브스크라이버에 대해서 살펴보기

14. 간단한 서비스와 클라이언트 코드 작성하기(C++)

15. 간단한 서비스와 클러이언트 코드 쓰기(파이썬)

16. 간단한 서비스와 클라이언트에 대해서 알아보기

17. 데이터를 녹음하고 재생하기

18. bag file에서 메시지 읽기

19. roswtf 시작하기

20. ROS wifi 살펴보기

21. 다음에 할께 뭐가 있을까?

 

 

http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams

 

이번 장에서는 ROS 서비스와 파라미터 그리고 rosservice와 rosparam이라는 커맨드라인 명령어도 배워보자

 

 

1. ROS Service

 ros의 서비스는 노드가 다른 노드랑 통신하는 또 다른 방식으로 서비스로 노드가 요청 request를 보내면 응답 response를 받는 식이다.

 

2. rosservice 사용하기

 rosservice는 ROS 클라이언트와 서비스를 다루는 명령어로 이런 옵션들을 쓸수 있다

- rosservice list  : 동작중인 서비스들 목록 출력

- rosservice call : 매개변수를 줘서 서비스 호출하기

- rosservice type : 서비스의 타입 출력하기

- rosservice find : 서비스 타입으로 서비스 찾기

- rosservice url : 서비스 ROSRPC uri 출력하기

 

2.1 rosservice list

 동작하고 있는 rosservice들을 보여주는데, turtlesim_node를 돌리면 저런 서비스가 나오나보다

 

 

2.2 rosservice type [service]

해당 서비스의 타입을 출력함

 

2.3 rosservice call

해당 서비스를 매개변수를 줘서 호출한다

아래의 경우 /clear 서비스를 호출해서 거북이의 궤적을 클리어함

/spawn 서비스의 경우 x, y, z, theta, name 을 인자로 받는데 한번 써보자

 

 

 

3. rosparam 사용하기

- rosparam은 ros 파라미터 서버에다가 데이터를 담고 다루는 명령어.

- 파라미터 서버는 정수, 실수, 부울 등을 저장

- rospram은 YAML 문법을 따름

- rosparam set : 파라미터 설정

- rosparam get : 파라미터 가져옴

- rospram load : 파일에서 파라미터를 로드

- rosparam dump : 파라미터를 파일에 저장

- rosparam delete : 파라미터 삭제

- rosparam list : 파라미터 이름 목록 출력

3.1 rosparam list

 turtlesim 노드는 background_r/g/b 3 파라미터를 파라미터 서버에 두고있다.

 

 

3.2 rosparam set, rosparam get

rosparam set [param_name]

rosparam get [param_name]

 

배경색 r 파람을 200으로 설정하고 /clear 서비스를 부르니 색상이 바뀌었다.

 

터틀심 배경_g 의 파람을 얻으면 이렇게 나온다

 

 

지금까지 본게

토픽, 서비스, 파람. 전에는 토픽만 알았는데 되게 아리까리하네..

 

 

 

 

+ Recent posts