zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

ROS2机器人编程简述humble-第二章-SIMULATED ROBOT SETUP .4

机器人编程 简述 第二章 setup ROS2 Humble Robot
2023-06-13 09:16:57 时间

ROS2机器人编程简述新书推荐-A Concise Introduction to Robot Programming with ROS2

ROS2机器人编程简述humble-第二章-Executors .3.5

书中没有使用几乎所有教程都会采用的turtlesim。

美美的圣诞树画出来-CoCube

如何将数学曲线变为机器人轨迹-花式show爱心代码-turtlesim篇

直接Gazebo仿真案例走起了。

到目前为止,已经看到了基本包,展示了ROS2的基本元素,以及如何创建节点、发布和订阅。ROS2不是通信中间件,而是机器人编程中间件,试图为机器人创建行为。因此,需要一个机器人。机器人相对昂贵。有可能有一个真正的机器人,比如装有激光和RGBD相机的Kobuki,价格约为1000欧元。一个被认为是专业机器人的价格可以达到数万欧元。由于并非所有读者都计划购买机器人来运行ROS2,将在模拟器中使用Tiago机器人。Pal Robotics的Tiago机器人由带距离传感器的差动底座和带手臂的躯干组成,头部装有RGBD摄像头。在我们已经添加到worsespace的软件包中,已经有必要在Gazebo中模拟Tiago机器人(ROS2中的参考模拟器之一)。

仿真0成本!除此之外,算法也基本都可以验证,学习机器人学必备利器。

sim.launch

import os

from ament_index_python.packages import get_package_share_directory

from launch import LaunchDescription
from launch.actions import (DeclareLaunchArgument, GroupAction,
                            IncludeLaunchDescription, SetEnvironmentVariable)
from launch.conditions import IfCondition
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.substitutions import LaunchConfiguration, PythonExpression

def generate_launch_description():
    tiago_gazebo_dir = get_package_share_directory('tiago_gazebo')

    world = LaunchConfiguration('world', default='home')
    declare_world_cmd = DeclareLaunchArgument(
        'world',
        default_value='home',
        description='World name')

    tiago_sim_cmd = IncludeLaunchDescription(
        PythonLaunchDescriptionSource(os.path.join(tiago_gazebo_dir, 'launch', 'tiago_gazebo.launch.py')),
        launch_arguments={
          'world_name': world,
          'arm': 'no-arm'
        }.items())

    declare_use_sim_time_cmd = DeclareLaunchArgument(
        'use_sim_time',
        default_value='True',
        description='Use simulation (Gazebo) clock if true')

    ld = LaunchDescription()

    ld.add_action(tiago_sim_cmd)

    ld.add_action(declare_use_sim_time_cmd)
    ld.add_action(declare_world_cmd)

    return ld

运行仿真:

ros2 launch br2_tiago sim.launch.py

支持环境如下:

$ ros2 launch br2 tiago sim.launch.py world:=factory
$ ros2 launch br2 tiago sim.launch.py world:=featured
$ ros2 launch br2 tiago sim.launch.py world:=pal office
$ ros2 launch br2 tiago sim.launch.py world:=small factory
$ ros2 launch br2 tiago sim.launch.py world:=small office
$ ros2 launch br2 tiago sim.launch.py world:=willow garage

注意:world依据需要进行加载。

复习一下之前章节中学过的所有内容,可以更好的掌握ROS2和Gazebo。

比如:ros2 topic list

 ros2 topic list
/arm_controller/joint_trajectory
/arm_controller/state
/arm_controller/transition_event
/base_imu
/clock
/diagnostics
/distance/sonar_base
/dynamic_joint_states
/floating_base_pose_simulated
/gripper_controller/joint_trajectory
/gripper_controller/state
/gripper_controller/transition_event
/ground_truth_odom
/head_controller/joint_trajectory
/head_controller/state
/head_controller/transition_event
/head_front_camera/depth/image_raw/compressed
/head_front_camera/depth/image_raw/compressedDepth
/head_front_camera/depth/image_raw/theora
/head_front_camera/depth_registered/camera_info
/head_front_camera/depth_registered/image_raw
/head_front_camera/depth_registered/points
/head_front_camera/image_raw/compressed
/head_front_camera/image_raw/compressedDepth
/head_front_camera/image_raw/theora
/head_front_camera/rgb/camera_info
/head_front_camera/rgb/image_raw
/input_joy/cmd_vel
/joint_state_broadcaster/transition_event
/joint_states
/joy
/joy_priority
/joy_vel
/key_vel
/marker
/marker_vel
/mobile_base_controller/cmd_vel_unstamped
/mobile_base_controller/odom
/mobile_base_controller/transition_event
/nav_vel
/parameter_events
/pause_navigation
/performance_metrics
/phone_vel
/robot_description
/rosout
/rviz_joy_vel
/scan_raw
/servoing_cmd_vel
/stop_closing_loop
/tab_vel
/tf
/tf_static

一个机器人通常具备超过20个以上主题。

例如:节点负责传感器。通过机器人的摄像头、imu、激光和声纳发布信息。最复杂的节点是相机节点,即RGBD传感器,因为它分别发布深度和RGB图像。每个图像都关联了一个主题相机信息,其中包含机器人相机的固有值。对于每个传感器,标准消息类型用于提供的信息。

遥控机器人:

ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r cmd_vel:=key_vel

图形化工具:rqt和rviz2

ROS 2-带Rviz2的数据显示 RVIZ是一个ROS图形界面,它允许您可视化大量信息,并使用多种可用主题的插件。RVIZ2只是RVIZ进入ROS2的一个端口。 要创建自己的RVIZ2配置,可以组合以下插件。 全局选项 为了能够可视化ZED摄像机发布的信息,必须正确配置全局选项: 关键参数: 固定帧:指示用作所有其他帧参考的帧的名称。可以选择组合框中的每个可用帧。 帧速率:用于更新三维视图的最大频率。30或60 FPS是好值。可用的计算能力应指导决策。 网格 该插件允许可视化通常与地板平面关联的网格。 关键参数: 参考帧:用作栅格坐标参考的帧(通常:<fixed_frame>) 平面单元格计数:单元格中网格的大小 正常单元格计数:垂直于网格平面的方向上的单元格数(通常为0) 单元尺寸:每个网格单元的尺寸(单位:米) 平面:标识栅格平面的两个轴 机器人模型 该插件允许根据URDF模型的描述可视化机器人模型。 关键参数: 可视化启用:启用/禁用模型的三维可视化 描述来源:可以在文件和主题之间进行选择。在编写本指南时,“主题”选项未按预期工作,因此“文件”是正确的选项 描述文件:包含Robot Description.URDF。 通过展开“链接”,可以看到整个模型树,其中包含所有可用的关节和链接,以及空间中相对于固定框架的相对位置和方向。 时间间隔(TF) 该插件允许可视化组成TF层次结构的所有帧的位置和方向。 关键参数: 显示名称:启用/禁用链接名称的三维可视化 显示轴:启用/禁用框架轴的三维可视化 显示箭头:启用/禁用连接各个框架的箭头的三维可视化 标记比例:用于重新缩放所有TF对象,使其更清晰,更不混乱 更新间隔:以秒为单位的更新时间。在0离开以查看每个更新 使用此插件的关键是启用/禁用可视化单个帧的功能。允许只专注于对当前任务最重要的部分。 视频 通过遵循视频与RVIZ2教程,了解如何配置RVIZ以可视化视频信息。 深度传感 通过遵循RVIZ2深度教程,了解如何配置RVIZ以可视化深度信息。 位置跟踪 通过遵循RVIZ位置教程,了解如何配置RVIZ以可视化位置信息。 3D对象检测 通过遵循RVIZ对象检测教程,了解如何使用custon Stereolabs插件配置RVIZ以可视化对象检测信息。 平面检测 通过遵循RVIZ对象检测教程,了解如何配置RVIZ以可视化平面检测信息。