• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

ROS 2 | 启动 -launch-

人工智能 zhangrelay 2206次浏览 0个评论

前序:ROS 2 | 行动-actions-   啥,开了十几个窗口,机器人还没有动起来……   是时候了解一下launch文件啦。   课程目标:使用启动文件运行复杂的ROS 2系统。   ROS 2启动launch   1. 什么是launch?   翻译为启动文件未必准确   到目前为止,在教程中,一直在为运行的每个新节点打开新终端。当创建越来越多的节点同时运行更复杂的系统时,打开终端并重新输入配置详细信息将变得乏味和低效。   启动文件launch可以同时启动和配置许多包含ROS 2节点的可执行文件。   使用命令ros2 launch运行一个启动文件将立即启动整个系统-包括所有节点及其配置。   这里,只讲一个最简单的案例。   2. 编写launch:   使用如下命令: type nul > turtlesim_mimic_launch.py  
ROS 2 | 启动 -launch-   具体代码如下: from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description():    return LaunchDescription([        Node(            package='turtlesim',            node_namespace='turtlesim1',            node_executable='turtlesim_node',            node_name='sim'        ),        Node(           package='turtlesim',           node_namespace='turtlesim2',           node_executable='turtlesim_node',           node_name='sim'        ),        Node(           package='turtlesim',           node_executable='mimic',           node_name='mimic',           remappings=[              ('/input/pose', '/turtlesim1/turtle1/pose'),              ('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'),           ]        )     ])   3. 解释一下吧:   代码是python规范的。   导入模块: from launch import LaunchDescription from launch_ros.actions import Node   启动文件: def generate_launch_description():   return LaunchDescription([   ])   内部LaunchDescription是一个由三个节点组成的系统   启动描述中启动两个turtlesim窗口: Node(    package='turtlesim',    node_namespace='turtlesim1',    node_executable='turtlesim_node',    node_name='sim' ), Node(    package='turtlesim',    node_namespace='turtlesim2',    node_executable='turtlesim_node',    node_name='sim' ),   注意,两个节点之间的唯一区别是它们的node_namespace值。   唯一的名称空间使系统可以启动两个模拟器,而不会出现节点名或主题名冲突的情况。   该系统中的两个海龟都接收同一主题的命令,并在同一主题上发布其姿势。如果没有唯一的名称空间,就无法区分用于一只乌龟或另一只乌龟的消息。   可以试一下重名后问题在哪里???   然后是最后一个节点mimic:   Node(    package='turtlesim',    node_executable='mimic',    node_name='mimic',    remappings=[     ('/input/pose', '/turtlesim1/turtle1/pose'),     ('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'),     ] ) 该节点以重新映射的形式添加了配置详细信息。   4. 运行launch启动节点   ros2 launch turtlesim_mimic_launch.py   如果需要使用标准格式: ros2 launch <package_name> <launch_file_name>   需要编写功能包中配置文件,此处不支持。  
ROS 2 | 启动 -launch-   两个小龟同时运动命令如下: ros2 topic pub -r 1 /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"   看到两只乌龟都走相同的路径。  
ROS 2 | 启动 -launch-   如何实现标准命令格式呢?   需要在CMakeLists.txt加入: install(DIRECTORY launch  DESTINATION share/${PROJECT_NAME})   5. 小结   启动文件简化了具有许多节点和特定配置详细信息的复杂系统的运行。使用Python创建启动文件,然后使用命令ros2 launch运行它们。   该部分与ROS1差异比较大,需多查阅官网和源码。   https://github.com/ros2/launch https://index.ros.org/doc/ros2/Tutorials/Launch-system/


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ROS 2 | 启动 -launch-
喜欢 (0)

您必须 登录 才能发表评论!

加载中……