Search

Scrum 16: μž‘μ—… in μš©μ‚°

Category
Scrum
Status
μ°Έμ—¬μž
μƒμœ„ ν…ŒμŠ€ν¬
λ‚ μ§œ
생성 μΌμ‹œ
2024/01/04 04:57

 뭐 ν–ˆλƒ ?

β€’
YOLO
β—¦
κΈ°μ‘΄ λͺ¨λ“ˆν™”ν•œ YOLO μ‹€ν–‰ μ‹œμ— λ‹€λ₯Έ μž‘μ—…μ„ ν•  수 μ—†λŠ” 문제점 발견
β–ͺ
ros둜 μ—°λ™μ‹œμΌœμ„œ /det2main ν† ν”½μœΌλ‘œ main에 emg_stop, stop_rate 두가지 msg λ„˜κΉ€
β–ͺ
rosrun detection detct.py
β€’
/per2main μ—μ„œ Nonetype μ—λŸ¬κ°€ λœ¨λŠ” ν˜„μƒ
β—¦
per κ³Ό main의 동기화 문제둜 인해 perμ—μ„œ pub을 μ•ˆν–ˆλŠ”λ° mainμ—μ„œ subν•΄μ„œ 생긴 문제
β–ͺ
Nonetype μ‹œ μ˜ˆμ™Έμ²˜λ¦¬λ‘œ ν•΄κ²°

 뭐 λ‚¨μ•˜λƒ ?

β€’
IMU system κ³Ό LiDar μ‹œμŠ€ν…œ 의 μ’Œν‘œκ³„ 일치
β—¦
ROS 의 TF 둜 해결이 κ°€λŠ₯ ν•  κ²ƒμœΌλ‘œ νŒλ‹¨ 쀑.
#!/usr/bin/env python3 import serial import rospy from math import sin,cos import time # import tf from geometry_msgs.msg import TransformStamped def get_imu(): ser = serial.Serial(port='/dev/ttyUSB0', baudrate=912600) line = ser.readline() print(line) words = line.decode('utf-8').split(",") data_index = 1 roll = float(words[data_index]) pitch = float(words[data_index + 1]) now_sec=time.time() yaw = float(words[data_index + 2]) pre_sec=0 pre_yaw=yaw yaw_angular=(yaw-pre_yaw)/(now_sec-pre_sec) print("roll : ",int(roll)) print("pitch :", int(pitch)) print("yaw rate :",int(yaw)) print("yaw angular velocity :",int(yaw_angular)) pre_sec=now_sec pre_yaw=yaw return roll,pitch,yaw if __name__ =="__main__": rospy.init_node("imu_mapping_node") br = tf.TransformBroadcaster() translation = transform_msg.transform.translation rotation = transform_msg.transform.rotation roll,pitch,yaw = get_imu() x = cos(yaw) y = sin(yaw) print(f"mapped IMU Data - X:{x}, Y:{y}") transform_msg = TransformStamped() transform_msg.header.stamp = rospy.Time.now() transform_msg.header.frame_id = "main_grid" transform_msg.child_frame_id = "imu_grid" transform_msg.transform.translation.x = x transform_msg.transform.translation.y = y transform_msg.transform.translation.z= 0.0 transform_msg.transform.rotation.x = 0 transform_msg.transform.rotation.y = 0 transform_msg.transform.rotation.z= 0 transform_msg.transform.rotation.w = 0 br.sendTransformMessage(transform_msg) rospy.spin() ''' while True: get_imu() # time.sleep(1) #ser.close() '''
Python
볡사
β€’
ν˜„μž₯μ—μ„œ μ‹€μ œ μ°¨κ°€ 움직이면 GPS 값이 λ°”λ€Œλ‹ˆ 였차λ₯Ό 직접 μ§€μ •ν•΄μ£Όμ–΄μ•Ό 함.
β—¦
Driven_autonomous_driving/ros_package/driven_ros/src/driven/src/decision/library/MotionPlanner.py 의 isInitPosition_by_gps ν•¨μˆ˜μ˜ outlier 인자λ₯Ό μˆ˜μ •ν•΄μ•Ό ν•œλ‹€.
β€’
λ‹€λ₯Έ μž‘μ—…λ“€κ³Ό YOLOλ₯Ό 같이 μ‹€ν–‰ν•  μ‹œμ— μ—°μ‚° 속도가 맀우 느린 것을 μ΄μ œμ„œμ•Ό 발견
β—¦
CUDAλ₯Ό μ΄μš©ν•˜μ—¬ GPU μ‚¬μš©μœΌλ‘œ μ—°μ‚° 속도λ₯Ό 높여야함
β—¦
ν˜„μž¬λŠ” CPUμ‚¬μš©
β—¦
λͺ»ν•˜λ©΄ 잿자 μ‚° μ΄μœ κ°€ μ—†μŒ
β€’
slamμ—μ„œ 맡뽑을 λ•Œ μ‚¬λžŒ ν•„ν„°λ§ν•˜λŠ” μ½”λ“œ μˆ˜μ •
β—¦
μ‚¬λžŒμœΌλ‘œ ν΄λŸ¬μŠ€ν„°λ§λœ μ’Œν‘œλ“€μ„ μ§€μš°λŠ” 것이 μ•„λ‹ˆλΌ μ½˜λ³΄λ‹€ 높은 μœ„μΉ˜μ— μžˆλŠ” μ’Œν‘œλ“€λ§Œ μ§€μš°λŠ” μ‹μœΌλ‘œ μ²˜λ¦¬ν–ˆμ–΄μ„œ ν˜„μž¬λŠ” μ‚¬λžŒμ€ μƒλ°˜μ‹ μ΄ 잘린 μ’Œν‘œλ“€λ§Œ λ„˜μ–΄μ˜€λŠ” ν˜•μ‹μ΄λΌ 필터링이 λ˜μ§€ μ•ŠμŒ
β€’
μ•žμœΌλ‘œ νŒŒμΈνŠœλ‹

Β μ£½μ„λž˜ ?

β€’
IMU μ‹œκ°„λ²„λ¦¬κΈ° γ…‹γ…‹
β€’