@ -0,0 +1,21 @@ | |||||
<launch> | |||||
<arg name="paused" default="true"/> | |||||
<arg name="use_sim_time" default="true"/> | |||||
<arg name="gui" default="true"/> | |||||
<arg name="headless" default="false"/> | |||||
<arg name="debug" default="false"/> | |||||
<arg name="world" default="worlds/empty.world"/> | |||||
<include file="$(find gazebo_ros)/launch/empty_world.launch"> | |||||
<arg name="world_name" value="$(arg world)" /> | |||||
<arg name="debug" value="$(arg debug)" /> | |||||
<arg name="gui" value="$(arg gui)" /> | |||||
<arg name="paused" value="$(arg paused)"/> | |||||
<arg name="use_sim_time" value="$(arg use_sim_time)"/> | |||||
<arg name="headless" value="$(arg headless)"/> | |||||
<arg name="verbose" value="true"/> | |||||
</include> | |||||
</launch> |
@ -0,0 +1,103 @@ | |||||
<launch> | |||||
<arg name="gpu_lidar" default="false"/> | |||||
<arg name="visualize_lidar" default="false"/> | |||||
<arg name="dex_wrist" default="false"/> | |||||
<param name="stretch_gazebo/dex_wrist" type="bool" value="$(arg dex_wrist)"/> | |||||
<arg name="model" value="$(find stretch_gazebo)/urdf/stretch_gazebo_standard_gripper.urdf.xacro" unless="$(arg dex_wrist)"/> | |||||
<arg name="model" value="$(find stretch_gazebo)/urdf/stretch_gazebo_dex_wrist.urdf.xacro" if="$(arg dex_wrist)"/> | |||||
<group ns="robot_1"> | |||||
<param name="robot_description" command="$(find xacro)/xacro $(arg model) gpu_lidar:=$(arg gpu_lidar) visualize_lidar:=$(arg visualize_lidar) robot_num:=1"/> | |||||
<!-- push robot_description to factory and spawn robot in gazebo --> | |||||
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" | |||||
args=" -urdf -model robot1 -param robot_description -J joint_lift 0.2 -J joint_wrist_yaw 3.14" respawn="false" output="screen" /> | |||||
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"> | |||||
<param name="publish_frequency" type="double" value="30.0" /> | |||||
</node> | |||||
<!-- <node name="rviz" pkg="rviz" type="rviz" args="-d $(find stretch_gazebo)/config/sim.rviz" if="$(arg rviz)"/> --> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/joints.yaml" | |||||
ns="stretch_joint_state_controller" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/drive_config.yaml" | |||||
ns="stretch_diff_drive_controller" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/arm.yaml"/> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/head.yaml" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/gripper.yaml" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/dex_wrist.yaml" if="$(arg dex_wrist)"/> | |||||
<node name="stretch_controller_spawner" pkg="controller_manager" type="spawner" | |||||
args="stretch_joint_state_controller stretch_diff_drive_controller stretch_arm_controller stretch_head_controller stretch_gripper_controller" | |||||
unless="$(arg dex_wrist)"/> | |||||
<node name="stretch_controller_spawner" pkg="controller_manager" type="spawner" | |||||
args="stretch_joint_state_controller stretch_diff_drive_controller stretch_arm_controller stretch_head_controller stretch_gripper_controller stretch_dex_wrist_controller" | |||||
if="$(arg dex_wrist)"/> | |||||
<node name="publish_ground_truth_odom" pkg="stretch_gazebo" type="publish_ground_truth_odom.py" output="screen"/> | |||||
</group> | |||||
<group ns="robot_2"> | |||||
<param name="robot_description" command="$(find xacro)/xacro $(arg model) gpu_lidar:=$(arg gpu_lidar) visualize_lidar:=$(arg visualize_lidar) robot_num:=2"/> | |||||
<!-- push robot_description to factory and spawn robot in gazebo --> | |||||
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" | |||||
args=" -urdf -model robot2 -param robot_description -J joint_lift 0.2 -J joint_wrist_yaw 3.14 -x 1.0 -y 0.0" respawn="false" output="screen" /> | |||||
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"> | |||||
<param name="publish_frequency" type="double" value="30.0" /> | |||||
</node> | |||||
<!-- <node name="rviz" pkg="rviz" type="rviz" args="-d $(find stretch_gazebo)/config/sim.rviz" if="$(arg rviz)"/> --> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/joints.yaml" | |||||
ns="stretch_joint_state_controller" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/drive_config.yaml" | |||||
ns="stretch_diff_drive_controller" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/arm.yaml"/> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/head.yaml" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/gripper.yaml" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/dex_wrist.yaml" if="$(arg dex_wrist)"/> | |||||
<node name="stretch_controller_spawner" pkg="controller_manager" type="spawner" | |||||
args="stretch_joint_state_controller stretch_diff_drive_controller stretch_arm_controller stretch_head_controller stretch_gripper_controller" | |||||
unless="$(arg dex_wrist)"/> | |||||
<node name="stretch_controller_spawner" pkg="controller_manager" type="spawner" | |||||
args="stretch_joint_state_controller stretch_diff_drive_controller stretch_arm_controller stretch_head_controller stretch_gripper_controller stretch_dex_wrist_controller" | |||||
if="$(arg dex_wrist)"/> | |||||
<node name="publish_ground_truth_odom" pkg="stretch_gazebo" type="publish_ground_truth_odom2.py" output="screen"/> | |||||
</group> | |||||
</launch> |
@ -0,0 +1,54 @@ | |||||
<launch> | |||||
<arg name="gpu_lidar" default="false"/> | |||||
<arg name="visualize_lidar" default="false"/> | |||||
<arg name="dex_wrist" default="false"/> | |||||
<param name="stretch_gazebo/dex_wrist" type="bool" value="$(arg dex_wrist)"/> | |||||
<arg name="model" value="$(find stretch_gazebo)/urdf/stretch_gazebo_standard_gripper.urdf.xacro" unless="$(arg dex_wrist)"/> | |||||
<arg name="model" value="$(find stretch_gazebo)/urdf/stretch_gazebo_dex_wrist.urdf.xacro" if="$(arg dex_wrist)"/> | |||||
<param name="robot_description" command="$(find xacro)/xacro $(arg model) gpu_lidar:=$(arg gpu_lidar) visualize_lidar:=$(arg visualize_lidar)"/> | |||||
<!-- push robot_description to factory and spawn robot in gazebo --> | |||||
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" | |||||
args=" -urdf -model robot -param robot_description -J joint_lift 0.2 -J joint_wrist_yaw 3.14" respawn="false" output="screen" /> | |||||
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"> | |||||
<param name="publish_frequency" type="double" value="30.0" /> | |||||
</node> | |||||
<!-- <node name="rviz" pkg="rviz" type="rviz" args="-d $(find stretch_gazebo)/config/sim.rviz" if="$(arg rviz)"/> --> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/joints.yaml" | |||||
ns="stretch_joint_state_controller" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/drive_config.yaml" | |||||
ns="stretch_diff_drive_controller" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/arm.yaml"/> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/head.yaml" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/gripper.yaml" /> | |||||
<rosparam command="load" | |||||
file="$(find stretch_gazebo)/config/dex_wrist.yaml" if="$(arg dex_wrist)"/> | |||||
<node name="stretch_controller_spawner" pkg="controller_manager" type="spawner" | |||||
args="stretch_joint_state_controller stretch_diff_drive_controller stretch_arm_controller stretch_head_controller stretch_gripper_controller" | |||||
unless="$(arg dex_wrist)"/> | |||||
<node name="stretch_controller_spawner" pkg="controller_manager" type="spawner" | |||||
args="stretch_joint_state_controller stretch_diff_drive_controller stretch_arm_controller stretch_head_controller stretch_gripper_controller stretch_dex_wrist_controller" | |||||
if="$(arg dex_wrist)"/> | |||||
<node name="publish_ground_truth_odom" pkg="stretch_gazebo" type="publish_ground_truth_odom.py" output="screen"/> | |||||
</launch> |
@ -0,0 +1,43 @@ | |||||
#! /usr/bin/env python3 | |||||
from gazebo_msgs.srv import GetModelState, GetModelStateRequest, GetWorldProperties | |||||
from nav_msgs.msg import Odometry | |||||
from std_msgs.msg import Header | |||||
from std_srvs.srv import Empty | |||||
import rospy | |||||
import time | |||||
rospy.init_node('ground_truth_odometry_publisher') | |||||
odom_pub=rospy.Publisher('ground_truth', Odometry, queue_size=10) | |||||
rospy.wait_for_service('/gazebo/get_model_state') | |||||
get_model_srv = rospy.ServiceProxy('/gazebo/get_model_state', GetModelState) | |||||
get_world_properties = rospy.ServiceProxy('/gazebo/get_world_properties', GetWorldProperties) | |||||
unpause_physics = rospy.ServiceProxy('/gazebo/unpause_physics', Empty) | |||||
odom=Odometry() | |||||
header = Header() | |||||
header.frame_id='/ground_truth' | |||||
model = GetModelStateRequest() | |||||
model.model_name='robot2' | |||||
models = [] | |||||
r = rospy.Rate(20) | |||||
pause_timeout = time.time() + 4.0 | |||||
while time.time() < pause_timeout: | |||||
rospy.logwarn("Waiting %.2f seconds to unpause physics", pause_timeout - time.time()) | |||||
time.sleep(1.0) | |||||
unpause_physics() | |||||
while not rospy.is_shutdown(): | |||||
if model.model_name not in models: | |||||
models = get_world_properties().model_names | |||||
rospy.logwarn("Waiting for %s to spawn to publish ground truth odometry", model.model_name) | |||||
else: | |||||
result = get_model_srv(model) | |||||
odom.pose.pose = result.pose | |||||
odom.twist.twist = result.twist | |||||
header.stamp = rospy.Time.now() | |||||
odom.header = header | |||||
odom_pub.publish(odom) | |||||
r.sleep() |