3、TurtleBot 4 源代码

TurtleBot 4 Robot

此处提供源代码:https://github.com/turtlebot/turtlebot4_robot

源代码获取安装

turtlebot4_robot源包预装在TurtleBot 4树莓派映像上。

Source installation源安装

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

  • 将存储库克隆到您的工作区中:

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

    安装依赖项:

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

    生成程序包:

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

Base源代码包

 turtlebot4_base包包含在物理机器人上运行的 rclcpp节点turtlebot4_base_node的源代码。该节点与Raspberry Pi的GPIO线接口,使其能够读取按钮的状态,以及写入LED和显示器。

 Note

此节点仅用于TurtleBot 4标准版。


Publishers:

TopicMessage TypeDescription
hmi/buttonsturtlebot4_msgs/msg/UserButtonButton states of the TurtleBot 4 HMI

Subscribers:

TopicMessage TypeDescription
hmi/displayturtlebot4_msgs/msg/UserDisplayThe current information that is to be displayed
hmi/led/_[led]std_msgs/msg/Int32Hidden topics indicating the state of each LED

GPIO 接口

TurtleBot 4使用libgpiod与树莓派的GPIO线路接口。gpiochip0设备代表Raspberry Pi的40引脚头,用于读取和写入这些引脚。

I2C 接口

Linux I2C驱动程序用于在Raspberry Pi的I2C总线上读取和写入数据。显示器的SSD1306驱动程序默认连接到 i2c-3设备,但也可以使用其他总线。

SSD1306

SSD1306是用于OLED显示器的驱动器。它通过通信总线(TurtleBot 4的I2C)接收命令,并控制物理显示器的行为。TurtleBot 4使用该STM32 SSD1306 driver驱动程序的修改版本将像素、形状和字符写入显示器。

Configuration配置

 Warning

如果您正在使用标准PCBA或不知道自己在做什么,请不要更改 pin definitions

可以使用ROS参数设置 turtlebot4_base_node引脚定义。默认配置为:

turtlebot4_base_node:   ros__parameters:     # GPIO definition for HMI. Do NOT change if you are using the standard PCBA.     gpio:       user_button_1: 13       user_button_2: 19       user_button_3: 16       user_button_4: 26       led_green_power: 17       led_green_motors: 18       led_green_comms: 27       led_green_wifi: 24       led_green_battery: 22       led_red_battery: 23       led_green_user_1: 25       led_green_user_2: 6       led_red_user_2: 12       display_reset: 2


 Note

每个GPIO设备的值都是GPIO编号。


Bringup

 turtlebot4_bringup包包含运行机器人软件的启动和配置文件。

启动文件:

  • Joy Teleop: 启动节点以启用蓝牙控制器。

  • OAKD: 启动OAK-D节点。

  • RPLIDAR: 启动RPLIDAR节点。

  • Robot: 启动TurtleBot 4个节点。

  • Lite: 为TurtleBot 4 Lite启动所有必要的节点。

  • Standard: 启动TurtleBot 4的所有必要节点。

配置文件:

Robot Upstart机器人启动

机器人使用 robot_upstart包安装bringup启动文件,作为机器人启动时启动的后台服务。启动文件位于turtlebot4_bringup软件包下。

  • 使用TurtleBot 4设置工具管理 robot_upstart:

    turtlebot4-setup

    导航至“ROS设置”,然后导航至“Robot Upstart”。使用各种菜单选项可以启动、停止、卸载或重新安装upstart job

    robot_upstart
    使用TurtleBot 4设置工具管理robot_supstart

    当某些设置发生更改时,设置工具将自动重新安装 robot_upstart作业。


源代码安装/调用诊断

 turtlebot4_diagnostics软件包包含TurtleBot 4诊断更新程序的源代码和启动文件

启动文件:

  • 诊断: 启动turtlebot4诊断更新程序和诊断聚合器节点。

Diagnostics Updater诊断更新程序

diagnostics updater是在机器人上运行的Python3节点。它订阅诊断主题并记录特定于每个主题的统计信息。诊断数据可通过rqt_robot_monitor查看。

  • Diagnostic topics:

    TopicMessage TypeDescription
    battery_statesensor_msgs/msg/BatteryStateBattery voltage and percentage
    color/preview/imagesensor_msgs/msg/ImageOAK-D color camera data
    dockirobot_create_msgs/msg/DockStatusDock status
    hazard_detectionirobot_create_msgs/msg/HazardDetectionVectorCreate® 3 Hazards
    imusensor_msgs/msg/ImuIMU data
    mouseirobot_create_msgs/msg/MouseMouse sensor data
    scansensor_msgs/msg/LaserScanRPLIDAR laser scan data
    wheel_statusirobot_create_msgs/msg/WheelStatusWheels enabled status

查看诊断:

ros2 launch turtlebot4_viz view_diagnostics.launch.py


diagnostics.png
使用rqt_robot_monitor捕获的诊断数据


Tests测试

 turtlebot4_tests包包含turtlebot4系统测试脚本的源代码。这些脚本测试机器人的基本功能,对于故障排除非常有用。

ROS Tests

ROS测试使用ROS主题和操作来测试各种系统功能。测试结果保存到 ~/turtlebot4_test_results/Y_m_d-H_M_S,其中 Y_m_d-H_M_S是测试的日期和时间。在测试期间还会记录一个rosbag,并将其保存到同一位置。

当前支持的测试:

  • Light Ring: 测试Create®3灯环。

  • Create® 3 Button: 测试Create®3按键。

  • User LED: 测试HMI LED(仅TurtleBot 4标准版)

  • User Button: 测试HMI按钮(仅TurtleBot 4标准版

  • Display: 测试HMI显示 (仅TurtleBot 4标准版)

  • Dock: 测试机器人脱离和对接的能力。

运行测试:

ros2 run turtlebot4_tests ros_tests

这将启动一个CLI菜单,在其中可以运行不同的测试。

输入测试的索引,然后点击回车键开始测试。有些测试将自动运行,而另一些则需要用户输入。


ros_tests.png
运行灯环测试