ROS Japan UG #12 Raspberry Pi Mouseハッカソン

ROS Japan Users Groupの第12回のイベントがRaspberry Pi Mouseハッカソンに正式に決定しました。

https://rosjp.connpass.com/event/59669/

今回は参加人数が限られているため、参加申し込みは抽選としました。 すでに応募人数を超えていますが、抽選はまだまだ先ですので、参加を希望される方は、ぜひ申し込んでください。

Rasbperry Pi MouseのROS 2対応

本日のタイトルの時点でバレていますが、いくつかの理由でRasbperry Pi MouseのROS 2対応を断念しました。

  • ROS 2はARM CPUも対応予定だが、現時点ではCIも走っておらず茨の道である。
  • ROS 1で言うところのros_controlに相当するROS 2のロボットコントローラがまだない。

ROS 1をRaspberry Piで動かしつつ、ROS 2をリモートPCで動かしてros1_bridgeで接続するということで、なんちゃってROS 2対応をさせることもできます。 ですが、クライアント側をROS 2にしたところで、現時点ではRVizrqt_plotがROS 2で動くわけではないため、旨味がほとんどありません。

Turtlebot 2のROS 2対応も、蓋を開けてソースコードを読んでみると、TwistメッセージをSubscribeして動かしているだけなので、凝ったことは全然していませんでした。

https://github.com/ros2/turtlebot2_demo/blob/master/turtlebot2_drivers/src/kobuki_node.cpp

void cmdVelCallback(const geometry_msgs::msg::Twist::SharedPtr msg)
{
  std::lock_guard<std::mutex> kobuki_guard(g_kobuki_mutex);
  double vx = std::min(std::max(msg->linear.x, -g_max_vx), g_max_vx);
  double vyaw = std::min(std::max(msg->angular.z, -g_max_vyaw), g_max_vyaw);
  g_kobuki->setBaseControl(vx, vyaw);
  if (rcutils_system_time_now(&g_last_cmd_vel_time) != RCUTILS_RET_OK) {
    std::cerr << "Failed to get system time" << std::endl;
  }
}

というわけで、Raspberry Pi MouseをROS 2に対応させる、と啖呵を切ったのですが、一旦お預けにさせてください。気持ちが先走り過ぎました…

次回

次回からは現状のROS 2の開発進行状況を確認する意味でも、https://github.com/ros2のレポジトリを一つ一つ見ていこうと思います。