学习笔记45--仿真时,终端命令往gazebo里面加载/删除模型的指令介绍

环境:ubuntu16.04 ros-kinetic gazebo7.16

来源:仿真时候,可能需要插入或者删除一些模型,手动插入比较麻烦而且目标位置对准不易.

1)插入指令
方式1:

rosrun gazebo_ros spawn_model -database coke_can -gazebo -model coke_can1 -y 1

分析:rosrun gazebo_ros spawn_model这个是基本指令,目的是告诉ros需要加载一个模型;database 表示该模型是位于gazebo官方的模型库里面的;该模型在模型库里面名称叫coke_can;插入的是model,而且,在gazebo里面名称叫coke_can1;该模型在gazebo坐标系位置,y=1m的方向,其他为定义默认为0,所以插入的位置坐标是(0,1).
所以,这里要注意一点,这条指令需要联网的,而且链接到gazebo官方库是没问题的.(有时候联网了,链接那个数据库有可能存在问题)

方式2:

rosrun gazebo_ros spawn_model -file ~/.gazebo/models/box/model.sdf -sdf -model box2 -y 0 -x -1

分析:这个指令基本含义和上面的基本一样,但是不同点在于,启动的模型路径是本地的,这里的路径是~/.gazebo/models/box/model.sdf;然后插入模型在gazebo中的坐标是y=0,x=-1.
这种方式便利在于,不需要联网到官方库,只要告诉该gazebo模型的sdf文件在哪里就ok了.个人是推荐使用方式2.

2)删除指令

rosservice call gazebo/delete_model "model_name: 'box2'"

分析:启动一个删除gazebo模型的指令,这个模型在gazebo加载的世界中,名称是box2.

注意点:
插入模型在gazebo时候的名称可以修改的,而且,名称不能重复,如coke_can是官方的名称,插入时候,我就称其为coke_can1,这样子,可以插入多个coke_can到gazebo世界里面了;
路径一定要写对;指令的空格要注意写对,如删除模型 : 后面是有一个空格的;
还有这些标点符号要写对;
还有一个重点,一定是加载机器人启动的的gazebo世界,使用上述指令,才生效.具体原因还不清楚,可能是缺乏某些依赖没启动,导致指令运行失败.
这里介绍的模型都是指sdf格式的模型,并不是urdf模型.

上述的指令在个人环境中测试是没有问题的;参考时候,可能有ros版本或者其他东西版本原因,需要做一定的修改.

#######################################
好记性不如烂笔头
'–20200824

猜你喜欢

转载自blog.csdn.net/qq_45701501/article/details/108197614