서비스 서버, 클라이언트 만들기 (service_server.py)서비스 서버의 구조서버 노드 만들기(클래스)init 정의서버를 만드는 함수 self.create_service(만든 서비스 타입, 이름, 실행함수)callback 함수 정의 (response 반환)client 로부터 request 받으면 실행main 함수객체화spin 실행shutdownif 문서비스 서버 만들기구독, 발행 노드를 만들때는 create_subscription, create_publisher를 이용했던 것처럼 이번에는 create_service를 이용한다.multi_spawn이란 이름의 MultiSpawn 데이터 타입의 서비스를 호출?callback 함수에서는 request와 response를 받고from my_first_pa..
서비스 정의 만들기srv 폴더 만들기메시지 패키지 (my_first_package_msgs) 에 srv 폴더 만들기메시지 만들때는 msg 만들었다면 서비스는 srv 폴더를 만듦srv 파일 만들기원하는 .srv 파일을 만듦메시지 msg는 종류가 한 가지 이지만 서비스는 request와 response로 두 가지이기에 구분이 필요함--- 구분자 이용하여 구분을 하는 것임int64 num---float64[] xfloat64[] yfloat64[] thetaCMakeLists.txt 수정이전에 만들었던 msg 파일과 마찬가지로 srv 파일을 알려줌 find_package(rosidl_default_generators REQUIRED)rosidl_generate_interfaces(${PROJECT_NAME} ..
이전에 대회에 나갔을 때 기존에 있는 패키지를 바탕으로 코드를 수정하면서 원하는 방향으로 로봇이 움직이도록 만들었다. 이때 내가 처음부터 작성한 코드가 아니기에 조금만 수정해도 오류가 발생했다. 코딩, 프로그래밍을 한 것이 처음이었기에 이때부터 디버깅이라고 해야할지 로그를 남기는 것의 필요성이 중요하게 다가왔다. 하지만 ROS에서 로그를 남기는 방법이 다양해서 어떤 방법을 사용할지 몰라 그냥 print를 이용했었다. ㅎㅎ 이번에 로그 관련 강의가 올라와 이 부분이 궁금해 먼저 글을 써보려고 한다.우선 혹시 모르기 때문에 rqt 관련 파일?을 설치한다.sudo apt install ros-humble-rqt*터틀심 실행하고 rqt를 실행하자!플러그인 - 로깅 - 콘솔 선택rqt 플러그인으로 로그를 관찰할 ..
항상 그랬듯 새로운 파이썬 파일 만들고서는 setup.py 수정하기setup.py에서 엔트리 포인트를 추가해주어야 함 두 가지 토픽을 구독하는 노드 만들기import rclpy as rp from rclpy.node import Nodefrom turtlesim.msg import Posefrom geometry_msgs.msg import Twistfrom my_first_package_msgs.msg import CmdAndPoseVelclass CmdAndPose(Node): def __init__(self): super().__init__('turtle_cmd_pose') self.sub_pose = self.create_subscription(Pose, '/turt..
메시지 정의 패키지 만들기패키지는 src 폴더에서 만들어야한다.ros2 pkg create --build-type ament_cmake my_first_package_msgs이전에 패키지를 만들 때에는 ament_python을 썼는데c++ 문법을 쓰진 않지만 ament_python이 메시지 빌드가 안되기 때문기존에 만든 에서 사용할 메시지를 정의할 것이기에_msgs 라는 이름의 패키지를 만듦왜 데이터 타입이 있는 패키지를 따로 분리해서 만드냐?메시지만 따로 빌드할 수 있다로봇의 버전이 달라도 원격 pc에서 핸들링이 쉽다..?새로운 패키지가 만들어졌음을 볼 수 있다.setup.py 대신 CMakeLists.txt 파일이 있다.메시지 정의 파일 만들기만든 패키지 폴더에 들어가서 msg 폴더를 만든다.그리고..
ROS2 노드 만들고 실행해보기 1ROS2 패키지 만들기워크스페이스 만들고 빌드하기학습용 워크스페이스 폴더를 만들고 패키지를 만들어 봄폴더를 하나 만들고 그 안에 src 폴더를 하나 더 만듦mkdir -p ~/ros2_ws/src하위 폴더까지 한studentstory.tistory.com 이전 글에서와 마찬가지로 노드를 만들어보려고 한다.이전에는 구독 노드를 만들었다면 이번에는 topic을 발행하는 노드이다.topic 발행 노드import rclpy as rp from rclpy.node import Nodefrom geometry_msgs.msg import Twistclass TurtlesimPublisher(Node): def __init__(self): super().__init..
ROS2 패키지 만들기워크스페이스 만들고 빌드하기학습용 워크스페이스 폴더를 만들고 패키지를 만들어 봄폴더를 하나 만들고 그 안에 src 폴더를 하나 더 만듦mkdir -p ~/ros2_ws/src하위 폴더까지 한 번에 만들 수 있음studentstory.tistory.com 나는 우선 VS code 를 이용해 편집하려고 한다.우선 이전 글에 수행했던 내용을 빠르게 보자면워크스페이스 위치에서 colcon build 후src 위치에서 패키지를 만든 모습패키지 빌드다시 빌드하면(빌드는 반드시 워크스페이스 폴더 에서 진행해야한다.)빌드 완료 후 워크스페이스 폴더 내부를 확인하면아래와 같이 파이썬 노드 파일이 만들어진 것을 볼 수 있다. 워크스페이스 불러오기하지만 이후 ros2 run 명령어로 노드를 실행하려고 ..
wsl에 설치한 우분투가 자꾸 관리자 권한을 요구해서 처음부터 새로 시작했다.그래서 다시 하는 김에 설치부터 글을 써보려고 한다.이런 오류가 난 이유는 아마 처음 마이크로소프트 스토어에서 우분투를 설치하고 터미널에서 나머지 설치를 진행하는데 이때 계정 이름을 입력하는 과정이 나타나지 않았다.그래서 터미널을 재실행하니 root 계정으로 바로 실행되었는데(일반적으로 계정 이름과 비밀번호를 설정하면 username@user-PC-name:~$ 처럼 나와야 하는데...)이후 root 계정이 아닌 새로운 계정을 만들어서 진행했다.때문에 계속 권한이 필요한 곳에서 오류가 났던 것 같다.저는 wsl 환경에서 우분투 22.04를 설치하고 ROS2 공부를 할 예정입니다.choco를 이용하고 리눅스를 사용할 수 있게 작업..
- Total
- Today
- Yesterday
- 카시오
- 티스토리챌린지
- 시계 줄
- 타란튤라
- mealy
- 교체
- 파스타
- f-91w
- Liiv M
- 방향장
- 카카오페이
- 메쉬 밴드
- 배송기간
- 네이버페이
- 리브엠
- 경북대
- 알뜰폰요금제
- 10만포인트
- 문서 스캔
- 리브모바일
- f-94w
- 방어동작
- a모바일
- 알뜰 요금제
- 계산방법
- 맛집
- 오블완
- 할인
- 알리익스프레스
- 북문
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |