I have the following launch file written in XML format working fine in ros1 noetic I am not able to launch it in ros2.
<launch>
<arg
name="model" />
<param
name="robot_description"
textfile="$(find mobile_robot)/urdf/mobile_robot.urdf" />
<node
name="joint_state_publisher_gui"
pkg="joint_state_publisher_gui"
type="joint_state_publisher_gui" />
<node
name="robot_state_publisher"
pkg="robot_state_publisher"
type="robot_state_publisher" />
<node
name="rviz"
pkg="rviz"
type="rviz"
args="-d $(find mobile_robot)/urdf.rviz" />
</launch>
CodePudding user response:
You should check out the official documentation for converting launch files. The tl;dr version is that the type tag has been changed to exec, ns to namespace. There is also no global params, and the textfile param type has been removed(both are relevant to your code). And finally, rviz is not a ros2 package; it's now rviz2.
I'd also suggest working on the formatting of your launch files for future posts, this doesn't follow the ros formatting standards and is fairly hard to read.
CodePudding user response:
You can write something like this,
import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
from launch_ros.actions import Node
def generate_launch_description():
use_sim_time = LaunchConfiguration('use_sim_time', default='true')
urdf = os.path.join(
get_package_share_directory('mobile_robot'),
'urdf',
'mobile_robot.urdf')
rviz = os.path.join(
get_package_share_directory('mobile_robot'), 'urdf.rviz')
return LaunchDescription([
IncludeLaunchDescription(
PythonLaunchDescriptionSource(
os.path.join(pkg_gazebo_ros, 'launch', 'gzserver.launch.py')
),
launch_arguments={'world': world}.items(),
),
IncludeLaunchDescription(
PythonLaunchDescriptionSource(
os.path.join(pkg_gazebo_ros, 'launch', 'gzclient.launch.py')
),
),
Node(
package='robot_state_publisher',
executable='robot_state_publisher',
name='robot_state_publisher',
output='screen',
parameters=[{'use_sim_time': use_sim_time}],
arguments=[urdf]),
Node(
package='rviz2',
executable='rviz2',
name='rviz2',
arguments=['-d', rviz],
output='screen'),
])
