mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-24 01:31:46 +00:00
Bring back the gazebo plugins (#1063)
The models and meshes are not included. We will need to find an alternate way to reintegrate these and use them. * Add simulation/gz_msgs back, and build with Gradle. * Add back in the frc simulation plugins for gazebo. * Add a new shared library, halsim_gazebo. This library will become the interface between the HAL sim layer and gazebo. * Preserve the first channel number used in created Encoders in the Sim MockData. This allows us to use the DIO channel number to connect with simulated encoders. * Have the HAL Simulator set the reverse direction on creation. This enables a simulator to be aware of the direction. * Add a drive_motor plugin. This is a bit of a 'magic' motor, which allows us to build robot models that drive in a more realistic fashion. It does this by apply forces directly to the chassis, rather than relying on the complex motion dynamics of a driven wheel. This in turn allows the model to reduce wheel friction, reducing scrub, and allowing for a more natural driving experience.
This commit is contained in:
committed by
Peter Johnson
parent
70960b0251
commit
ebd41fe0bb
63
simulation/frc_gazebo_plugins/scripts/frcgazebo
Normal file
63
simulation/frc_gazebo_plugins/scripts/frcgazebo
Normal file
@@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
#---------------------------------------------------------------------------
|
||||
# Copyright (c) 2018 FIRST. All Rights Reserved.
|
||||
# Open Source Software - may be modified and shared by FRC teams. The code
|
||||
# must be accompanied by the FIRST BSD license file in the root directory of
|
||||
# the project.
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Invoke gazebo, giving it the environment variables
|
||||
# it needs to find the FRC plugins and models.
|
||||
#----------------------------------------------------------------------------
|
||||
usage() {
|
||||
echo $1: Invoke Gazebo for FRC
|
||||
echo Usage:
|
||||
echo " $1 name-of-world-file"
|
||||
}
|
||||
|
||||
d=`dirname "$0"`
|
||||
fulldir=`(cd "$d"; pwd)`
|
||||
sharedir=/usr/share/frcgazebo
|
||||
if [ -d "$fulldir/../share" ] ; then
|
||||
sharedir=`(cd "$fulldir/../share/frcgazebo"; pwd)`
|
||||
fi
|
||||
|
||||
# While we wait for the frc gazebo models to have a proper
|
||||
# home, we require the user to make them accessible
|
||||
if [ ! -d "$sharedir" ] ; then
|
||||
cravedir=`(cd "$fulldir/../"; pwd)`
|
||||
echo Error: you must manually place the models and world into $cravedir/share/frcgazebo
|
||||
exit 2
|
||||
fi
|
||||
|
||||
libsdir=/invalid/directory
|
||||
if [ -d "$fulldir/../libs" ] ; then
|
||||
libsdir=`(cd "$fulldir/../libs"; pwd)`
|
||||
fi
|
||||
|
||||
# Use exactly the file they gave us, or find it in ../share/frcgazebo/worlds,
|
||||
# or find it there by adding a .world extension
|
||||
world="$1"
|
||||
if [ ! -f "$world" ] ; then
|
||||
world="$sharedir/worlds/$1"
|
||||
fi
|
||||
if [ ! -f "$world" ] ; then
|
||||
world="$sharedir/worlds/$1.world"
|
||||
fi
|
||||
|
||||
if [ $# -ne 1 -o "x${1:0:1}" = "x-" ] ; then
|
||||
usage `basename $0`
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -f "$world" ] ; then
|
||||
echo Could not find $1 directly or in $sharedir/worlds
|
||||
exit 2
|
||||
fi
|
||||
|
||||
export GAZEBO_MODEL_PATH="$sharedir/models":$GAZEBO_MODEL_PATH
|
||||
for x in `find "$libsdir" -type d -name shared` ; do
|
||||
export GAZEBO_PLUGIN_PATH="$x:$GAZEBO_PLUGIN_PATH"
|
||||
done
|
||||
|
||||
gazebo "$world"
|
||||
Reference in New Issue
Block a user