ROS 노드 통신

BERT·2023년 3월 31일
0

ROS

목록 보기
5/23
xycar_ws
├ src
│  └ msg_send
│    ├ src 
│    │ ├ teacher.py
│    │ └ student.py
│    └ launch
│      └ m_send.launch
├ build
└ devel

1:1 통신

  1. 패키지 만들 위치 이동
  2. 패키지 생성
  3. 런치 파일 생성
  4. 빌드
  5. 실행권한 부여
    chmod +x *
  • 토픽 이름 my_topic
  • teacher - publisher : 토픽에 'call me please' 담아서 전송
  • student - subscriber : 토픽 받아서 message 꺼내서 화면에 출력
  • Rate(2)
    1초에 2번
    rate.sleep()에서 작동
    1/2초 sleep
  • rospy.spin()
    토픽이 도착할 때까지 대기
    토픽 도착 시 callback 함수 호출

roslaunch msg_send m_send.launch

rqt_graph


1:N 통신

xycar_ws
├ src
│  └ msg_send
│    ├ src 
│    │ ├ teacher_int.py
│    │ └ student_int.py
│    └ launch
│      └ m_send_1n.launch
├ build
└ devel
  • anonymous=True 노드를 여러 개 사용 시 이름을 달리해야 함
  • launch 파일에 name을 각각 설정

rqt_graph

N:1 통신

### N:1 통신

msg 만들기

topic 변수 선언이라고 보면 됨

xycar_ws
├ src
│  └ msg_send
│    ├ src 
│    ├ msg
│    │ └ my_msg.msg
│    ├ CMakeList.txt
│    └ package.xml
├ build
└ devel
  1. msg 폴더 생성
  2. msg 파일 작성
  3. package.xml 수정
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
  1. CMakeLists.txt 수정
    vim -d CMakeList.txt CMakeList_copy.txt
  1. 빌드

~/xycar_ws/devel/lib/python2.7/dist-packages/msg_send/msg 생성 확인

  1. 코드 안에 import
  2. 권한 부여
  3. 실행

에러 발생

roslaunch msg_send m_send_r.launch

std_msgs 있는걸로 봐선 여기가 표준 함수 import 위치인 것 같고..

파이썬 경로가 ~/xycar_ws/devel/lib/python2.7/dist-packages를 가지고 있지 않음

3시간 헤매다 우연히 새로운 터미널 오픈

가끔 이런 어이없는 에러나면 엄한데서 서칭하지 말고 챗지피티한테 묻지도 말고 욕하지도 말고 그냥 터미널 한번 껐다 켜보기

run

roscore
rosrun msg_send msg_sender.py
rosrun msg_send msg_receiver.py

launch

roslaunch msg_send m_send_r.launch

0개의 댓글