1.gazebo_msgs/GetModelState||SetModelState
通过此话题可以省去动力学模型(即省去了控制器),直接发布位姿命令到gazebo中加载的模型.
官网
简书
2.gazebo中将所有的模型的重力设置为0
对于一个empty.world
/*写法1*/
<?xml version="1.0" ?>
<sdf version="1.5">
<world name="default">
<!-- A global light source -->
<include>
<uri>model://sun</uri>
</include>
<!-- A ground plane -->
<include>
<uri>model://ground_plane</uri>
</include>
<gravity>0 0 0</gravity>//通过这一行将所有的模型的重力设置为0
</world>
</sdf>
/*写法2*/
<?xml version="1.0" ?>
<sdf version="1.5">
<world name="default">
<gravity>0 0 0</gravity>//通过这一行将所有的模型的重力设置为0
<!-- A global light source -->
<include>
<uri>model://sun</uri>
</include>
<!-- A ground plane -->
<include>
<uri>model://ground_plane</uri>
</include>
</world>
</sdf>
虽然通过在终端输入rosrun gazebo_ros spawn_model -database coke_can -gazebo -model coke_can -y 1
,coke_can的gravity是true.
但是通过<gravity>0 0 0</gravity>
使得:Physics的gravity的x,y,z轴均为0
验证:在终端输入:rostopic pub -r 20 /gazebo/set_model_state gazebo_msgs/ModelState '{model_name: coke_can, pose: { position: { x: 1, y: 0, z: 2 }, orientation: {x: 0, y: 0.491983115673, z: 0, w: 0.870604813099 } }, twist: { linear: { x: 0, y: 0, z: 0 }, angular: { x: 0, y: 0, z: 0} }, reference_frame: world }'
,易拉罐悬停在空中,证明coke_can该模型的gravity已经是0.