ROS2에서 gazebo 용 sdf를 작성하는 첫 단계
할 일
전회의 계속입니다.
마지막으로 최소 urdf 파일을 작성하여 rviz2에서 볼 수 있는지 확인했습니다.
쓴 것은 직사각형의 모노리스입니다만, 이번은 그 모노리스를 Gazebo에 표시시키고 싶습니다.
Gazebo에서 다루는 표준 파일 형식은 sdf입니다.
urdf를 Gazebo용으로 변환하는 방법도 있는 것 같습니다만, 자신에게는 아직 어렵기 때문에 sdf를 직접 써 갑니다.
어쨌든 모노리스를 표시할 수 있을지 어떨지를 이번은 확인하고 싶습니다.
필요한 것
참고
Testing Gazebo and ROS 2 integration
아즈미노의 숲에서 > ROS(Robot Operating System) 사용 > 로봇 기술 언어
매우 참고가 되었습니다. 감사합니다.
ROS2 패키지 만들기
먼저 적절한 작업 공간으로 이동하여 urdf 테스트용 패키지를 만듭니다.
전회의 계속 등, 원래 있는 경우는 불필요합니다.
$ ~/dev_ws/src #ビルド済みで使える状態の適当なワークスペース
$ ros2 pkg create urdf_test --build-type ament_python --dependencies rclpy
새롭게 작업 공간을 만들었다고 하는 경우는, 일단 액티베이트도 해 둡니다.
(활성화하려면 여기를 클릭)
$ CD ~/dev_ws/
$ source install/local_setup.bash
$ CD ~/dev_ws/src
sdf 쓰기
sdf의 내용을 써 갑니다. sdf는 xml 형식의 파일입니다.
이번은 모놀리스를 포함한 환경 마다 파일에 기술하므로 확장자를 「.world」로 합니다.
(라고 하는 것도 모노리스 단체를 파일로 해 launch 하는 방법을 아직 모릅니다.)
$ nano test.world
nano는 물론 vim에서도 code에서도 사용할 수있는 편집기로 OK입니다.
test.world<?xml version="1.0"?>
<sdf version="1.6">
<world name="default">
<!--地面を導入する-->
<include>
<uri>model://ground_plane</uri>
</include>
<!--ライティングを導入する-->
<include>
<uri>model://sun</uri>
</include>
<!--ここからモノリスの記述-->
<model name='monolith'>
<!--位置と角度。x,y,z,roll,pitch,yaw 単位はメートルとdegree-->
<pose>0 0 0 0 0 0</pose>
<!--パーツの記述-->
<link name='body'>
<pose>0 0 0 0 0 0</pose>
<inertial>
<!--質量-->
<mass>1</mass>
<!--慣性行列(後述)-->
<inertia>
<ixx>0.016667</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.014167</iyy>
<iyz>0</iyz>
<izz>0.004167</izz>
</inertia>
</inertial>
<!--表示用の記述-->
<visual name='visual'>
<geometry>
<box>
<!--x,y,zのサイズ(メートル)-->
<size>0.1 0.2 0.4</size>
</box>
</geometry>
</visual>
<!--衝突判定の範囲-->
<collision name='collision'>
<geometry>
<box>
<!--x,y,zのサイズ(メートル)-->
<size>0.1 0.2 0.4</size>
</box>
</geometry>
</collision>
</link>
</model>
</world>
</sdf>
위는 Gazebo에 모노리스를 등장시킬 때 아마도 최소한의 빠듯한 필요 요소가 될 것입니다.
깊이 10cm, 폭 20cm, 높이 40cm, 질량 1의 직육면체입니다.
관성 행렬은 계산에서 구해야 합니다.
로봇 기술 언어 의 사이트를 참고로,
ixx = 1/12 x 질량 x (y^2 + z^2)
iyy = 1/12 x 질량 x (x^2 + z^2)
izz = 1/12 x 질량 x (x^2 + y^2)
에서 요청합니다.
Gazebo에서 sdf 표시
Gazebo 시작
$ gazebo test.world
Gazebo가 열리는 동시에 설정된 모노리스가 뷰의 중앙에 나타납니다.
덧붙여서 gazebo의 뷰 화면의 조작은,
먼저 적절한 작업 공간으로 이동하여 urdf 테스트용 패키지를 만듭니다.
전회의 계속 등, 원래 있는 경우는 불필요합니다.
$ ~/dev_ws/src #ビルド済みで使える状態の適当なワークスペース
$ ros2 pkg create urdf_test --build-type ament_python --dependencies rclpy
새롭게 작업 공간을 만들었다고 하는 경우는, 일단 액티베이트도 해 둡니다.
(활성화하려면 여기를 클릭)
$ CD ~/dev_ws/
$ source install/local_setup.bash
$ CD ~/dev_ws/src
sdf 쓰기
sdf의 내용을 써 갑니다. sdf는 xml 형식의 파일입니다.
이번은 모놀리스를 포함한 환경 마다 파일에 기술하므로 확장자를 「.world」로 합니다.
(라고 하는 것도 모노리스 단체를 파일로 해 launch 하는 방법을 아직 모릅니다.)
$ nano test.world
nano는 물론 vim에서도 code에서도 사용할 수있는 편집기로 OK입니다.
test.world<?xml version="1.0"?>
<sdf version="1.6">
<world name="default">
<!--地面を導入する-->
<include>
<uri>model://ground_plane</uri>
</include>
<!--ライティングを導入する-->
<include>
<uri>model://sun</uri>
</include>
<!--ここからモノリスの記述-->
<model name='monolith'>
<!--位置と角度。x,y,z,roll,pitch,yaw 単位はメートルとdegree-->
<pose>0 0 0 0 0 0</pose>
<!--パーツの記述-->
<link name='body'>
<pose>0 0 0 0 0 0</pose>
<inertial>
<!--質量-->
<mass>1</mass>
<!--慣性行列(後述)-->
<inertia>
<ixx>0.016667</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.014167</iyy>
<iyz>0</iyz>
<izz>0.004167</izz>
</inertia>
</inertial>
<!--表示用の記述-->
<visual name='visual'>
<geometry>
<box>
<!--x,y,zのサイズ(メートル)-->
<size>0.1 0.2 0.4</size>
</box>
</geometry>
</visual>
<!--衝突判定の範囲-->
<collision name='collision'>
<geometry>
<box>
<!--x,y,zのサイズ(メートル)-->
<size>0.1 0.2 0.4</size>
</box>
</geometry>
</collision>
</link>
</model>
</world>
</sdf>
위는 Gazebo에 모노리스를 등장시킬 때 아마도 최소한의 빠듯한 필요 요소가 될 것입니다.
깊이 10cm, 폭 20cm, 높이 40cm, 질량 1의 직육면체입니다.
관성 행렬은 계산에서 구해야 합니다.
로봇 기술 언어 의 사이트를 참고로,
ixx = 1/12 x 질량 x (y^2 + z^2)
iyy = 1/12 x 질량 x (x^2 + z^2)
izz = 1/12 x 질량 x (x^2 + y^2)
에서 요청합니다.
Gazebo에서 sdf 표시
Gazebo 시작
$ gazebo test.world
Gazebo가 열리는 동시에 설정된 모노리스가 뷰의 중앙에 나타납니다.
덧붙여서 gazebo의 뷰 화면의 조작은,
$ nano test.world
<?xml version="1.0"?>
<sdf version="1.6">
<world name="default">
<!--地面を導入する-->
<include>
<uri>model://ground_plane</uri>
</include>
<!--ライティングを導入する-->
<include>
<uri>model://sun</uri>
</include>
<!--ここからモノリスの記述-->
<model name='monolith'>
<!--位置と角度。x,y,z,roll,pitch,yaw 単位はメートルとdegree-->
<pose>0 0 0 0 0 0</pose>
<!--パーツの記述-->
<link name='body'>
<pose>0 0 0 0 0 0</pose>
<inertial>
<!--質量-->
<mass>1</mass>
<!--慣性行列(後述)-->
<inertia>
<ixx>0.016667</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.014167</iyy>
<iyz>0</iyz>
<izz>0.004167</izz>
</inertia>
</inertial>
<!--表示用の記述-->
<visual name='visual'>
<geometry>
<box>
<!--x,y,zのサイズ(メートル)-->
<size>0.1 0.2 0.4</size>
</box>
</geometry>
</visual>
<!--衝突判定の範囲-->
<collision name='collision'>
<geometry>
<box>
<!--x,y,zのサイズ(メートル)-->
<size>0.1 0.2 0.4</size>
</box>
</geometry>
</collision>
</link>
</model>
</world>
</sdf>
Gazebo 시작
$ gazebo test.world
Gazebo가 열리는 동시에 설정된 모노리스가 뷰의 중앙에 나타납니다.
덧붙여서 gazebo의 뷰 화면의 조작은,
되어 있습니다.
또한 화면의 메뉴에서 십자 화살표 아이콘을 선택하면 이미지와 같이 빨간색과 녹색 파란색 손잡이가 나오므로 거기를 들고 물체를 이동할 수 있습니다.
중력이 일하고 있기 때문에 파란색 화살표로 위로 들어 올린 다음 놓으면 아래로 떨어집니다.
마찬가지로 회전 아이콘을 선택하면 모노리스를 회전시킬 수 있습니다.
기울여 놓으면 어떻게 되는지는 짐작대로입니다.
계속
이것으로 휴머노이드를 기술하면, 앞은 멀 것 같습니다.
조인트와 링크로 기술해 갈 필요도 있고, 이번에 나오지 않았던 요소도 몇가지 있습니다.
xacro를 사용하여 쓰고 한층 더 변환하거나 배우도 많고, launch 만드는 방법에서도 힘든 일 것 같습니다.
ROS2 환경에서 잘 작동하는 좋은 방법을 찾는 것이 좋다고 생각합니다.
다음 기사:
마지막 기사:
Reference
이 문제에 관하여(ROS2에서 gazebo 용 sdf를 작성하는 첫 단계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Ninagawa_Izumi/items/522bc711b77fd1d0e48d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(ROS2에서 gazebo 용 sdf를 작성하는 첫 단계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ninagawa_Izumi/items/522bc711b77fd1d0e48d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)