메인 콘텐츠로 건너뛰기

개요

이 페이지에서는 V2 로컬라이제이션 모듈의 lx_camera_ros가 제공하는 ROS2 토픽과 서비스를 설명합니다.

컴파일

Qt5 Core 및 Network 구성 요소를 설치하세요. 설치 명령은 Linux 배포판에 따라 다르며 다음 예제에서는 Ubuntu를 사용합니다.
libzip 다운로드 페이지에서 libzip 소스 코드를 다운로드하고 공식 지침에 따라 컴파일하세요. /lx_camera_ros에서 다음 명령을 실행하세요.

실행

YAML 구성 파일을 변경한 후 다시 컴파일하세요. 프로젝트를 다시 빌드하기 전에는 변경 사항이 적용되지 않습니다.

ROS2 토픽 인터페이스

인터페이스를 테스트하기 전에 카메라 전원을 켜고 약 30초 기다린 다음 ROS2 SDK 노드를 시작하세요.

로컬라이제이션 포즈 수신

ROS2는 카메라의 x, y, theta 값을 계속 수신하고 이 값과 theta에서 변환한 쿼터니언을 LxCamera_LocationPoseResult에 게시하며 TF를 통해 포즈를 브로드캐스트합니다.

로컬라이제이션 상태 수신

ROS2는 카메라의 로컬라이제이션 상태(true 또는 false)를 1 Hz로 수신하여 LxCamera_LocationResult에 std_msgs::msg::Bool로 게시합니다.

카메라 저장 공간 사용량 수신

ROS2는 카메라 저장 공간 사용 비율을 2 Hz로 수신하여 LxCamera_Capacity_Status에 std_msgs::msg::Float32로 게시합니다.

오류 모듈 이름 수신

ROS2는 카메라에서 오류가 발생한 모듈 이름을 수신하여 LxCamera_Module_Error에 std_msgs::msg::String으로 게시합니다.

맵 생성 진행률 수신

After mapping starts, ROS2 publishes the progress (0–100) as std_msgs::msg::Int32 on LxCamera_맵 생성_Progress.

맵 생성 상태 수신

After mapping starts, ROS2 publishes the mapping status as std_msgs::msg::Bool on LxCamera_맵 생성State.

파라미터 설정

LxCamera_SetParam에 std_msgs::msg::String 메시지를 게시하세요. 메시지에는 쉼표로 구분된 9개의 부동 소수점 값이 포함됩니다: x,y,z,yaw,pitch,roll,x,y,yaw. 처음 6개 값은 카메라 포즈를 정의하고 마지막 3개 값은 LiDAR 포즈를 정의합니다. 업데이트가 성공하면 /home/fr1511b/hontai/params/config_install_FL21500HAF.ini의 [Laser1] 및 [Camera1] 섹션에 해당하는 값이 업데이트됩니다.

맵 전환

완료된 맵 이름을 포함한 std_msgs::msg::String 메시지를 LxCamera_SwitchMap에 게시하세요. 카메라 웹 인터페이스를 새로 고치고 표시된 맵 이름이 바뀌면 전환이 성공한 것입니다.

맵 다운로드

  1. Publish a std_msgs::msg::String message to LxCamera_DownloadMap.
  2. 메시지에는 두 필드가 포함됩니다. save_path는 호스트 컴퓨터의 절대 경로이고 mapname은 카메라에 있는 완료된 맵의 .zip 파일 이름입니다.
  3. 다운로드가 성공하면 지정한 호스트 경로에 맵 아카이브가 생성됩니다. 압축을 풀어 PGM 맵 파일과 YAML 구성 파일을 얻으세요.

오도메트리 업로드

nav_msgs::msg::Odometry 데이터를 /sim/odom에 게시하세요. 토픽은 변경할 수 있습니다.

재로컬라이제이션

  1. geometry_msgs::msg::PoseWithCovarianceStamped 데이터를 LxCamera_UploadReloc에 게시하세요.
  2. 포즈에는 LiDAR 포즈인 x, y, yaw가 포함됩니다.
  3. 카메라 웹 인터페이스에 표시되는 위치가 전송한 포즈로 업데이트되면 재로컬라이제이션이 성공한 것입니다.
쿼터니언에는 제약이 있으므로 임의로 입력하면 안 됩니다. Euler-to-quaternion converter를 사용하여 Euler yaw 각도를 쿼터니언 xyzw 값으로 변환하세요.

메시지 유형 접두사

호스트 컴퓨터는 UDP를 통해 카메라와 통신합니다. 각 메시지의 처음 4바이트가 인터페이스 데이터 유형을 식별합니다.

ROS2 서비스 인터페이스

맵 생성, map switching, map downloading, and relocalization are also available through ROS2 services. A service response of true indicates success; false indicates failure.
다음 명령에는 ros2 service call을 사용하세요. 맵 이름은 숫자로 시작할 수 없고 30자를 초과할 수 없습니다.

맵 생성

Service name: /LxCamera_맵 생성_srv Service definition:
서비스 호출:

맵 전환

Service name: /LxCamera_SwitchMap_srv Service definition:
서비스 호출:

맵 다운로드

Service name: /LxCamera_DownloadMap_srv Service definition:
서비스 호출:

재로컬라이제이션

Service name: /LxCamera_UploadReloc_srv Service definition:
서비스 호출:

현재 맵 이름 가져오기

Service name: /LxCamera_GetCurMapname_srv Service definition:
서비스 호출:

현재 맵 목록 가져오기

Service name: /LxCamera_GetMapList_srv Service definition:
서비스 호출:

맵 생성 종료

Service name: /LxCamera_Exit맵 생성_srv Service definition:
서비스 호출:

맵 삭제

Service name: /LxCamera_EraseMap_srv Service definition:
서비스 호출:

히트맵 다운로드

Service name: /LxCamera_DownloadHeatMap_srv Service definition:
서비스 호출:

증분 맵 생성

Service name: /LxCamera_Inc맵 생성_srv Service definition:
서비스 호출: