- This reopsitory contains Gazebo simulation of Dpoom, based on turtlebot3 simulation
- Covered urdf, ros topic publication, gazebo
- You can visit our indoor SLAM robot in this page, Project Dpoom
Dpoom in real world | Dpoom in Gazebo |
---|---|
- Ubuntu 18.04
- ROS melodic
- Gazebo 9
- linux-headers-generic
- ros-melodic-turtlebot3-*
On your catkin_ws/src,
git clone https://github.com/SeunghyunLim/Dpoom_gazebo.git
and 'cd ~/catkin_ws && catkin_make'
for launching Gazebo,
export TURTLEBOT3_MODEL=dpoom
roslaunch dpoom_gazebo dpoom.launch
for teleop keyboard,
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
for Rviz visualization,
rosrun rviz rviz -d dpoom_rviz.rviz
- Type : PointCloud2
- ROS topic : /camera/depth/points, /camera/depth/image_raw
- You can select the simulation environment; empty, office, turtlebot3_world.
- Basically, dpoom.launch has empty world for Gazebo. (No obstacles, but just the ground.)
If you want to simulate in indoor office environment,
- cpr_office_gazebo On your catkin_ws/src,
git clone https://github.com/clearpathrobotics/cpr_gazebo.git
and move cpr_office_gazebo to catkin_ws/src, then 'cd ~/catkin_ws && catkin_make'
- dpoom_office.launch has indoor office environment, which is from Clearpath Robotics. check
- dpoom_turtle.launch is based on turtlebot3_world env, which is from ROBOTIS. check
- You can tilt the sensor by changing pitch value of the camera_rgb_joint in dpoom.urdf.xacro
<joint name="camera_rgb_joint" type="fixed">
<!--You can tilt the sensor by changing the value of pitch
Ex) <origin xyz="0.003 0.011 0.009" rpy="0 0.3 0"/>-->
<origin xyz="0.003 0.011 0.009" rpy="0 0 0"/>
<parent link="camera_link"/>
<child link="camera_rgb_frame"/>
</joint>
Default | Tilted by 0.3 rad |
---|---|
- You can change the sensor height by changing z origin value of the _camera_joint_in dpoom.urdf.xacro
<joint name="camera_joint" type="fixed">
<!--You can change the hight of the sensor by changing the value of origin z.
Total view-height is sum of this value and "camera_link"'s origin z value, which is 0.013
Also, for visualization, the change in this part should be considered in "camera_rgb_frame".
(Original height is 0.12m, so z should be 0.12 - 0.013 = 0.107)
Ex) <origin xyz="0.073 -0.011 0.107" rpy="0 0 0"/>
-->
<origin xyz="0.073 -0.011 0.107" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="camera_link"/>
</joint>
- For proper mesh visualization of the sensor, the change from above should be considered in camera_rgb_frame of dpoom.urdf.xacro
<link name="camera_rgb_frame">
<!--Original value of visual origin is xyz="0 0 -0.01"
if you changed the sensor height in "camera_joint", z should be deducted by the
height change.
EX) if you change the sensor height to 13cm(0.13m), which means that you changed
"camera_joint" z from 0.107 to 0.117, the visual z origin should be changed
from -0.01 to -0.02
-->
<visual>
<origin xyz="0 0 -0.01" rpy="-1.57 0 -1.57"/>
<geometry>
<mesh filename="package://dpoom_gazebo/meshes/sensors/d435.dae" scale="1 1 1"/>
</geometry>
</visual>
</link>
- Original sensor height should be fixed to 12cm(from bottom to the center of the sensor).
- The cylinder below has 12cm height, so you can check the sensor height is fixed to 12cm.
- Generally, the depth sensor orientation is x-forward & z-top view.
- However, the libgazebo_ros_openni_kinect.so plugin, which is used in dpoom.gazebo.xacro, has different orientation; z-forward & x-top.
- So, if you want to set the sensor orientation to x-forward & z-top, you need to edit gazebo_ros_openni_kinect.cpp in gazebo_ros_pkgs/gazebo_plugins/src.
From
*iter_x = depth * tan(yAngle);
*iter_y = depth * tan(pAngle);
*iter_z = depth;
To
*iter_x = depth;
*iter_y = -depth * tan(yAngle);
*iter_z = -depth * tan(pAngle);