ROS/ROS1
-
_ROS1_ultrasonicROS/ROS1 2023. 10. 27. 22:40
이번에는 초음파 센서 ROS 패키지를 만들어보려고 한다. 필요한 것은 Linux computer, Arduino, HC-SR04 초음파센서이다. 소리의 속도는 초속 340m로 1cm 이동에 약 29us 소요가 된다면 다음과 같은 수식을 얻을 수 있다. $$ x=\frac{t(us) \div 2}{29(us)}(cm) $$ x: 물체까지의 거리 t: 송신과 수신의 시간차 이제 아두이노와 초음파 센서를 연결하고 아두이노 IDE에 프로그램을 작성했다. 초음파 센서와의 연결은 다음과 같다. (D는 Digital pin을 의미한다.) Vcc: 5v pin Trig: D2 pin Echo: D3 pin Gnd: GND pin 소스코드는 다음과 같다. Arduino //핀 지정 #define trig 2 #defin..
-
_ROS1_LidarROS/ROS1 2023. 10. 24. 23:37
이번에는 Lidar센서를 활용하여 rviz에 시각화를 하려고 한다. 이번에는 이전에 사용했던 jackal gazebo 시뮬레이션으로 라이다 데이터를 만들어 사용할 것이다. 사용하는 라이다의 스펙에 맞춰서 설정하여 사용하였다. 0.1m ~ 12m, 그리고 360도 전방위 스캔을 할 수 있는 시뮬레이션이다. /front/scan으로 시뮬레이션 상의 topic을 받고 있으며 해당 데이터를 rviz에 실행을 해보려고 한다. rviz에 시각하기 위해 다음과 같이 장애물을 놓고 시작하였다. 시각화 프로그램인 rviz를 실행하고 By topic의 laserscan을 추가하면 다음과 같이 붉은 점을 볼 수 있다. 하지만, 데이터가 잘 보이지 않으므로 size(m)을 잘 조정한다면 데이터를 크게 볼 수 있다. rviz기..
-
_ROS1_sensors & IMUROS/ROS1 2023. 10. 24. 16:25
자율주행 기술을 구현하기 위해 기본적으로 다음의 센서들을 사용한다. Depth Camera Mono Camera Lidar Rader Ultrasonic IMU(Inertial Measurement Unit) Mono Camera sensor 단안 카메라 센서는 로봇에게 이미지 또는 영상데이터를 주며 받은 데이터를 OpenCV로 처리하여 차선을 인식하거나 물체를 검출하는 용도등 다양하게 사용할 수 있는 센서이다. 전통적인 방법으로는 특징점을 추출하는 방법들이 있으며, 아직도 AI와 함께 사용되는 경우가 있다. Depth Camera sensor Depth카메라는 두 카메라에서 얻은 이미지를 사용하고, 두 이미지의 거리차를 계산하여 물체의 거리 데이터를 얻을 수 있다. 대표적으로 Intel realsens..
-
_ROS1_rvizROS/ROS1 2023. 10. 23. 23:02
rviz는 ROS의 시각화 툴로 토픽들을 시각화 할 수 있는 도구이다. 이번에는 URDF(Unified Robot Description Format)제공 파일을 가지고 rviz에서 토픽들을 시각화 해보려고 한다. 주어진 rviz_xycar 패키지 내부의 urdf를 rviz에서 구현하고 joint states gui로 구동을 확인해보려고 한다. 우선적으로 joint states publisher패키지를 다음 명령어로 설치할 수 있다. $ sudo apt install ros-melodic-joint-state-publisher $ roslaunch rviz_xycar xycar_3d.launch 설치 및 실행후 joint_state_publisher로 rviz 상의 자동차를 제어할 수 있다. 이번에는 mo..
-
_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_custom_msgROS/ROS1 2023. 10. 4. 18:39
기존의 메시지를 사용할 수 있지만, 내가 직접 메시지를 만들 수 있다. 참고사이트 http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv ROS/Tutorials/CreatingMsgAndSrv - ROS Wiki Note: This tutorial assumes that you have completed the previous tutorials: using rosed. Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of you ..
-
_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..