ROS, Docker 및 Unity 3D를 사용한 WSL2 로봇 기술(두 번째 부분)
단결 로봇
Unity for robotics을 사용할 수 있는 몇 가지 방법이 있다.연합 로봇 기술은 새로운 분야로 지원은 여전히 맞춤형이다.대부분의 응용 프로그램은 개인 회사에서 만든 전용 소프트웨어로 다른 사람들이 쉽게 접근하거나 설정하지 못한다.Unity는 최근 ROS support을 출시했다. 서문자 RosSharp 이전의 도서관 지점이다.내 설정에서 나는 Unity ROS library을 사용했는데, 이것은 최신 ArticulationBody 유형에 적용된다.
이 시범 프로젝트에 대해 나는 귀여운 기계 손을 선택했다. 그것은 기원된 것이다. Reachy from Pollen Robotics이다.Unity에서 ROS가 있는 로봇을 사용하려면 기존의 URDF(로봇 파일 설명자)이 필요합니다. 이 설명자는 일반적으로 로봇 제조업체에서 제공합니다.구체적으로 말하면, 나는 정적 기계의 손에서 일하기로 결정했고, MoveIt!으로 그것을 조작하기로 결정했다.
Unity에서 이 점을 어떻게 실현하는지에 대한 강좌는 많지 않지만, 나는 이 기회를 이용하여 MoveIt를 만들었다!Unity 연결기는 다른 강좌처럼 사용자 정의 서비스를 만들지 않고 MoveIt! MoveGroup API으로 로봇을 제어할 수 있습니다.나는 이 해결 방안이 모든 표준 ROS 메시지를 사용하고 추가 서비스가 필요하지 않기 때문에 다른 로봇과 더욱 쉽게 연결될 수 있다는 것을 발견했다.
Unity와 ROS는 동일한 로봇 설명자 URDF를 공유합니다.통일은 로봇 관절 상태의 주요 원천이 될 것이다.빨리!유니티의 정보 흐름을 이용해 노선을 계획하고 팔 궤적을 유니티로 보내 관절을 구동한다.
빨리!사용자 정의 ROS 주제를 사용하여 Unity에 트래픽을 전달하고 사용자 정의로 작성된 Unity MoveIt 프로세서가 해당 주제에 실행할 트래픽을 게시합니다.
이 프로젝트의 사용자 정의 코드는 Github에서 세 가지 주요 구성 요소로 구성됩니다.
unity_connector_manager.cpp, 계획된 MoveIt에서 execute () 를 호출한 후 Unity로 궤적을 보냅니다!탄도
unity_tcp_server.py(ROS 및 Unity
ROSMoveItControllerGeneric.cs, 로봇을 통합 제어하고 ROS와 통신합니다.
로스
이제 ROS 배포판을 설치합니다.ROS1을 사용하는 이유는 ROS2에 필요한 라이브러리가 부족하기 때문입니다.ROS는 docker 내부에만 설치됩니다. 비록 제 WLS2에도 ROS 버전이 설치되어 있지만, 빠른 테스트에 사용됩니다.
ROS를 제외하고, docker 이미지에는 Github에서 제공하는 몇 개의 라이브러리가 포함되어 있으며, 프레젠테이션에서 이 라이브러리를 사용할 것입니다.
zandara@XXX:$ cd ~
zandara@XXX:$ mkdir unity_demo
zandara@XXX:$ cd unity_demo
zandara@XXX:$ git clone https://github.com/szandara/unity_reachy_tutorial
zandara@XXX:$ cd unity_reachy_tutorial
./build_docker
차 한잔 마시러 가자.zandara@XXX:$ cd src
zandara@XXX:$ git clone https://github.com/szandara/reachy_description_ros1
zandara@XXX:$ git clone https://github.com/pollen-robotics/reachy_moveit_config
그들이 최근에 ROS2로 이사한 이후로 나는 Reachy의 URDF를 썼다.이제 ROS 시스템을 사용할 준비가 되었습니다!
통합 3D
이제 Docker가 아닌 ROS와의 Unity 제휴를 설정합니다.그러나 먼저 Unity3D가 없으면 설치합니다.https://unity3d.com/get-unity/download . 커뮤니티 버전(2020.2.5f1)을 사용하고 있습니다.
https://github.com/Unity-Technologies/ROS-TCP-Connector.git#v0.1.2
https://github.com/Unity-Technologies/URDF-Importer.git#v0.1.2
일치단결
이것은 내가 수동으로 조정한 임의의 값입니다.제조업체는 정확한 수치를 제공할 수 있다.
Reachy 가져오기를 완료했습니다.우리는 지금 시뮬레이션 세계에서 그것을 보아야 한다.
설치 이동!일치단결
여기에 MoveIt로 Unity의 관절체 대상을 제어하는 스크립트를 설치했습니다!로스로부터 온 소식.이 저장소 https://github.com/szandara/unity_moveit_connector/blob/master/Editor/ROSMoveItControllerGeneric.cs에 스크립트를 업로드했습니다.
이 예와 같은 매개 변수를 추가합니다
Universion Team Name: Universion
이동 그룹: unity right arm 컨트롤러
관절조:Unity 트리에서 r 어깨 관절을 끌어다 놓으면 이 화면 캡처와 같습니다.
우리 망했어!우리는 이미 로스와 통화할 준비가 되어 있다!
종합 소유
마지막 단계에서 우리는 시스템을 시작해야 한다.직접 썰어봅시다.
grep nameserver /etc/resolv.conf
<param name="ROS_IP" type="str" value="$(env ROS_IP)" />
<param name="ROS_TCP_PORT" type="int" value="10000" />
<param name="TCP_NODE_NAME" type="str" value="TCPServer" />
<param name="TCP_BUFFER_SIZE" type="int" value="1024" />
<param name="TCP_CONNECTIONS" type="int" value="10" />
<param name="UNITY_IP" type="str" value="XXX.XXX.XXX.XXX" />
<param name="UNITY_SERVER_PORT" type="int" value="5005" />
zandara@XXX:$ ./launch_docker
root@docker:~# source /opt/unity_demo/unity_reachy_tutorial/devel/setup.bash
root@docker:~# roslaunch unity_reachy_tutorial reachy_demo.launch
너는 네가 계획을 시작할 수 있다는 확인서를 보았을 것이다.zandara@XXX:$ ./launch_docker
root@docker:~# rosrun moveit_commander moveit_commander_cmdline.py
MoveIt 명령줄을 보아야 합니다.> use right_arm
> current
오류가 없음을 확보하다.오류가 발생하면 WSL2와 Windows의 시간 오프셋과 관련된 문제가 발생할 수 있습니다.이를 수정하려면 WSL2 콘솔을 열고 다음 명령을 실행하십시오.sudo ntpdate time.windows.com
> rec c
> goal = c
> goal[0] = -2.1
> plan goal
> execute
너는 Reachy가 그의 오른팔을 꼭대기로 옮기는 것을 보았을 것이다.첫 유닛 시뮬레이션을 계획하신 것을 축하합니다!결론
Unity는 ROS2에 대한 지원이 부족해서 곧 유행이 지날 수도 있는 ROS 프로젝트의 발생과 최종적인 고통스러운 이전을 초래했다.Unity has announced은 ROS2 지원이 개발 중이라고 밝혔습니다. 저는 새로운 ROS2 버전으로 본문을 업데이트할 것입니다.
그럼에도 불구하고 내가 지금 윈도 호스트에서 로봇 기술을 쉽게 개발할 수 있다는 것을 아는 것은 매우 의미가 있다!
Reference
이 문제에 관하여(ROS, Docker 및 Unity 3D를 사용한 WSL2 로봇 기술(두 번째 부분)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/szandara/robotics-on-wsl2-using-ros-docker-and-unity-3d-part-ii-4l45텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)