Instant messaging your robot: Telegram_ros2

Hey everyone,

To learn some ROS2, I ROS2-ported a bridge to the Telegram instant messaging service: https://github.com/LoyVanBeek/telegram_ros2

Features

It allows you to send and receive text messages, images, locations (as NavSatFix).
You can also send Options, which are represented as a Telegram inline keyboard, which is super handy if you want to select a drink for your robot to bring etc :slight_smile:

In case someone should not be friends with your robot, you can block them or if you’re the jealous type, specify a list of accepted chat-ids.

Note that the actual conversation with the robot is not powered by this package, it just provides a bridge to send/receive messages!

Showcase


The ROS1 version of this package (available at https://github.com/tue-robotics/telegram_ros) can be seen in action here at the RoboCup@Home finals last year in Sydney, where it helped us win the competition with a Toyota HSR robot: https://youtu.be/-pKMPLj7CwA?t=274 and in some more detail in https://youtu.be/AiuS5d112o0?t=82
No cool videos with the ROS2 version yet, I’d be very happy to see yours projects made with this.

Learning

ROS2 is new to me (but I’ve been using ROS1 since Electric) so any comments on my code are very welcome!
I’ve learned a bit while making this and found some rough edges in both API and documentation, for which I intend to make some pull-requests.
Besides learning the APIs, I found this quite handy:

  • colcon build --symlink-install allows to not need to build every time you change your code.

Some things I still want to learn and improve:

  • Declaring parameters, especially their type. The node allows to specify which users are accepted and blocked (optionally) so the type there is PARAMETER_INTEGER_ARRAY but ros2 parameter describe ... shows it as type: Not set. Maybe it’s due to it being set to [] by default?
9 Likes