-
Notifications
You must be signed in to change notification settings - Fork 98
Post Finals Features
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
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
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:
- 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
- Follow the X1 in the GUI.
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}'
- Watch your robot get hit by the mine cart.
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:
- Make sure you are using Ignition Fortress.
ign launch -v 4 cloudsim_sim.ign worldName:=finals_qu_demo circuit:=finals levels:=false robotName1:=X1 robotConfig1:=X1_SENSOR_CONFIG_1
- Follow the X1 in the GUI.
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}'
- Drive or move your robot into the subway.
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.
- Make sure you are using Ignition Fortress.
ign launch -v 4 cloudsim_sim.ign worldName:=finals_qu_demo circuit:=finals levels:=false robotName1:=X1 robotConfig1:=X1_SENSOR_CONFIG_1
- Follow the X1 in the GUI.
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}'
- Drive or move your robot through the door.
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:
- Make sure you are using Ignition Fortress.
ign launch -v 4 cloudsim_sim.ign worldName:=finals_qu_demo circuit:=finals levels:=false robotName1:=X1 robotConfig1:=X1_SENSOR_CONFIG_1
- Move the robot to one of the tiles with local wind, such as
tile_30
. The robot will experience a larger wind force.