자율주행 40

8자 주행 ,ultrasonic 내 코드 정리

8자 주행 -> converter -> odom 이 하나의 프로세스 결과이다. 우선 converter에게 바퀴의 각도(angle) 과 바퀴의 굴러가는 속도 100을 topic으로 쏴줍니다. 그리고 일정한 시간이되면 바퀴의 각도를 반대방향 angle로 틀어줍니다. 그 다음 converter에서 받아온 topic의 speed를 input_speed 에 넣어주고 바퀴의 회전속도에 곱해줘서 hello_xycar.position 의 3,4번째에 넣어줍니다. 바퀴의 방향또한 hello_xycar.postion 의 1,2,번째 에 넣어줍니다. imu파일에는 euler angle 형식으로 정보가 들어있기에 quaternion_from_euler 함수를 통해 quaternion으로 바꾸어 줍니다. wheel_speed는..

자이카 ROS 패키지

각종센서들이 여러 토픽을 /auto_drive 노드에게 보내주고 그것을 처리하여 /xycar_motor 노드에게 토픽을 쏴주어 컨트롤 하는 방식이다 YOLO 를 구성하고있는 darkent을 통해서 사람을 detect하고 lidar를 통해 거리를 측정한 정보를 /human_track 노드에 넣어주고 처리하여 xycar_motor 토픽을 발행한다. usb_cam노드에서 compress된 이미지를 안드로이드 카메라 ROS노드에게 보내준다. 안드로이드에서 방향과 속도를 입력받아서 최종적으로 xycar_mtor에게 토픽의 형태로 전달을 해준다. Base == 고정 부분 , 아래에 검은 상자 Link == 관절에 연결되는 긴 원통 부분 Joint == 링크를 연결하는 부위로 관절 부위 회전하는 방향및 한계가 존재함..

ROS 과제 답안

1. 노드간 동기화 문제 해결 , 첫번쨰 메시지가 수신이 안되는경우 sender_serial.py 에서 pub.get_num_connection 을 통해서 1이 될떄까지 헛돌게 하면된다. 1:N의 통신도 마찬가지이다 3이될떄까지 헛돌게 하면된다. 2. 데이터 크기에 따른 전송속도는 어떻게 되는가? 큰 파일을 보낼수록 속도는 늦어진다. 3. 도착하는 데이터를 미처 처리하지 못하면 어떻게 되는가? subscriber 의 큐사이즈를 늘리면 아무리 publishing 이 빨라도 흘림없이 다 처리 할 수 있다. 4. 주기적 발송에서 타임슬롯을 오버하면 어떻게 되는가? 이런식으로 벗어나게 된다 5. ROS 노드의 순차 실행 while True 문에서 자신의 이름에 해당하는 메세지가 올떄까지 돌고있다가 인터럽트 방식..

ROS day3

code analysis rospy.init_node('teacher') == 많은 노드들을 관리하고 통합하는 것이 ROS프레임워크 가 하는일이고 그것을 python으로 만든 것이 rospy 라이브러리이다. ros 시스템상에서 노드들이 topic을 주고 받기 위해서는 노드에 고유의 이름을 할당해야 한다. def init_node( name, argv= None, anonymous=False , log_level=None, disable_rostime=False , disable_rosout=False, disable_signals=False, xmlrpc_port=0, tcpros_port=0): 두번째 인자는 argv인데 사용자가 지정한 argument를 넘겨 받을 때 사용. 타입은 string의 li..

ROS day2

8자 거북이 자신만의 msseage data structure 를 쓰는방법 1 . xycar_ws/src 에서 catkin_create_pkg 를 통해서 msg_send를 만들어줍니다. 필요한 라이브러리들도 만들떄 추가해서 만들어줍니다. 2. mkdir msg 를 한후 안에다가 자신이 원하는 데이터 구조를 만들어줍니다. 3. package.xml 과 CMakeList.txt 를 ROS/Tutorials/CreatingMsgAndSrv - ROS Wiki 이곳을 참조하여 수정한다. 4. cm 으로 build를 해주고 추후에 python 에서 import 하여 써주면된다. 궁금하다 궁금해~ 1. 누락없이 모두 잘 도착하는가? 2. 데이터 크기에 따른 전송속도는 어떻게 되는가? 3. 도착하는 데이터를 미처 처..

ROS day1

Robot OS (ROS Kinetic Kame (long-term april2021) 로봇 SW를 만들기 위한 코드의 재사용이 용이한 환경제공이 목표 다양한 OS 환경에서 통일된 방법으로 상호작용을 구현하는 것이 가능하다. 표준화된 통신 프로토콜을 따르는 이기종간의 메세지 교환이 가능하다 ROS에서 통신은 마스터 == 서로 다른노드들 사이의 통신을 총괄관리 ROS Core 노드 == 실행가능한 최소의 단위 , ROS에서 발생하는 통신(송/수신) 의 주체 토픽 == ROS 노드들이 관심을 가지고 있는 이야깃거리 , 그안에 실제 들어있는것들은 메시지 라고 부름 발행자 == 특정 토픽에 메세지를 담아 외부로 송신하는 노드 구독자 == 특정 토픽에 담겨진 메세지를 수신하는 노드 패키지 == 하나 이상의 노드와..