게임 엔진 Godot에서 ROS의 포인트 클라우드 비주얼 라이저를 만들어 보았습니다.

2128 단어 GodotRobotROS

개요



게임 엔진 Godot에서 ROS의 노드로 작동하는 점 구름 비주얼 라이저를 만들어 보았습니다.

만든 것 : htps : // 기주 b. 이 m / ymd s te / t_ro s_pc ゔ ぃ z



Godot



htps : // 기주 b. 코 m / 고도 텐기네 / 고도 t
Godot은 오픈 소스 게임 엔진입니다.
Unity나 Unreal Engine 4에 비해 지명도가 낮지만 가볍고 간단하게 사용할 수 있다는 큰 이점이 있습니다.

Godot 설정



아래에서 다운로드하여 unzip하면 실행 형식의 파일을 얻을 수 있습니다.
htps : // 미안해. 오 rg / 드 w 응 아 d / ぃ ん x

godot-cpp



htps : // 기주 b. 코 m / 어린 t 나치 ゔ ㅇ ls / 어른 t-c p
Godot의 표준 스크립팅 언어는 GDScript라는 파이썬 유사 언어이지만 GDNative를 사용하면 C++에서 플러그인을 만들 수 있습니다.
이것을 이용하여 Godot에서 ROS 노드를 움직입니다.
버전 3.1 branch를 사용하여 Cmake로 빌드했습니다.

Godot의 노드와 장면



Godot에서는 카메라, 그리기 대상 등을 노드로 취급합니다.
각 노드에는 스크립트를 연결하여 동작을 변경할 수 있습니다.
노드는 자식 노드를 임의의 개수 가질 수 있으므로 트리 구조를 만들 수 있습니다.
이 트리 구조를 장면으로 저장할 수 있습니다.
점군 비주얼라이저를 만들기 위해서 그리기를 한다.

카메라 조작



Godot GUI에서 카메라 초기 위치를 설정할 수 있습니다.
좋은 것 같은 자산을 찾을 수 없었기 때문에 우선 실행중인 마우스 조작은 없었습니다.

컬러맵



OpenCV를 이용해 parula(matlab의 디폴트 컬러 맵)로 색을 붙였습니다.
Rviz의 rainbow보다 강약이 직관적으로 되어 좋을 것 같습니다.

ROS 노드 이동



Godot의 노드의 메소드를 오버라이드(override) 해, PointCloud2의 Subscriber 생성, ros::spinOnce()의 실행, ImmediateGeometry의 생성·조작을 하고 있습니다.
(커맨드 라인 인수는 취할 수 없기 때문에 더미 데이터를 ros::init에 건네주었습니다)

마지막으로



100행 정도의 C++ 코드로 심플한 점군 비주얼라이저를 만들 수 있었습니다.
후에는 rviz와 동등한 카메라 조작을 가능하게 하는 스크립트와 tf를 처리하는 플러그인을 만들면 사용할 수 있을 것 같습니다.

좋은 웹페이지 즐겨찾기