Skip to content

Post Finals Features

Nate Koenig edited this page Oct 20, 2021 · 5 revisions

Ignition Fortress is required. Please follow these SubT Simulation install instructions.

It's possible to extend the SubT Simulator with new features. We have added a number of example features to a single new world in order to demonstrate what can simulated. You can run this new example world, which is based on the finals qualification world, using:

ign launch -v 4 cloudsim_sim.ign worldName:=finals_qual_demo

Actors

An actor is an animated model that can follow a trajectory. You can read more about actors here. We have added an example actor to an Urban 2 Story tile, tile_77, in the finals_qual_demo world. The actor walks around a set path in the tile. Image-based sensors, such as cameras and GPU lidars, will see the actor. However, the actor lacks collision elements. This means a robot can pass through the actor.

To test, run the world and move to the lower level of tile_77. You should see a human walking in a circle.

ign launch -v 4 cloudsim_sim.ign worldName:=finals_qual_demo

Mine Cart

A mine cart has been integrated that rolls down a small hill when a robot enters a specific region. The minecart utilizes a detachable joint to keep the mine cart in place until a robot triggers a performer detector. The performer detector emits a message when a robot enters a region. We have structured this message such that it detaches the joint holding the mine cart.

The changes added to implement this feature can be reviewed [here](The complete).

To test the mine cart:

  1. Make sure you are using Ignition Fortress. 2 ign launch -v 4 cloudsim_sim.ign worldName:=finals_qu_demo circuit:=finals levels:=false robotName1:=X1 robotConfig1:=X1_SENSOR_CONFIG_1
  2. Follow the X1 in the GUI.
  3. ign service -s /world/finals_qual_demo/set_pose --reqtype ignition.msgs.Pose --reptype ignition.msgs.Boolean --timeout 300 --req 'name: "X1", position {x:110 y:-40 z:0}'
  4. Watch your robot get hit by the mine cart.

Subway car

A subway car with an associated trigger was add to the finals_qual_demo world. The subway doors will open when a robot approaches the doors, and will close when the robot leaves. This demonstrates complex performer detection configurations, and the ability for the performer detector to control joints. The code to implement the subway car with doors starts here. Importantly, the R160 subway model, has a set of joint position controller plugins, which exposes controll topics used by the performer detectors.

To test the subway car:

  1. Make sure you are using Ignition Fortress.
  2. ign launch -v 4 cloudsim_sim.ign worldName:=finals_qu_demo circuit:=finals levels:=false robotName1:=X1 robotConfig1:=X1_SENSOR_CONFIG_1
  3. Follow the X1 in the GUI.
  4. ign service -s /world/finals_qual_demo/set_pose --reqtype ignition.msgs.Pose --reptype ignition.msgs.Boolean --timeout 300 --req 'name: "X1", position {x:43 y:185 z:12}'
  5. Drive or move your robot into the subway.

Door

The final example is a single hinged door that opens when a robot approaches. This is similar to the Subway car example above, but the door remains open in this case. Again, a joint position controller plugin has been added to the door model.

  1. Make sure you are using Ignition Fortress.
  2. ign launch -v 4 cloudsim_sim.ign worldName:=finals_qu_demo circuit:=finals levels:=false robotName1:=X1 robotConfig1:=X1_SENSOR_CONFIG_1
  3. Follow the X1 in the GUI.
  4. ign service -s /world/finals_qual_demo/set_pose --reqtype ignition.msgs.Pose --reptype ignition.msgs.Boolean --timeout 300 --req 'name: "X1", position {x:55 y:186 z:11.8}'
  5. Drive or move your robot through the door.

Localized wind

Wind effects were used during the SubT competition. The wind used during competition is a global wind that doesn't take into account a tile's orientation. A new plugin, called LocalWindPlugin, allows you to set the wind velocity and noise on a per-tile basis. As a result, a world designer can customize wind properties down to the tile level. Example usage of the local wind plugin can be found here.

To test:

  1. Make sure you are using Ignition Fortress.
  2. ign launch -v 4 cloudsim_sim.ign worldName:=finals_qu_demo circuit:=finals levels:=false robotName1:=X1 robotConfig1:=X1_SENSOR_CONFIG_1
  3. Move the robot to one of the tiles with local wind, such as tile_30. The robot will experience a larger wind force.
Clone this wiki locally