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
描述
turtlebot4_description
包,包含机器人的URDF描述和每个组件的网格文件。
可以使用 robot_state_publisher
节点发布描述。
TB4消息
turtlebot4_msgs
包包含TurtleBot 4上使用的自定义消息:
UserButton: 用户按钮状态.
UserLed: 用户主导的控件.
UserDisplay: 用户显示数据.
Navigation导航
turtlebot4_navigation
软件包包含用于在TurtleBot 4上使用SLAM和导航的启动和配置文件。它还包含TurtleBot 4 Navigator Python节点。
启动文件:
Nav2: 启动 the Nav2 stack.
SLAM: Launches
slam_toolbox
with online mapping.Localization: 在给定的地图上启动本地化。
运行 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
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
Topic Message Type 描述 hmi/display turtlebot4_msgs/msg/UserDisplay 要显示的当前信息(仅TurtleBot 4型号) ip std_msgs/msg/String Wi-Fi接口的IP地址 function_calls std_msgs/msg/String 调用按钮或菜单函数时发布其名称 Subscribers
Topic Message Type 描述 battery_state sensor_msgs/msg/BatteryState Current battery state of the Create® 3 hmi/buttons turtlebot4_msgs/msg/UserButton Button states of the TurtleBot 4 HMI (TurtleBot 4 model only) hmi/display/message std_msgs/msg/String User topic to print custom message to display (TurtleBot 4 model only) hmi/led turtlebot4_msgs/msg/UserLed User topic to control User LED 1 and 2 (TurtleBot 4 model only) interface_buttons irobot_create_msgs/msg/InterfaceButtons Button states of Create® 3 buttons joy sensor_msgs/msg/Joy Bluetooth controller button states wheel_status irobot_create_msgs/msg/WheelStatus Wheel status reported by Create® 3 Service Clients
Service Service Type Description e_stop irobot_create_msgs/srv/EStop Enable or disable motor stop robot_power irobot_create_msgs/srv/RobotPower Power off the robot start_motor std_srvs/srv/Empty Start the RPLIDAR motor stop_motor std_srvs/srv/Empty Stop the RPLIDAR motor Action Clients
Action Action Type Description dock irobot_create_msgs/action/Dock Command the robot to dock into its charging station wall_follow irobot_create_msgs/action/WallFollow Command the robot to wall follow on left or right side using bump and IR sensors undock irobot_create_msgs/action/Undock Command the robot to undock from its charging station
Functions
该节点有一组静态功能,可以与按钮一起使用,也可以通过显示菜单使用。
Function name | Description |
---|---|
Dock | Call the dock action |
Undock | Call the undock action |
Wall Follow Left | Call the wall_follow action with direction FOLLOW_LEFT and a duration of 10 seconds. |
Wall Follow Right | Call the wall_follow action with direction FOLLOW_RIGHT and a duration of 10 seconds. |
Power | Call the robot_power service to power off the robot |
EStop | Call the e_stop action to toggle the EStop state |
Scroll Up | Scroll menu up (TurtleBot 4 model only) |
Scroll Down | Scroll menu down (TurtleBot 4 model only) |
Back | Exit message screen or return to first menu entry (TurtleBot 4 model only) |
Select | Select currently highlighted menu entry (TurtleBot 4 model only) |
Help | Print help statement on the display (TurtleBot 4 model only) |
Configuration
此节点可以使用参数.yaml文件进行配置。默认的机器人参数可以在 here找到。
Parameters
Parameter | Parameter type | 描述 |
---|---|---|
wifi.interface | String | 计算机正在使用的Wi-Fi接口。用于查找计算机的当前IP地址 |
menu.entries | List of Strings | 设置要显示的菜单项 |
buttons | Key Value pairs | 设置Create®3和HMI按钮的功能 |
controller | Key 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
控制。
LED | Colour | Description |
---|---|---|
POWER | Green | 通电后始终亮 |
MOTOR | Green | 启用车轮时为ON,禁用车轮时为OFF |
COMMS | Green | 当与Create®3的通信处于活动状态时开启。否则关闭 |
WIFI | Green | 当可以为指定的Wi-Fi接口找到有效的IP地址时打开 |
BATTERY | Green, Yellow, Red | 颜色将反映电量百分比 |
Battery LED 状态
电量百分比 | Colour |
---|---|
50-100 | 绿色 |
20-50 | 黄色 |
12-20 | 红色 |
0-12 | 红灯闪烁 |
User LEDs
用户指示灯可以通过发布到带有 UserLed消息的 hmi/led主题来设置
LED | Colour | Description |
---|---|---|
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
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
以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
Display
turtlebot4_node
的 Display
类控制TurtleBot 4的HMI显示。物理显示器是128x64 OLED,通过SSD1306驱动器通过I2C进行控制。
显示屏有一个标题行,其中包含configuration中指定的Wi-Fi接口的IP地址,以及在/beatry_state主题上接收到的电池百分比。显示屏上还有5条附加行,默认情况下用于菜单。菜单项在configuration中指定,是一组可用功能。通过用字符串消息发布到/hmi/deisplay/message,可以覆盖这5个菜单行。
Menu Control菜单控件
TurtleBot 4显示屏有一个简单的滚动菜单。菜单有4种控制功能:向上滚动、向下滚动、选择和返回。
向上和向下滚动允许用户浏览菜单条目,并且默认情况下分别映射到用户按钮3和4。
选择功能将调用当前选择的菜单项。这可以触发诸如对接之类的操作、诸如EStop之类的服务,或者显示诸如帮助消息之类的消息。默认情况下,此功能映射到用户按钮1。
返回功能允许用户从消息屏幕返回到菜单。如果菜单已经显示了菜单项,它将返回显示前5个菜单项,并且第一个菜单项将高亮显示。