Autoware/ROS로 지도 만들기

Velodyne VLP-16을 사용하여 방 안에서 자율주행용 맵을 작성해 봅니다.

참고 : htps : // 이 m/유키 싸이와/있어 ms/21 아 6% 88% 90

대차



측정용으로 대차를 만들어 보았다.
(※ 최종적으로는 모터를 붙여 달릴 예정)


Velodyne의 노드 시작



방법 1. Autoware UI에서



ARM의 Sensing 탭에서 VLP-16을 클릭합니다.
points_raw 주제에서 데이터가 흐른다.

방법 2. ROS 명령으로


$ roscore&
$ roslaunch velodyne_pointcloud VLP16_points.launch &
$ rosnode list
$ rostopic echo /velodyne_points //データが来ているのが分かる

velodyne_points 주제에서 데이터가 흐릅니다.

ROSBAG로 기록



방법 1. Autoware UI에서



ROSBAG 버튼을 클릭합니다.

방법 2. ROS 명령으로


$ rosbag record -a //すべてのノードを記録
$ rosbag record -O vlp-16.bag /velodyne_points //ファイル名を指定してVelodyneノードのみ記録

vlp-16.bag 파일이 생성됩니다.

참고 : 녹화 중에는 RViz에서 보면서 천천히 이동합니다.

포인트 클라우드로


  • 기록한 bag 파일을 재생하고 일시 정지.
  • Computiong 탭의 ndt_mapping 확인란을 선택합니다.
  • .bag 파일을 일시 중지 해제합니다. 잠시 후 다시 일시 중지합니다.
  • Computiong 탭의 ndt_mapping에서 app 버튼에서 팝업을 열고 저장 위치를 ​​지정하고 PCD OUTPUT 버튼을 누릅니다.
  • .pcd 파일이 생성됩니다.

  • ※참고: htps // p 여지 ct. Nicki bp. 이. jp/미라이/주 sk1906/다 y3. pdf

    topic 이름이 'points_raw'가 아니면 pcd 파일에 기록되지 않으므로,
    「velodyne_points」로 기록한 경우는, topic명을 이하로 전송한다.
    htps : // 이 m/미소라고 d/있어 ms/6d9세990에 b19c105d96#3d마 p%에4%BD%9C%에6%88%90
    $ rosrun topic_tools relay /velodyne_points /points_raw
    

    덧붙여서, 참고 PDF에 있는 ndt_mapping.rviz는 찾을 수 없었다.
    $ find ./ -name ndt_mapping.rviz
    // ヒットしない。
    

    만든 지도 확인



    RViz로 확인한다. ARM의 Map 탭에서 TF를 누른 다음 Rviz 버튼에서 시작하면 아래와 같이 표시되었다.




    설정값에 대하여



    좁은 장소나 실내의 맵에서는 Computing > ndt_mapping에서 minimum Scan range를 0.25 등으로 설정


    각종 에러에 대해서



    아래와 같은 에러가 나올 때가 있었다.
    // TF指定がされていない場合
    For frame [velodyne]: No transform to fixed frame [world].  TF error: [Lookup would require extrapolation into the past.  Requested time 1609378636.168447000 but the earliest data is at time 1609383678.572532467, when looking up transform from frame [velodyne] to frame [world]]
    
    // MapタブのTFが定義されてない場合
    Global Status:Error
    Fixed Frame [world] does not exist
    
    // Velodyne座標がWorld座標とリンクしていない場合
    Points Raw:
    Status: Error
    For frame [velodyne]: Fixed Frame [world] does not exist
    
    // Velodyne座標がWorld座標とリンクしていない場合
    For frame [velodyne]: No transform to fixed frame [world].  TF error: [Could not find a connection between 'world' and 'velodyne' because they are not part of the same tree.Tf has two or more unconnected trees.]
    
    // Minimum_range
    For frame [velodyne]: No transform to fixed frame [world].  TF error: [Lookup would require extrapolation into the future.  Requested time 1609686391.451981000 but the latest data is at time 1609686288.021054000, when looking up transform from frame [velodyne] to frame [world]]
    

    htps : // 코 m/덴덴쇼/있어 ms/959c6d510593546f4020
    이것은 잘 할 수 없었다.
    rosrun tf static_transform_publisher 0 0 0 0 0 0 map frame 100
    

    프레임/TF 연결 방법



    좌표계를 world→map→base_link(차량)→velodyne과 링크시켜 줄 필요가 있다.
  • world → map : Map 탭에서 TF를 누르십시오
  • map → base_link : Computing 탭에서 ndt_mapping을 누르십시오
  • base_link → velodyne : 설정 탭에서 TF를 누릅니다.

    TF 트리를 시각화하고 확인


    $ rosrun tf view_frames
    

    이 커맨드를 치는 것으로, 트리 구조도가 PDF 출력되어 알기 쉽다.




    결국 완성된 지도



    점군이 얇지만,,
  • 좋은 웹페이지 즐겨찾기