2、TurtleBot 4 通用包

TurtleBot 4 通用包

 turtlebot4存储库包含物理和模拟机器人都使用的通用包。

安装通用包

  • Debian package

    单独的软件包可以通过apt安装:

    sudo apt update sudo apt install ros-humble-turtlebot4-description \ ros-humble-turtlebot4-msgs \ ros-humble-turtlebot4-navigation \ ros-humble-turtlebot4-node

    Source installation

    要从源代码手动安装此元包,请克隆git存储库:

    cd ~/turtlebot4_ws/src git clone https://github.com/turtlebot/turtlebot4.git -b humble

    安装依赖项:

    cd ~/turtlebot4_ws rosdep install --from-path src -yi --rosdistro humble

    生成程序包:

    source /opt/ros/humble/setup.bash colcon build --symlink-install

18480543-F810-4920-95C9-59709A9CDCD0.png

描述

 turtlebot4_description包,包含机器人的URDF描述和每个组件的网格文件。

可以使用 robot_state_publisher节点发布描述。


TB4消息

 turtlebot4_msgs包包含TurtleBot 4上使用的自定义消息:


Navigation导航

turtlebot4_navigation软件包包含用于在TurtleBot 4上使用SLAM和导航的启动和配置文件。它还包含TurtleBot 4 Navigator Python节点。

  • 运行 synchronous SLAM:

    ros2 launch turtlebot4_navigation slam.launch.py

    运行 asynchronous SLAM:

    ros2 launch turtlebot4_navigation slam.launch.py sync:=false

    运行 localization with an existing map:

    ros2 launch turtlebot4_navigation localization.launch.py map:=/path/to/map.yaml

    运行 the Nav2 stack:

    ros2 launch turtlebot4_navigation nav2.launch.py

    0793AE8D-FC3E-4E8B-913E-415DB0E104D6.png

TurtleBot 4 Navigator导航器

TurtleBot 4 Navigator是一个Python节点,它为Nav2 Simple Commander添加了TurtleBot4特定的功能。它提供了一组用于导航TurtleBot 4的Python方法。这包括停靠、导航到姿势、跟随路线点等。有关示例,请访问Navigation Tutorials

TurtleBot 4 Node

 turtlebot4_node包包含用于控制机器人HMI和其他逻辑的rclcpp节点 turtlebot4_node的源代码。物理机器人和模拟机器人都使用该节点。

ROS 2 Interfaces

  • Publishers

    TopicMessage Type描述
    hmi/displayturtlebot4_msgs/msg/UserDisplay要显示的当前信息(仅TurtleBot 4型号)
    ipstd_msgs/msg/StringWi-Fi接口的IP地址
    function_callsstd_msgs/msg/String调用按钮或菜单函数时发布其名称

    Subscribers

    TopicMessage Type描述
    battery_statesensor_msgs/msg/BatteryStateCurrent battery state of the Create® 3
    hmi/buttonsturtlebot4_msgs/msg/UserButtonButton states of the TurtleBot 4 HMI (TurtleBot 4 model only)
    hmi/display/messagestd_msgs/msg/StringUser topic to print custom message to display (TurtleBot 4 model only)
    hmi/ledturtlebot4_msgs/msg/UserLedUser topic to control User LED 1 and 2 (TurtleBot 4 model only)
    interface_buttonsirobot_create_msgs/msg/InterfaceButtonsButton states of Create® 3 buttons
    joysensor_msgs/msg/JoyBluetooth controller button states
    wheel_statusirobot_create_msgs/msg/WheelStatusWheel status reported by Create® 3

    Service Clients

    ServiceService TypeDescription
    e_stopirobot_create_msgs/srv/EStopEnable or disable motor stop
    robot_powerirobot_create_msgs/srv/RobotPowerPower off the robot
    start_motorstd_srvs/srv/EmptyStart the RPLIDAR motor
    stop_motorstd_srvs/srv/EmptyStop the RPLIDAR motor

    Action Clients

    ActionAction TypeDescription
    dockirobot_create_msgs/action/DockCommand the robot to dock into its charging station
    wall_followirobot_create_msgs/action/WallFollowCommand the robot to wall follow on left or right side using bump and IR sensors
    undockirobot_create_msgs/action/UndockCommand the robot to undock from its charging station

Functions

该节点有一组静态功能,可以与按钮一起使用,也可以通过显示菜单使用。


Function nameDescription
DockCall the dock action
UndockCall the undock action
Wall Follow LeftCall the wall_follow action with direction FOLLOW_LEFT and a duration of 10 seconds.
Wall Follow RightCall the wall_follow action with direction FOLLOW_RIGHT and a duration of 10 seconds.
PowerCall the robot_power service to power off the robot
EStopCall the e_stop action to toggle the EStop state
Scroll UpScroll menu up (TurtleBot 4 model only)
Scroll DownScroll menu down (TurtleBot 4 model only)
BackExit message screen or return to first menu entry (TurtleBot 4 model only)
SelectSelect currently highlighted menu entry (TurtleBot 4 model only)
HelpPrint help statement on the display (TurtleBot 4 model only)


Configuration

此节点可以使用参数.yaml文件进行配置。默认的机器人参数可以在 here找到。

Parameters


ParameterParameter type描述
wifi.interfaceString计算机正在使用的Wi-Fi接口。用于查找计算机的当前IP地址
menu.entriesList of Strings设置要显示的菜单项
buttonsKey Value pairs设置Create®3和HMI按钮的功能
controllerKey Value pairs设置TurtleBot 4控制器按钮的功能


Buttons

 turtlebot4_node中的 Buttons类为机器人上的所有按钮提供功能。这包括Create®3按钮、HMI按钮和TurtleBot 4控制器按钮。该节点从interface_buttons、hmi/buttons和joy主题接收按钮状态。

每个按钮可以配置为在按下时具有一个功能,或者通过短按或长按具有两个功能。这是通过 configuration完成的。

支持的按钮:

buttons:     create3_1:     create3_power:     create3_2:     hmi_1:     hmi_2:     hmi_3:     hmi_4: controller:     a:     b:     x:     y:     up:     down:     left:     right:     l1:     l2:     l3:     r1:     r2:     r3:     share:     options:     home:

Example案例

比方说,我们希望TurtleBot 4具有以下按钮功能:

  • 短按Create®3按钮1切换EStop。

  • 在TurtleBot 4控制器上按下Home键5秒,关闭机器人电源。

  • 短按HMI按钮1执行左墙跟随,长按3秒执行右墙跟随。

  • 创建一个新的yaml文件:

cd /home/ubuntu/turtlebot4_ws touch example.yaml

使用您擅长的文本编辑器,将以下内容粘贴到 example.yaml:

turtlebot4_node:   ros__parameters:     buttons:         create3_1: ["EStop"]       hmi_1: ["Wall Follow Left", "Wall Follow Right", "3000"]     controller:       home: ["Power", "5000"]

使用您的新配置启动机器人:

ros2 launch turtlebot4_bringup standard.launch.py param_file:=/home/ubuntu/turtlebot4_ws/example.yaml

按钮现在应该按照 example.yaml中的描述进行操作。

LEDs

 turtlebot4_node中的Leds类控制TurtleBot 4上HMI LED的状态。它不用于TurtleBot 4 Lite。

Status LEDs

状态指示灯由 turtlebot4_node控制。


LEDColourDescription
POWERGreen通电后始终亮
MOTORGreen启用车轮时为ON,禁用车轮时为OFF
COMMSGreen当与Create®3的通信处于活动状态时开启。否则关闭
WIFIGreen当可以为指定的Wi-Fi接口找到有效的IP地址时打开
BATTERYGreen, Yellow, Red颜色将反映电量百分比


Battery LED 状态

电量百分比Colour
50-100绿色
20-50黄色
12-20红色
0-12红灯闪烁

User LEDs

用户指示灯可以通过发布到带有 UserLed消息的 hmi/led主题来设置


LEDColourDescription
USER_1绿色User Controlled用户控制
USER_2绿色, 黄色, 红色User Controlled用户控制


Examples

 USER_1设置为纯绿色:

ros2 topic pub /hmi/led turtlebot4_msgs/msg/UserLed "led: 0 color: 1 blink_period: 1000 duty_cycle: 1.0" --once


User 1 Green
User 1: Solid Green


Set USER_1 OFF:

ros2 topic pub /hmi/led turtlebot4_msgs/msg/UserLed "led: 0 color: 0 blink_period: 1000 duty_cycle: 1.0" --once


User 1 Off
User 1: Off


以50%的占空比在1Hz时闪烁 USER_2红色:

ros2 topic pub /hmi/led turtlebot4_msgs/msg/UserLed "led: 1 color: 2 blink_period: 1000 duty_cycle: 0.5" --once


User 2 Red Blink
User 2: Red, 1hz, 50%


Display

turtlebot4_node Display类控制TurtleBot 4的HMI显示。物理显示器是128x64 OLED,通过SSD1306驱动器通过I2C进行控制。

显示屏有一个标题行,其中包含configuration中指定的Wi-Fi接口的IP地址,以及在/beatry_state主题上接收到的电池百分比。显示屏上还有5条附加行,默认情况下用于菜单。菜单项在configuration中指定,是一组可用功能。通过用字符串消息发布到/hmi/deisplay/message,可以覆盖这5个菜单行。

5D44B013-8448-4048-A79E-97EF035583F1.png

TurtleBot 4显示屏有一个简单的滚动菜单。菜单有4种控制功能:向上滚动、向下滚动、选择和返回。

  • 向上和向下滚动允许用户浏览菜单条目,并且默认情况下分别映射到用户按钮3和4。

  • 选择功能将调用当前选择的菜单项。这可以触发诸如对接之类的操作、诸如EStop之类的服务,或者显示诸如帮助消息之类的消息。默认情况下,此功能映射到用户按钮1。

  • 返回功能允许用户从消息屏幕返回到菜单。如果菜单已经显示了菜单项,它将返回显示前5个菜单项,并且第一个菜单项将高亮显示。


TurtleBot 4 Menu Controls
TurtleBot 4 Menu Controls