node
-
_ROS1_노드 실습(2)ROS/ROS1 2023. 10. 17. 19:34
1. 타임 슬롯 만약 데이터를 주기적으로 발송하다가 타임슬롯을 오버하면 어떻게 될까?? 주로 rospy.Rate()와 rospy.sleep()으로 이 주기를 조절하는데 이를 그림으로 표현하면 다음과 같이 볼 수 있다. Rate(5)는 1초에 하는 일의 양을 이야기하며 0.2초씩 1번 일을 수행한다. rate.sleep()은 0.2초안에 일을 하고 남은 시간은 쉰다는 의미이다. 이번에는 일을 수행하는 양이 많아져서 0.2초를 넘는다면 어떻게 되는지 보자. - Python - sender_job.py #!/usr/bin/env python import rospy import time from std_msgs.msg import Int32 def do_job(count): for i in range(0, co..
-
_ROS1_노드 실습(1)ROS/ROS1 2023. 10. 17. 15:46
이번에는 노드간 통신을 하며 발생하는 문제들과 해결 방안을 살펴보려고 한다. 1. 노드간 동기화 문제 우리가 노드로 통신을 주고받을 때 누락없이 잘 도착하는지를 보려고 한다. 해당 예제를 보기 위해 sender, receiver를 사용하려고 한다. - Python - sender.py #!/usr/bin/env python import rospy from std_msgs.msg import Int32 rospy.init_node('sender_serial') pub = rospy.Publisher('my_topic', Int32, queue_size(2)) rate = rospy.Rate(2) count = 1 while not rospy.is_shutdown(): pub.publish(count) co..
-
_ROS1_node_communicationROS/ROS1 2023. 10. 4. 16:58
ROS는 노드들이 통신을하며 데이터를 주고 받는다. 이번에는 teacher.py와 student.py를 만들어서 데이터를 주고 받는 예제를 한번 해보도록하자. 1. 패키지 만들기 $ cd catkin_ws/src # 작업 디렉토리로 이동 $ catkin_create_pkg msg_send std_msgs rospy # 패키지 이름 설정 및 종속 패키지 추가 $ cd msg_send # msg_send 폴더로 이동 & mkdir launch # launch 폴더 생성 launc 폴더까지 생성을 했으면 catkin_ws로 이동하여 catkin_make를 진행한다. 이후 teacher.py와 student.py를 생성한다. # msg_send로 이동 $ roscd msg_send $ cd src teacher..
-
_ROS1_기본 내용ROS/ROS1 2023. 10. 1. 22:35
ROS(Robot Operating System)는 여러개의 Node와 Master로 이루어져 있으며 Node들이 Master의 중재를 받아서 메시지를 주고 받는 형태이다. 이와 같은 구조를 가진 이유는 로봇과 센서가 개발되는 회사가 다르기 때문에 각 하드웨어 및 소프트웨어를 쉽게 연결할 수 있기 때문이다. ROS에서의 통신은 topic의 publish & subscribe 기반의 메시지 교환이다. 이와 같은 구조를 가졌기 때문에 OS가 다르더라도 메시지를 교환할 수 있다는 장점을 가진다. 각 하드웨어 및 소프트웨어 모듈에 Node가 하나씩 할당되고 각 Node들은 OS의 도움을 받아서 하드웨어 장치를 제어할 수 있다. 그럼 지금까지 나온 기본 용어들을 정리해보자. 1. Master 서로 다른 노드들 사..