Xycar 총정리

OpenJR·2022년 3월 10일

외워두면 좋은 명령어

$ rosrun [pkg] [topic] : 노드 실행
$ rosnode list : 노드 이름 탐색
$ rostopic list : 토픽 이름 탐색
$ rostopic type [topic] : 토픽의 자료형 탐색
$ rostopic echo [topic] : 발행되는 토픽 들여다보기
$ rosmsg show [msg] : 자료형의 구조 탐색

.bashrc 에 추가할 내용들

alias cm='cd ~/xycar_ws && catkin_make'
source /opt/ros/melodic/setup.bash
source ~/xycar_ws/devel/setup.bash
export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=localhost

launch 사용법

$ roslaunch [pkg] [file.launch] : 런치파일 실행 (roscore 실행이 안 되어있어도 가능)
<include file=“$(find [같이 실행할 런치파일의 pkg])/src/launch/[같이 실행할 런치파일 이름].launch/> : 다른 런치파일을 불러올 때 사용하는 태그

  • param 태그
    <param name="변수이름" type="변수 자료형" value="변수값"

나만의 메세지 만들기

메세지 파일 생성하기

  1. mkdir msg
  2. xxx.msg 작성

pakage.xml 수정하기

파일 아래쪽에 내용추가
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

CMakeLists.txt 수정

find_pakage(catkin REQUIRED COMPONENTS
	message_generation # 추가하기
)
add_message_files(
	FILES
	my_msg.msg # 코멘트 풀고 1줄 새롭게 추가
)
generate_messages(
	DEPENDENCIES # 코멘트 풀기
)
catkin_package(
	CATKIN_DEPENDS message_runtime # 1줄 추가
	# INCLUDE_DIRS include
	# LIBRARIES my_package
	# CATKIN_DEPENDS rospy std_msgs
	# DEPENDS system_lib
)

자이카 하드웨어

전원 키는 방법

  1. 메인 배터리 전원 켜기
  2. 파란색 모터 전원 버튼 켜기
  3. 빨간색 메인 전원 버튼 켜기
  4. 노란색 프로세서 보드 파워 ON
  5. 와이파이에 자이카가 잡히면 부팅 성공

배터리

메인 배터리

  • 전원 버튼을 눌러야 전기가 나옴
  • 누를 때마다 전압 설정이 바뀜 (19V로 맞추어야 한다)

모터 배터리 충전법

  • 충전기잭을 꽃는다.
  • 첫번째 'Batt. Type'버튼을 여러번 눌러 'NiMH BATT'를 선택 후 4번 째 'start'버튼을 누른다.
  • 'start'버튼을 누르면 숫자 부분이 깜빡인다. 'Dec, Inc'버튼을 눌러 숫자가 1.5A가 되게 한다.
  • 'Start/Enter' 버튼을 눌러 세팅을 종료한다.
  • 'Start/Enter'버튼을 2초 이상 누르면 삑 소리와 함께 충전이 시작된다.

원격 연결

  • 자이카 리눅스 로그인 아이디/패스워드: nvidia/nvidia
  • 자이카 와이파이 패스워드: xycar123
  • 먼저 와이파이로 자이카와 연결

SSH CUI 연결법

  1. $ssh -Y nvidia@10.42.0.1 비밀번호(nvidia)로 접속

자이카 토픽과 노드

노드명토픽자료형
모터 제어기/xycar_motor/xycar_motorxycar_motor.msg
라이다/xycar_lidar/scansensor_msgs/LaserScan
카메라/usb_cam/usb_cam/image_rawsensor_msgs/Image
초음파 센서/xycar_ultrasonic/xycar_ultrasonicstd_msgs/Int32MultiArray
IMU 센서/xycar_imu/imusensor_msgs/Imu
Depth cam/camera/realsense2_camera/camera/color/image_raw
*/image_rect_raw

메세지 타입

모터 제어기

std_msgs/Header header
	uint32 seq
	time stamp
	string frame_id
int32 angle # -50 ~ 50 (-20˚ ~ 20˚)
int32 speed # -50 ~ 50

카메라

std_msgs/Header header
	uint32 seq
	time stamp
	string frame_id
uint32 height
uint32 width
string encoding
uint8 is_bigendian
uint32 step
uint32[] data # 실제 영상 데이터

IMU 센서

std_msgs/Header header
	uint32 seq
	time stamp
	string frame_id
geometry_msgs/Quaternion orientation	#RPY에 대한 데이터
	float64 x
	float64 y
	float64 z
	float64 w
float64[9] orientation_covariance
geometry_msgs/Vector3 angular_velocity	#각속도에 대한 데이터
	float64 x
	float64 y
	float64 z
float64[9] angular_velocity_covariance
geometry_msgs/Vector3 linear_velocity	#선속도에 대한 데이터
	float64 x
	float64 y
	float64 z
float64[9] linear_acceleration_covariance

LiDAR 센서

std_msgs/Header header
	uint32 seq
	time stamp
	string frame_id
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges		# 거리정보
float32[] intensities	# 물체의 강도

초음파 센서

std_msgs/MultiArrayLayout layout
	std_msgs/MultiArrayDimension[] dim
	    string label
		uint32 size
		uint32 stride
	uint32 data_offset
int32[] data			# 초음파 데이터

Depth 카메라

장비가 없어서 아직 못적음

센서 스펙

카메라

  • 170도 어안렌즈
  • CMOS 센서
  • 120 fps (640x480), 30 fps (1920x1080)

IMU 센서

  • 가속도(xyz), 자이로(RPY), 지자계(N-S)
  • R (z->y), R (z->x), Y (x->y)

라이다

  • 0.504˚, 5000 sampling, 12cm ~ 12 m
  • 데이터 구조
    index[0]= 0˚ ~ index[end]= 360˚

초음파 센서

  • Min/Max = 2 cm/4 m
  • measuring angle = 15˚

Depth 카메라

  • 적외선 카메라
    - 최대 해상도: 1280x720
    - 최대 프레임: 90fps
  • RGB 카메라
    - 해상도: 1920x1080
    - 프레임 속도: 30fpx
profile
Jacob

0개의 댓글