上次折腾完了发现Stage_ros没有IMU信息。
为了跑Cartographer所以只能用Gazebo。
参考Gazebo官方教材增加物体之后,如果Scale把方块拉成围墙,物体会摇摆,pitch yaw roll都会乱掉。
参考搭建模型 和 仿真 ,Ctrl + B自定义自己的模型。
画好围墙,右击围墙可以设置位置和长宽高信息。
完事之后保存到自定义的位置,得到一个sdf文件和一个config文件。
config文件只是基本的描述信息。
sdf就是各个围墙的信息。
然后回到Gazebo, Ctrl + M 引入刚才设计的模型,保存为maze.world文件。
这个world只包含场景,不包含turtlebot模型(应该也可以直接引入)
这时找到turtlebot_empty.world文件,把maze.world里没有的相关信息(此处为ode)插入到maze.world。
<sdf version='1.6'>
<world name='default'>
<physics type="ode">
<real_time_update_rate>1000.0</real_time_update_rate>
<max_step_size>0.001</max_step_size>
<real_time_factor>1</real_time_factor>
<ode>
<solver>
<type>quick</type>
<iters>150</iters>
<precon_iters>0</precon_iters>
<sor>1.400000</sor>
<use_dynamic_moi_rescaling>1</use_dynamic_moi_rescaling>
</solver>
<constraints>
<cfm>0.00001</cfm>
<erp>0.2</erp>
<contact_max_correcting_vel>2000.000000</contact_max_correcting_vel>
<contact_surface_layer>0.01000</contact_surface_layer>
</constraints>
</ode>
</physics>
............
最后把修改好的world文件丢到catkin/src/turtlebot_simulation/turtlebot_gazebo/world/下。
同时去catkin/src/turtlebot_simulation/turtlebot_gazebo/launch/下复制一份launch file,修改里面的world_name 值为maze.world。
也可以顺便修改robot postion。
另存为turtlebot3_maze.launch。
<launch>
<arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
<arg name="x_pos" default="-9.0"/>
<arg name="y_pos" default="-9.0"/>
<arg name="z_pos" default="0.0"/>
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/maze.world"/> ---here
<arg name="paused" value="false"/>
<arg name="use_sim_time" value="true"/>
<arg name="gui" value="true"/>
<arg name="headless" value="false"/>
<arg name="debug" value="false"/>
</include>
<param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />
<node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf" args="-urdf -model turtlebot3_$(arg model) -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -param robot_description" />
</launch>
最后,catkin_make。
roslaunch turtlebot3_gazebo turtlebot3_maze.launch
就是不知道有没有什么便捷方法提取里面的围墙信息作为groundtruth。
来源:CSDN
作者:NoEdUl
链接:https://blog.csdn.net/u012947309/article/details/104745270