[ROS] RVIZ 8자 주행 + LiDAR + IMU

happy_quokka·2023년 10월 16일
0

ROS

목록 보기
22/25

rviz_all 패키지 제작

$ catkin_create_pkg rviz_all rospy tf geometry_msgs urdf rviz xacro

$ cd rviz_all/
$ mkdir launch
$ mkdir urdf
$ mkdir rviz

사용 파일들

  • urdf
    • rviz_all.urdf(자동차 모델링인 xycar_3d.urdf를 바탕으로 lidar 데이터를 시각화한 lidar_urdf.urdf 를 추가했다)
  • 8자 주행
    • odom_8_drive.py
      • 8자 주행을 하기 위한 angle, speed 발행
      • 노드 : drive
      • pub_topic : xycar_motor 토픽(xycar_motor 타입)
    • converter.py
      • xycar_motor 토픽을 joint_states 토픽으로 변환하는 코드
      • sub_topic :xycar_motor (xycar_motor 타입)
      • pub_topic :joint_states (JointState 타입)
      • angle과 speed를 받아 JointState 타입으로 만든다(angle * 0.4, wheel 돌아가는 각도(-3.14~3.14)
  • lidar 토픽 발행
    • rosbag 실행으로 scan 토픽 발행
    • rviz_lidar.py
      • scan 토픽을 받아서 4방향의 거리 각각을 발행
      • sub_topic : scan (LaserScan 타입)
      • pub_topic : scan1, scan2, scan3, scan4 (Range 타입, Range의 range에 거리 정보 담는다)

  • imu 토픽 발행

    • imu_generator.py
      • imu_data.txt파일에서 데이터를 얻어 imu 토픽 발행
      • pub_topic :imu(Imu타입)
      • imu토픽에 퀀터니언 값으로 x,y,z,w가 들어있다.
  • odom 토픽 발행

    • odom_imu.py
      • imu, joint_state 토픽을 받아 odom토픽을 발행하는 코드
      • rviz_odom.py 활용하여 작성
        • joint_states 토픽을 받아 odom 토픽으로 변환
        • sub_topic : joint_states (JointState 타입)
        • pub_topic : odom (Odometry 타입)
        • angle을 통해 현재 위치 추정
        • quaternion 형식이다

0개의 댓글