티스토리 뷰
https://www.youtube.com/watch?v=aL7zLnaEdAg&t=786s
ROS = 미들웨어 모음
로봇을 만들고 소프트웨어를 재사용할 수 있게 하는 역할을 한다.
Plumbing - 시스템 내부 동작 구조 지원
- process management
- inter-process communication
- Device drivers
Tools - 사용가능한 도구
- simulation
- visulaization
- Graphical user interface
- Data logging
Capabilities - 제어를 포함한 구현
- control
- planning
- perception
- mapping
- manipulation
Ecosystem - 패키지 재사용 가능성, 오픈 소스 문서가 많다.
- Package organization
- Software distribution
- Documentation
- Tutorials
ROS의 철학
분산 시스템
컴퓨터, 네트워크, 4g로도 얼마나 떨어져 있어도 연결 가능
ros는 p2p 통신을 사용하는 모든 언어와 라이브러리를 사용할 수 있다(C+,python,Matlab,java 등등
Light-weight
자체가 가볍다.
오픈소스이다.
ROS MASTER
Managers the communication between nodes(processes)
Every node registers at startup with the master
각 프로세스들을 관장하려면 무조건 Ros mater 부터 켜야 한다.
터미널에 roscore를 입력하여 시작한다.
>roscore
ROS nodes
개별적으로 실행하는 하나의 프로그램 단위
노드 각각이 컴파일되며, 하나의 노드당 하나의 기능을 수행한다.
패키지로 구성되므로 rosrun을 입력한 다음 패키지 이름, 노드 이름을 입력하면 된다.
ros nodes를 실행하기 전에는 반드시 ros 마스터를 실행
#node 실행
> rosrun package_name node_name
#활성화된 노드 보기
>rosnode list
#노드 정보를 더 보기
>rosnode info node_name
Ros Topics
노드간에 구성될 수 있는 메세지 스트림
각 Node는 여러가지 topics(주제)로 통신할 수 있다.
1개의 publisher가 n 명의 하위
Topic은 메세지 스트림의 의미와 정확히 같다.
노드가 주제를 광고하면 ros 마스터 내에 등록
이 주제와 메세지를 다른 노드에 전달한다.
#토픽 리스트 활성화
> rostopic list
#토픽 정보 구독 및 출력
> rostoic echo /topic
#토픽 정보 보이기
> rostopic info /topic
서로 간의 메세지 정의는 주제 유형을 정의한다.
int, 문자열, 복잡한 메세지 유형일수도 있다.
c. c++에서 구조를 만드는 것과 같다.
*.msg file로 정의된다.
예시 : 각속도 메세지를 정의하고 싶다면 각속도.message를 작성
내부에는 세 개의 부동소수점 또는 세 개의 double 자료구조.
각 축 주위의 각속도가 들어가 있다.
#토픽의 유형 보기
> rostopic type /topic
# 주제 메세지 게시하기
> rostopic pub /topic(토픽 이름) type data
메세지는 배열로도 생성할 수 있다.
ROS Nodelets
node와 같은 컨셉
같은 머신에서 사용할 때 오버헤드를 줄여준다.
첫번째로는 ROS 노드를 사용하려고 노력하고, 만약에 불가항력일 경우(컴퓨터 1과 2를 연결하려는 경우)
사용한다.
실제 코드 예제
터미널에서 >roscore로 시작
출력 기록이 어디 있는지 확인
빨간 기록이면 rosclean으로 정리
rosrun roscpp 까지 치면 어느게 나오는지 보여준다.
>rosrun roscpp_tutorials talker
ctrl+shift+o => 터미널 분리
ctrl+shift+e => 터미널 좌우 분리
#활성 노드 보기
> rosnode list
토커 노드의 정보 보기
> rosnode info /talker
chatter 토픽에 대해 정보 보기
>rostopic info /chatter
chatter topic 분석하기
> rostopic type /chatter
토픽에 있는 메세지 확인하기
> rostopic echo /chatter
얼마나 자주 표시되는지 분석하기 -> 주기를 알려준다.
> rostopic hz /chatter
>rosrun recpp_tutorials listener