Gazebo使用心得
source link: https://charon-cheung.github.io/2023/05/04/ROS/ROS%E6%9C%BA%E5%99%A8%E4%BA%BA/Gazebo%E4%BD%BF%E7%94%A8%E5%BF%83%E5%BE%97/#xacro
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Gazebo使用心得 | 沉默杀手
Gazebo不好上手,费了一番功夫终于熟悉了,内容太多,只记录注意事项。
Gazebo里用的是 前x 左y 上z的右手坐标系 ,gazebo的栅格范围是20mX20m
启动simple_world.launch
,然后在Gazebo里添加一个圆柱体,保存覆盖simple.world
文件。再次启动时,报错 SpawnModel: Failure - model name sunny already exist. [Spawn service failed. Exiting. 和 [spawn_urdf-6] process has died
按网上说的方法没能解决,也不能重命名model
,修改simple.world
无效。 最后删除了<node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf" args="-urdf -model sunny -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -param robot_description" />
解决问题。
urdf 和 xacro
urdf.xacro
文件里,<link name="base_link">
代表机器人的主体。<geometry> <box size="0.4 0.39 0.5" />
是尺寸。
gazebo插件,可以简单理解为就是连接gazebo和ros的一个桥梁,一边插件通过gazebo的api来控制仿真环境的机器人关节等数据,一边通过关节数据通过运动学模型生成里程计、雷达的scan、image等类似的信息
solidworks生成urdf
solidworks to urdf
安装后,如果在solidworks里找不到,就安装最新版的,不用管版本是否对应。
solidworks只生成的URDF文件,没有xacro文件. URDF文件做一些简单修改可保存为xacro,注意:
joint
的type="fixed"
,应当为continuous
joint
的某些参数值错误,导致车加载差速模型后,运动错误
xacro
xacro里面的模型仍然是urdf模型,有如下变化:
- 创建宏定义
- 提供可编程接口:常量, 变量, 数学计算, 条件语句
启动Gazebo时,机器人模型的tf关系不完整,即使xacro
文件正确。还需要添加joint_state_publisher
和robot_state_publisher
设置雷达时,看情况决定是否需要可视化
<sensor type="ray" name="lds_lfcd_sensor">
<pose>0 0 0 0 0 0</pose>
<visualize>false</visualize>
Gazebo默认的障碍物质量轻,车撞上之后会把障碍物推开。改变density
选项为铁,则不会推动障碍物。
在Gazebo world中用以下方式加载模型时:
<include>
<uri>model://one_building</uri>
</include>
要让Gazebo能够找到uri中的自建model,需要将自己的model路径加入环境变量, export GAZEBO_MODEL_PATH=~/<path>/my_package/models:${GAZEBO_MODEL_PATH}
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK