当前位置: 代码迷 >> 综合 >> Kobuki ROS2 Galactic 驱动编译并运行
  详细解决方案

Kobuki ROS2 Galactic 驱动编译并运行

热度:42   发布时间:2023-12-26 18:02:52.0

1. 下载 ecl_lite

在github上下载ecl_lite的foxy版本的包,这个包也可以在galactic下运行。
注意编译的顺序,先把能编译过的编译了,再运行下面的命令,再进行编译。

source .bashrc
. /ecl_lite_ws/install/setup.bash

2. 下载 Kobuki 驱动包

在github上下载kobuki的ROS2的驱动,这个包也可以在galactic下运行。
注意编译的顺序,先把能编译过的编译了,再运行下面的命令,再进行编译。

source .bashrc
. /kobuki_ros2_ws/install/setup.bash

3. 运行 Kobuki 的驱动

在github上下载ftdi并编译,这个包会在你的电脑上发现Kobuki。
编译结束后,应该可以发现/dev/kobuki的文件位置。
此时在开启Kobuki并连接到电脑的情况下,运行ros2 run kobuki_node kobuki_ros_node的命令(不确定,我忘了是不是这个节点名称了),就可以运行Kobuki了。发送个速度指令测试一下吧~

3.1 Kobuki : no device port given on the parameter server (e.g. /dev/ttyUSB0)

kobuki_node/src/kobuki_ros.cpp的文件第213行处添加Kobuki的端口名称:

 parameters.device_port = this->declare_parameter("device_port", "/dev/kobuki");if (parameters.device_port.empty()) {
    throw std::runtime_error("Kobuki : no device port given on the parameter server (e.g. /dev/ttyUSB0).");}

3.2 运行Kobuki一顿一顿的

kobuki_node/src/kobuki_ros.cpp文件325行附近进行修改:

  if (kobuki_.isEnabled() && odometry_->commandTimeout(this->get_clock()->now())) {
    if (!cmd_vel_timed_out_) {
    // kobuki_.setBaseControl(0, 0);cmd_vel_timed_out_ = true;RCLCPP_WARN(get_logger(), "Incoming velocity commands not received for more than %.2f seconds -> zero'ing velocity commands", odometry_->timeout().seconds());}}else {
    cmd_vel_timed_out_ = false;}