map: added tracking image to groundplane
This commit is contained in:
@@ -31,3 +31,4 @@ install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}/)
|
|||||||
install(DIRECTORY config DESTINATION share/${PROJECT_NAME}/)
|
install(DIRECTORY config DESTINATION share/${PROJECT_NAME}/)
|
||||||
install(DIRECTORY urdf DESTINATION share/${PROJECT_NAME}/)
|
install(DIRECTORY urdf DESTINATION share/${PROJECT_NAME}/)
|
||||||
install(DIRECTORY worlds DESTINATION share/${PROJECT_NAME}/)
|
install(DIRECTORY worlds DESTINATION share/${PROJECT_NAME}/)
|
||||||
|
install(DIRECTORY materials DESTINATION share/${PROJECT_NAME}/)
|
||||||
|
|||||||
123
src/sherpa/launch/asd.launch.py
Normal file
123
src/sherpa/launch/asd.launch.py
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
import os.path
|
||||||
|
|
||||||
|
from ament_index_python.packages import get_package_share_directory
|
||||||
|
|
||||||
|
from launch import LaunchDescription
|
||||||
|
from launch.actions import ExecuteProcess, IncludeLaunchDescription, SetEnvironmentVariable
|
||||||
|
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||||
|
from launch_ros.actions import Node
|
||||||
|
from launch_ros.substitutions import FindPackageShare
|
||||||
|
from ament_index_python.packages import get_package_share_directory
|
||||||
|
from launch.substitutions import Command
|
||||||
|
|
||||||
|
def generate_launch_description():
|
||||||
|
|
||||||
|
ld = LaunchDescription()
|
||||||
|
|
||||||
|
pkg_name = 'sherpa'
|
||||||
|
pkg_share = get_package_share_directory(pkg_name)
|
||||||
|
pkg_prefix = os.path.dirname(pkg_share)
|
||||||
|
|
||||||
|
world_path = os.path.join(pkg_share, 'worlds', 'asd_course.world')
|
||||||
|
xacro_file = os.path.join(pkg_share, 'urdf', 'sherpa.xacro')
|
||||||
|
|
||||||
|
# create nodes
|
||||||
|
|
||||||
|
gz_env = SetEnvironmentVariable(
|
||||||
|
name='GZ_SIM_RESOURCE_PATH',
|
||||||
|
value=[pkg_prefix]
|
||||||
|
)
|
||||||
|
|
||||||
|
gz = ExecuteProcess(
|
||||||
|
cmd=[
|
||||||
|
'ros2', 'launch', 'ros_gz_sim', 'gz_sim.launch.py',
|
||||||
|
f'gz_args:=-r {world_path}'
|
||||||
|
],
|
||||||
|
output='screen'
|
||||||
|
)
|
||||||
|
|
||||||
|
state_publisher = Node(
|
||||||
|
package='robot_state_publisher',
|
||||||
|
executable='robot_state_publisher',
|
||||||
|
name='robot_state_publisher',
|
||||||
|
output='screen',
|
||||||
|
parameters=[{
|
||||||
|
'robot_description': Command(['xacro ', xacro_file])
|
||||||
|
}]
|
||||||
|
)
|
||||||
|
|
||||||
|
controller = Node(
|
||||||
|
package='controller_manager',
|
||||||
|
executable='spawner',
|
||||||
|
arguments=['ackermann_controller'],
|
||||||
|
#output='screen'
|
||||||
|
)
|
||||||
|
|
||||||
|
joint_state_broadcaster = Node(
|
||||||
|
package='controller_manager',
|
||||||
|
executable='spawner',
|
||||||
|
arguments=['joint_state_broadcaster', '--controller-manager', '/controller_manager'],
|
||||||
|
parameters=[{'use_sim_time': True}],
|
||||||
|
#output='screen'
|
||||||
|
)
|
||||||
|
|
||||||
|
static_tf = Node(
|
||||||
|
package='tf2_ros',
|
||||||
|
executable='static_transform_publisher',
|
||||||
|
name='static_tf_base_to_lidar',
|
||||||
|
arguments=[
|
||||||
|
'0', '0', '0',
|
||||||
|
'0', '0', '0',
|
||||||
|
'velodyne',
|
||||||
|
'lidar_link',
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
robot = ExecuteProcess(
|
||||||
|
cmd=[
|
||||||
|
'ros2', 'run', 'ros_gz_sim', 'create',
|
||||||
|
'-name', 'sherpa',
|
||||||
|
'-topic', 'robot_description',
|
||||||
|
'-x', '0', '-y', '0', '-z', '2'
|
||||||
|
],
|
||||||
|
output='screen'
|
||||||
|
)
|
||||||
|
|
||||||
|
twist_stamper = Node(
|
||||||
|
package="twist_stamper",
|
||||||
|
executable="twist_stamper",
|
||||||
|
remappings=[
|
||||||
|
('/cmd_vel_out', '/ackermann_controller/reference'),
|
||||||
|
],
|
||||||
|
output='screen'
|
||||||
|
)
|
||||||
|
|
||||||
|
gz_bridge = Node(
|
||||||
|
package="ros_gz_bridge",
|
||||||
|
executable="parameter_bridge",
|
||||||
|
arguments=[
|
||||||
|
"--ros-args",
|
||||||
|
"-p",
|
||||||
|
f"config_file:={os.path.join(pkg_share, 'config', 'gz_bridge.yaml')}",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
rviz2 = Node(
|
||||||
|
package='rviz2',
|
||||||
|
executable='rviz2',
|
||||||
|
arguments=['-d', f"{os.path.join(get_package_share_directory('sherpa'), 'config', 'sherpa.rviz')}"]
|
||||||
|
)
|
||||||
|
|
||||||
|
ld.add_action(gz_env)
|
||||||
|
ld.add_action(gz)
|
||||||
|
ld.add_action(state_publisher)
|
||||||
|
ld.add_action(static_tf)
|
||||||
|
ld.add_action(robot)
|
||||||
|
ld.add_action(gz_bridge)
|
||||||
|
ld.add_action(joint_state_broadcaster)
|
||||||
|
ld.add_action(controller)
|
||||||
|
ld.add_action(twist_stamper)
|
||||||
|
ld.add_action(rviz2)
|
||||||
|
|
||||||
|
return ld
|
||||||
BIN
src/sherpa/materials/textures/track.png
Executable file
BIN
src/sherpa/materials/textures/track.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 594 KiB |
@@ -31,7 +31,7 @@
|
|||||||
<image>
|
<image>
|
||||||
<width>800</width>
|
<width>800</width>
|
||||||
<height>800</height>
|
<height>800</height>
|
||||||
<format>R8G8B8</format>
|
<format>L8</format>
|
||||||
</image>
|
</image>
|
||||||
<clip>
|
<clip>
|
||||||
<near>0.02</near>
|
<near>0.02</near>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
<xacro:include filename="components/wheel.xacro"/>
|
<xacro:include filename="components/wheel.xacro"/>
|
||||||
<xacro:include filename="components/ouster_lidar.xacro"/>
|
<xacro:include filename="components/ouster_lidar.xacro"/>
|
||||||
|
|
||||||
<xacro:camera name="front_camera" parent="base" xyz="0 0 2" rpy="0 0 0" frequency="30" fov="90" topic="/front_camera"/>
|
<xacro:camera name="front_camera" parent="base" xyz="0 0 0.75" rpy="0 0 0" frequency="30" fov="90" topic="/front_camera"/>
|
||||||
<xacro:imu name="imu" parent="base" xyz="0 0 0.35" rpy="0 0.05 0" frequency="300" topic="/imu"/>
|
<xacro:imu name="imu" parent="base" xyz="0 0 0.35" rpy="0 0.05 0" frequency="300" topic="/imu"/>
|
||||||
<xacro:ouster_lidar name="lidar" parent="base" xyz="0 0 0.35" rpy="0 0.05 0" model="vlp16" frequency="10" topic="/velodyne_points"/>
|
<xacro:ouster_lidar name="lidar" parent="base" xyz="0 0 0.35" rpy="0 0.05 0" model="vlp16" frequency="10" topic="/velodyne_points"/>
|
||||||
|
|
||||||
|
|||||||
170
src/sherpa/worlds/asd_course.world
Normal file
170
src/sherpa/worlds/asd_course.world
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<sdf version="1.7">
|
||||||
|
<world name="default">
|
||||||
|
|
||||||
|
<!-- A simple light -->
|
||||||
|
<light name="sun" type="directional">
|
||||||
|
<pose>0 0 20 0 0 0</pose>
|
||||||
|
<diffuse>0.8 0.8 0.8 1.0</diffuse>
|
||||||
|
<specular>0.8 0.8 0.8 1.0</specular>
|
||||||
|
<attenuation>
|
||||||
|
<range>1000</range>
|
||||||
|
<constant>0.9</constant>
|
||||||
|
<linear>0.05</linear>
|
||||||
|
<quadratic>0.01</quadratic>
|
||||||
|
</attenuation>
|
||||||
|
<cast_shadows>false</cast_shadows>
|
||||||
|
</light>
|
||||||
|
<scene>
|
||||||
|
<grid>false</grid>
|
||||||
|
</scene>
|
||||||
|
<plugin filename="ignition-gazebo-physics-system" name="ignition::gazebo::systems::Physics">
|
||||||
|
</plugin>
|
||||||
|
<plugin filename="ignition-gazebo-sensors-system" name="ignition::gazebo::systems::Sensors">
|
||||||
|
<render_engine>ogre2</render_engine>
|
||||||
|
</plugin>
|
||||||
|
<plugin filename="gz-sim-imu-system" name="gz::sim::systems::Imu">
|
||||||
|
</plugin>
|
||||||
|
<plugin filename="ignition-gazebo-user-commands-system" name="ignition::gazebo::systems::UserCommands">
|
||||||
|
</plugin>
|
||||||
|
<plugin filename="ignition-gazebo-scene-broadcaster-system" name="ignition::gazebo::systems::SceneBroadcaster">
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<gui fullscreen="0">
|
||||||
|
|
||||||
|
<!-- 3D scene -->
|
||||||
|
<plugin filename="GzScene3D" name="3D View">
|
||||||
|
<ignition-gui>
|
||||||
|
<title>3D View</title>
|
||||||
|
<property type="bool" key="showTitleBar">false</property>
|
||||||
|
<property type="string" key="state">docked</property>
|
||||||
|
</ignition-gui>
|
||||||
|
|
||||||
|
<engine>ogre2</engine>
|
||||||
|
<scene>scene</scene>
|
||||||
|
<ambient_light>0.4 0.4 0.4</ambient_light>
|
||||||
|
<background_color>0.5 0.8 0.95</background_color>
|
||||||
|
<!--camera_pose>276.46 -130.36 5.27 0 0.43 -1.24</camera_pose-->
|
||||||
|
<camera_follow>
|
||||||
|
<target>prius_hybrid</target>
|
||||||
|
<p_gain>0.5</p_gain>
|
||||||
|
<offset>0.5 5 2</offset>
|
||||||
|
</camera_follow>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<!-- World control -->
|
||||||
|
<plugin filename="WorldControl" name="World control">
|
||||||
|
<ignition-gui>
|
||||||
|
<title>World control</title>
|
||||||
|
<property type="bool" key="showTitleBar">false</property>
|
||||||
|
<property type="bool" key="resizable">false</property>
|
||||||
|
<property type="double" key="height">72</property>
|
||||||
|
<property type="double" key="width">121</property>
|
||||||
|
<property type="double" key="z">1</property>
|
||||||
|
|
||||||
|
<property type="string" key="state">floating</property>
|
||||||
|
<anchors target="3D View">
|
||||||
|
<line own="left" target="left"/>
|
||||||
|
<line own="bottom" target="bottom"/>
|
||||||
|
</anchors>
|
||||||
|
</ignition-gui>
|
||||||
|
|
||||||
|
<play_pause>true</play_pause>
|
||||||
|
<step>true</step>
|
||||||
|
<start_paused>true</start_paused>
|
||||||
|
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<!-- World statistics -->
|
||||||
|
<plugin filename="WorldStats" name="World stats">
|
||||||
|
<ignition-gui>
|
||||||
|
<title>World stats</title>
|
||||||
|
<property type="bool" key="showTitleBar">false</property>
|
||||||
|
<property type="bool" key="resizable">false</property>
|
||||||
|
<property type="double" key="height">110</property>
|
||||||
|
<property type="double" key="width">290</property>
|
||||||
|
<property type="double" key="z">1</property>
|
||||||
|
|
||||||
|
<property type="string" key="state">floating</property>
|
||||||
|
<anchors target="3D View">
|
||||||
|
<line own="right" target="right"/>
|
||||||
|
<line own="bottom" target="bottom"/>
|
||||||
|
</anchors>
|
||||||
|
</ignition-gui>
|
||||||
|
|
||||||
|
<sim_time>true</sim_time>
|
||||||
|
<real_time>true</real_time>
|
||||||
|
<real_time_factor>true</real_time_factor>
|
||||||
|
<iterations>true</iterations>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin filename="ImageDisplay" name="dis">
|
||||||
|
<ignition-gui>
|
||||||
|
<property key="state" type="string">docked</property>
|
||||||
|
</ignition-gui>
|
||||||
|
<topic>front_camera</topic>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin filename="Teleop" name="Teleop">
|
||||||
|
<ignition-gui>
|
||||||
|
<property type="string" key="state">docked</property>
|
||||||
|
</ignition-gui>
|
||||||
|
<topic>/cmd_vel</topic>
|
||||||
|
</plugin>
|
||||||
|
</gui>
|
||||||
|
|
||||||
|
<model name="carolo_track">
|
||||||
|
<static>true</static>
|
||||||
|
<link name="link">
|
||||||
|
<collision name="collision">
|
||||||
|
<geometry>
|
||||||
|
<plane>
|
||||||
|
<normal>0 0 1</normal>
|
||||||
|
<size>200 200</size>
|
||||||
|
</plane>
|
||||||
|
</geometry>
|
||||||
|
<surface>
|
||||||
|
<friction>
|
||||||
|
<ode>
|
||||||
|
<mu>50</mu>
|
||||||
|
</ode>
|
||||||
|
</friction>
|
||||||
|
</surface>
|
||||||
|
</collision>
|
||||||
|
<visual name="visual">
|
||||||
|
<cast_shadows>false</cast_shadows>
|
||||||
|
<geometry>
|
||||||
|
<plane>
|
||||||
|
<normal>0 0 1</normal>
|
||||||
|
<size>35 35</size>
|
||||||
|
</plane>
|
||||||
|
</geometry>
|
||||||
|
<material>
|
||||||
|
<pbr>
|
||||||
|
<metal>
|
||||||
|
<albedo_map>file://sherpa/materials/textures/track.png</albedo_map>
|
||||||
|
</metal>
|
||||||
|
</pbr>
|
||||||
|
<ambient>1 1 1 1</ambient>
|
||||||
|
<diffuse>1 1 1 1</diffuse>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<pose>0 0 0 0 0 0</pose>
|
||||||
|
<inertial>
|
||||||
|
<pose>0 0 0 0 0 0</pose>
|
||||||
|
<mass>1</mass>
|
||||||
|
<inertia>
|
||||||
|
<ixx>1</ixx>
|
||||||
|
<ixy>0</ixy>
|
||||||
|
<ixz>0</ixz>
|
||||||
|
<iyy>1</iyy>
|
||||||
|
<iyz>0</iyz>
|
||||||
|
<izz>1</izz>
|
||||||
|
</inertia>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<pose>0 0 0 0 0 0</pose>
|
||||||
|
<self_collide>false</self_collide>
|
||||||
|
</model>
|
||||||
|
</world>
|
||||||
|
</sdf>
|
||||||
Reference in New Issue
Block a user