lge-ros2 / cloisim_ros

ROS2 simulation device packages to connect unity based multi-robot simulator CLOisim.
MIT License
11 stars 5 forks source link

Cloisim Docker 연동 #32

Open bigkimsae opened 3 years ago

bigkimsae commented 3 years ago

OS: MAC

Cloisim 프로젝트로 유니티 ROS간 인터페이스와 가상시뮬레이션을 시도 했습니다.

현재 프로젝트 상태는 Cloisim 유니티 파일을 받아서 올리고 실행시키면 sample_resource를 불러오도록하고 Cloisim_ros는 도커로 띄운 상태입니다.

처음 유니티에서의 가상 센서들 정보는 Ros에 잘넘어가는데 그다음 zmq에러가 뜹니다. 에러 메세지가 랭스-1로 뜨는걸로보아 메세지가 들어오지 않아서 그런것 같다는 추측이 되는데요 추가로 해줘야할게 있을까요?

유니티 상태는 어떤에러 메세지도 없고 가상클로이로봇들은 움직이지 않는 상태입니다.

관련 상태 이미지로 유첨드립니다.

Ros_Unity_interface zmqError

hyunseok-yang commented 3 years ago

안녕하세요!

  1. 일단 제가 Mac OS에서는 한번도 테스트를 해보진 못했었는데, macos에서 cloisim을 어떻게 실행하셨나요~?
  2. 혹시 cloisim은 버전 몇을 사용 하셨는지요?
  3. 멀티 로봇 돌리기전에 싱글 로봇을 돌려보시겠어요? (lg_seocho_with_actor.world 안에 보면 cloi2, clo3는 주석처리하시면 됩니다.)
  4. sample_ressource에서 CLOi_porter sdf를 보시면, 안에 여러가지 부품들이있는데, camera, lidar등의 부품들을 주석처리 해버리시고, 한번 실행 해보시겠어요?
hyunseok-yang commented 3 years ago
  1. 로그 상에 포트가 찍혀 있는 것으로 보아, cloisim과 cloisim_ros간의 연결성에 대한 문제는 없어보입니다. 지금 저 상태에서라도 ros2 topic list를 한번 쳐보시겠어요?
  2. 아니면, 이미미 topic list들이 뜨는지 한번 확인 해보고 topic들이 확인 된 상태에서, ros2 teleop_twist_keyboard로 한번 조정 시도를 해보셨을까요? (multi-robot 은 namespaced되어있기 떄문에 __ns:={robot_name} 등의 옵션을 넣어주셔야합니다.)
hyunseok-yang commented 3 years ago
  1. 그리고, 추가로 혹시 시뮬레이터 내부에 무슨 에러가 있었을지도 모릅니다. ~/.config/unity3d/LGElectronics.AdvancedRoboticsLab/CLOiSim/Player.log 이 로그도 한번 확인해봐주실수 있나요? (Mac이셔서 경로가 어떻게 될지 모르겠네요... 우분투의 경우 유니티 기본 로그 저장 위치 입니다.)
bigkimsae commented 3 years ago

1.  cloisim은 유니티 2020.3.4 LTS 버전입니다 cloisim_ros는 도커로 최신버전을 돌렸습니다 foxy, main 브렌치 둘다 받아서 해봤지만 현상은 같았습니다.

  1. 최신버전을 사용하였습니다
  2. 주석처리 후 싱글모드로 실행해봤는데 같은 현상입니다.
  3. 카메라 라이다 센서 주석처리 후 실행 했는데 역시 같은 현상입니다.
  4. 도커에서 명령어가 안먹습니다.
  5. topic lists 는 어디서 확인할 수 있나요?
bigkimsae commented 3 years ago

혹시 유니티 로그에서 Close SimulationControlService라는 로그가 뜨는데 이것과 관련있을까요? Screen Shot 2021-05-21 at 2 06 49 PM

hyunseok-yang commented 3 years ago

혹시 유니티 로그에서 Close SimulationControlService라는 로그가 뜨는데 이것과 관련있을까요? Screen Shot 2021-05-21 at 2 06 49 PM

아 고것은 오히려 정상 입니다. 초기 포트 리스트 잘 가져오고 나서 끊어버립니다!

hyunseok-yang commented 3 years ago

1.  cloisim은 유니티 2020.3.4 LTS 버전입니다 cloisim_ros는 도커로 최신버전을 돌렸습니다 foxy, main 브렌치 둘다 받아서 해봤지만 현상은 같았습니다.

 아, 보니까, 에디터로 사용하시는군요, 
  이게 linux(ubuntu)에서 Grapihc APIfmf Vulkan 라이브러리 기준으로 개발을 했는데, 맥에서도 Vulkan 라이브러리 사용이 가능한가요? 
  현재 cloisim을 에디터로 사용하실 것면, main 브랜치로 사용해주셔야 됩니다.
  cloisim_ros는 main에서는 계속 개발하면서 나아가고 있기 때문에, stable은 foxy 브랜치를 사용해주셔야합니다.
  1. 최신버전을 사용하였습니다
 editor로 사용하시는 것 같은데, binary 2.3.1로 돌려보신 것은 아니시죠? 맥이셔서...
 일단,  cloisim /main 브랜치로 실햏 하셨다고 이해 됩니다.
  1. 주석처리 후 싱글모드로 실행해봤는데 같은 현상입니다.
네, 알겠습니다.
  1. 카메라 라이다 센서 주석처리 후 실행 했는데 역시 같은 현상입니다.
네, 알겠습니다.
  1. 도커에서 명령어가 안먹습니다.
도커 컨테이너를 실행하고는 명렁어는 치실수 없을거고, 로컬에서 ros2를 돌리셔서 ros2 명령어를 보내시거나, 
 osrf/ros2 도커를 받아셔서 컨테이나 새로 하나 열어서 명령어 쳐보시면 될 것 같습니다.
  1. topic lists 는 어디서 확인할 수 있나요?
ros2 topic list 라고 command 를 치시면 확인 하실 수 있는데,
ros2 가 install 및 setup되셔야합니다
bigkimsae commented 3 years ago
  1. topic lists 입니다 cloi1 토픽잘 연결된것으로 보입니다 root@14b4bcde2066:/# ros2 topic list /clock /cloi1/battery_state /cloi1/cmd_vel /cloi1/imu /cloi1/navsatfix /cloi1/odom /cloi1/tf /cloi1/tf_static /parameter_events /rosout /tf /tf_static
bigkimsae commented 3 years ago
  1. cloisim은 main branch, cloisim_ros는 foxy branch를 사용했지만 결과는 같았습니다
  2. 예상하신것처럼 editor 사용이 맞습니다 추후에 제가 구매한 미니로봇과 연동시킬것이기 때문에 사실상 Editor상에서 잘되지않으면 의미가 없습니다...
hyunseok-yang commented 3 years ago
  1. topic lists 입니다 cloi1 토픽잘 연결된것으로 보입니다 root@14b4bcde2066:/# ros2 topic list /clock /cloi1/battery_state /cloi1/cmd_vel /cloi1/imu /cloi1/navsatfix /cloi1/odom /cloi1/tf /cloi1/tf_static /parameter_events /rosout /tf /tf_static

그러면 거기서 예를 들어 clock topic 한번 읽어보시겠어요? ros2 topic echo /clock

그리고 robot 관련으로 ros2 topic echo /cloi1/odom

이렇게 2가지 한번 topic으로 data가 잘 나오는지 한버 보시죠~

hyunseok-yang commented 3 years ago
  1. cloisim은 main branch, cloisim_ros는 foxy branch를 사용했지만 결과는 같았습니다

네, 알겠습니다.

  1. 예상하신것처럼 editor 사용이 맞습니다 추후에 제가 구매한 미니로봇과 연동시킬것이기 때문에 사실상 Editor상에서 잘되지않으면 의미가 없습니다...

Editor상으로도 충분히 가능 합니다. 저도 주 개발은 editor 상에서 하니깐요 다만, Code에서 사용되는 특정 API가 Vulkan 라이브러리를 통해서 이루어져야하는데, Mac에서도 그 api 사용에 문제가 없는지 의문입니다. 제가 간단하게 검색한 바로는 지원 안된다고 나와서요.

혹시 Ubuntu 머신은 현재 없으시죠?

bigkimsae commented 3 years ago

ubuntu는 가상머신으로 사용해야 될것같습니다 혹시 불칸 라이브러리는 어떤 용도로 사용하신건가요?

hyunseok-yang commented 3 years ago

ubuntu는 가상머신으로 사용해야 될것같습니다

네ㅜㅜ Vulkan이 윈도우랑 ubuntu는 되는 것으로 알고 있는데, 제가 현재 ubuntu에서만 연구/개발하고 있어서 다른 환경은 대응이 어렵습니다....
ubuntu에서 사용하시면서 발생한 문제는 바로바로 제가 도움드리도록 하겠습니다.

추후에 여건이 되면 타 플랫폼도 가능한 방법을 찾아보겠습니다.

혹시 Mac용 Unity Editor 상에서는 다른 에러 출력 못보셨나요? 해당 api를 call 할수 없다던지 말이죠...

혹시 불칸 라이브러리는 어떤 용도로 사용하신건가요?

cloisim 관련 질문이긴하지만, Vulkan library는 현재 Graphics Camera를 이용한 센서 모델링에 사용되고 있습니다. MultiCamera, Camera, Depth Camera, Realsensor, 3D/2D Lidar 등이요~

bigkimsae commented 3 years ago

Unity에서는 어떤 에러로그도 없습니다... vulkan api가 맥도 지원 한다고 합니다 마지막으로 제 그래픽과 맞는 드라이버를 설치해보고 포기해야될것 같습니다.. Screen Shot 2021-05-21 at 3 45 04 PM

bigkimsae commented 3 years ago

혹시 Unity 파이프라인으로 Vulkan을 말씀하신건가요? 유니티는 맥에서 그래픽 API를 open gl, metal만 지원하네요

hyunseok-yang commented 3 years ago

혹시 Unity 파이프라인으로 Vulkan을 말씀하신건가요? 유니티는 맥에서 그래픽 API를 open gl, metal만 지원하네요

파이파라인 이라면, rendering pipeline 이야기 하시는 것 같은데, 그것은 현재 최신 URP(Universal Rendering pipepline)으로 되어있습니다.

Graphic API중에 이 AsyncGPUReadback() API를 활용하고 있는데, 이것이 지원가능하냐 마냐의 문제 입니다.

네, Mac은 현재 OpenGL Meta만 되는데, 제가 찾아본바로는 Meta가 AsyncGPUReadback() 이것을 지원 안한다고 봐서요 ...ㅜ

그래서 아래와 같이 대체 plugin을 개발한 사람도 있는것 같더라구요. https://github.com/keijiro/MetalAsyncReadback

hyunseok-yang commented 3 years ago

Unity에서는 어떤 에러로그도 없습니다... vulkan api가 맥도 지원 한다고 합니다 마지막으로 제 그래픽과 맞는 드라이버를 설치해보고 포기해야될것 같습니다.. Screen Shot 2021-05-21 at 3 45 04 PM

네, Vulkan API가 Mac을 지원한다고 해도, Unity가 또 그걸 지원해줘야하나 봐요....

hyunseok-yang commented 3 years ago

아, 잠시만요 제가 지금 다시 또 더 찾아보니까. https://light11.hatenadiary.com/entry/2021/01/18/203431

2018부터 Metal에서도 AsyncGPUReadback을 지원하기 시작했다는것 같은데요...? 그래서 에러메시지가 없으셨나 봅니다.

그리고 아까 센서들을 빼고도 됬기 때문에 문제 없어야 하는게 맞는 것 같습니다.

(맥이 있으면 저도 한번 시도해보고 싶네요.)

hyunseok-yang commented 3 years ago
  1. topic lists 입니다 cloi1 토픽잘 연결된것으로 보입니다 root@14b4bcde2066:/# ros2 topic list /clock /cloi1/battery_state /cloi1/cmd_vel /cloi1/imu /cloi1/navsatfix /cloi1/odom /cloi1/tf /cloi1/tf_static /parameter_events /rosout /tf /tf_static

그러면 거기서 예를 들어 clock topic 한번 읽어보시겠어요? ros2 topic echo /clock

그리고 robot 관련으로 ros2 topic echo /cloi1/odom

이렇게 2가지 한번 topic으로 data가 잘 나오는지 한버 보시죠~

@bigkimsae 님, 혹시 이거 topic data가 잘 나오는지 한번 확인 해보셨나요??

왜냐면, 저 에러가 특정 센서에 대한 data만 잘 안나온 것일 수도 있거든요.

bigkimsae commented 3 years ago

테스트 해봤는데 에코 메세지가 들어오지않네요 음..

bigkimsae commented 3 years ago

혹시나 해서 모든 소스를 다시 최신 버전으로 받아서 돌렸는데 에러 메세지가 조금 바꼈네요 유니티는 여전히 아무런 에러 메세지가 없습니다. Screen Shot 2021-05-21 at 4 33 20 PM

bigkimsae commented 3 years ago

모든 센서로부터 메세지가 안들어오는것으로 보입니다

hyunseok-yang commented 3 years ago

혹시나 해서 모든 소스를 다시 최신 버전으로 받아서 돌렸는데 에러 메세지가 조금 바꼈네요 유니티는 여전히 아무런 에러 메세지가 없습니다. Screen Shot 2021-05-21 at 4 33 20 PM

@bigkimsae 님, cloisim_ros 와 cloisim이 matching되어야 해서 무조건 최신으로 사용하시면 인터페이스가 맞지않을 수 도 있습니다. 지금 계속 개발중에 있어서 그렇습니다

저 에러로그는 인터페이스가 맞지 않는 경우 입니다.

https://github.com/lge-ros2/cloisim/releases/tag/2.3.1 여기에 적혀 있는 것처럼

cloisim은 git checkout 2.3.1 하시고, cloisim_ros는 git checkout 2.9.0 로 맞추어 놓고, 한번 돌려보시겠어요?

hyunseok-yang commented 3 years ago

가능한 우분투(+ GPU) 머신으로 해보시고, 맥에서는 추후에 제가 맥북 구하게 되면 한번 확인 해보겠습니다.

bigkimsae commented 3 years ago

버전을 맞추어 다시 시도해봤지만 여전히 같은 현상입니다. 우분투로 다시 도전해봐야 할것같네요. 도움주셔서 감사합니다~ :)

hyunseok-yang commented 3 years ago

@bigkimsae 네 :( 일단 ubuntu로 한번 try 해보시고요.

제가 여건과 여력이 되는한 옛날 중고 맥북이라도 구해서 한번 확인해보겠습니다!