Adding Texture to model
I am trying to add texture to the ground_plane model. I have modified the model.sdf as follows:
<?xml version='1.0'?>
<sdf version='1.6'>
<model name='ground_plane'>
<static>1</static>
<link name='link'>
<collision name='collision'>
<geometry>
<plane>
<normal>0 0 1</normal>
<size>1000 1000</size>
</plane>
</geometry>
<surface>
<friction>
<ode>
<mu>100</mu>
<mu2>50</mu2>
</ode>
<torsional>
<ode/>
</torsional>
</friction>
<contact>
<ode/>
</contact>
<bounce/>
</surface>
<max_contacts>10</max_contacts>
</collision>
<visual name="visual">
<cast_shadows>false</cast_shadows>
<geometry>
<box>
<size>200 200 .1</size>
</box>
</geometry>
<material>
<script>
<uri>model://ground_plane/materials/scripts</uri>
<uri>model://ground_plane/materials/textures</uri>
<name>test/asphalt</name>
</script>
</material>
</visual>
<self_collide>0</self_collide>
<kinematic>0</kinematic>
<gravity>1</gravity>
</link>
</model>
</sdf>
the ground_plane directory looks like:
.:
materials model.config model.sdf
./materials:
scripts textures
./materials/scripts:
asphalt.material
./materials/textures:
tarmac.png
The asphalt.material files looks like:
material test/asphalt
{
technique
{
pass
{
ambient 0.5 0.5 0.5 1.0
diffuse 0.5 0.5 0.5 1.0
specular 0.2 0.2 0.2 1.0 12.5
texture_unit
{
texture tarmac.png
filtering anistropic
max_anisotropy 16
scale 0.1 0.1
}
}
}
}
I modified the setup.py file as:
from os.path import join
from glob import glob
from setuptools import setup, find_packages
package_name = 'eufs_tracks'
share_directory = join('share', package_name)
# data_files = [
# (share_directory, ['package.xml', 'plugin.xml']),
# ('share/ament_index/resource_index/packages',
# ['resource/' + package_name]),
# (join(share_directory, 'csv'), glob('csv/*')),
# (join(share_directory, 'image'), glob('image/*')),
# (join(share_directory, 'launch'),
# glob('launch/*.launch*') + ['launch/blacklist.txt']),
# (join(share_directory, 'materials'), glob('materials/*')),
# (join(share_directory, 'meshes'), glob('meshes/*')),
# (join(share_directory, 'worlds'), glob('worlds/*')),
# (join(share_directory, 'resource/randgen_model_template'),
# glob('resource/randgen_model_template/model.*')),
# (join(share_directory, 'resource'), [
# 'resource/noiseFiles.txt',
# 'resource/randgen_launch_template',
# 'resource/randgen_world_template',
# 'resource/conversion_tool.ui',
# ])
# ]
# # Add all model sub-directories
# # This is required as setuptools doesn't currently support recursive glob
# for directory in glob("models/*"):
# data_file = (join(share_directory, directory), glob(directory + "/*"))
# data_files.append(data_file)
data_files = [
(share_directory, ['package.xml', 'plugin.xml']),
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
(join(share_directory, 'csv'), glob('csv/*')),
(join(share_directory, 'image'), glob('image/*')),
(join(share_directory, 'launch'),
glob('launch/*.launch*') + ['launch/blacklist.txt']),
(join(share_directory, 'textures'), glob('materials/textures/*.dat')),
(join(share_directory, 'scripts'), glob('materials/scripts/*.dat')),
(join(share_directory, 'meshes'), glob('meshes/*')),
(join(share_directory, 'worlds'), glob('worlds/*')),
(join(share_directory, 'resource/randgen_model_template'),
glob('resource/randgen_model_template/model.*')),
(join(share_directory, 'resource'), [
'resource/noiseFiles.txt',
'resource/randgen_launch_template',
'resource/randgen_world_template',
'resource/conversion_tool.ui',
])
]
# Add all model sub-directories
# This is required as setuptools doesn't currently support recursive glob
#print(glob('models/*'))
for directory in glob("models/*"):
data_file = (join(share_directory, directory), glob(directory + "/*.material"))
data_files.append(data_file)
data_file = (join(share_directory, directory), glob(directory + "/*.png"))
data_files.append(data_file)
data_file = (join(share_directory, directory), glob(directory + "/*.config"))
data_files.append(data_file)
data_file = (join(share_directory, directory), glob(directory + "/*.sdf"))
data_files.append(data_file)
data_file = (join(share_directory, directory), glob(directory + "/*.urdf.xacro"))
data_files.append(data_file)
setup(
name=package_name,
version='2.0.0',
# packages=find_packages(),
packages=['eufs_tracks', 'eufs_tracks.track_generator', 'eufs_tracks.converter_tool', 'eufs_tracks.cli'],
data_files=data_files,
install_requires=['setuptools'],
zip_safe=True,
maintainer='Cameron Matthew',
maintainer_email='cambobmat@icloud.com',
description='Procedurally generates tracks and converts between file formats.',
license='MIT',
tests_require=['pytest'],
scripts=[
'scripts/eufs_tracks_converter',
'scripts/eufs_tracks_generator'
],
entry_points={
'eufscli.command': [
'track = eufs_tracks.cli.main:EUFSTrackGenerator'
],
'eufs_tracks.verb': [
'create = eufs_tracks.cli.create:EUFSTracksCreate',
'convert = eufs_tracks.cli.convert:EUFSTracksConvert'
]
}
)
I even put the same files in eufs_tracks/materials and still there is no difference.
When i manually import the model in a gazebo sim window, it appears fine. But when i launch the simulator, the ground appears white.