ROS 2 for Baxter

Hello,

As a ROS teacher, I am thinking about moving (part of) my course to ROS 2 next year. I believe Noetic + Foxy will be a good entry point for our engineering students.

We use Baxter from Rethink Robotics for the labs, which still works under Indigo (as far as I remember, as I have not accessed the campus for 3 months). It still works flawlessly with Melodic on the remote computer.

Some work has been initiated in order to be able to communicate with Baxter through ros1_bridge, by having ROS 2 versions of the messages and description packages.
Interested people can have a look at the corresponding repository.
ros1_bridge was successfully recompiled using these packages.

People using Baxter know that there are 4 main repos from RR:

  • baxter_common, which includes messages and description, was ported to ROS 2 as stated above
  • baxter_tools and baxter_interface regroup low-level tools, and should still live in the ROS 1 world. We have begun porting them to Python 3 to use it with Noetic.
  • baxter_simulator emulates the robot under Gazebo. There are no plans yet on our side to work on this part as we have a real robot.

As a side note, the message-definition packages were ported to ROS 2 using this small tool, that is still under development.

Any suggestions / help are appreciated if you are interested in using Baxter in the next years while avoiding teaching ROS 1 / Python 2 to new students.

4 Likes

Hi,

After a few iterations (mostly Python 3 compatibility), Baxter communicates with ROS 2 with the mentioned package.

In addition, baxter_tools and baxter_interface have been ported to Python 3.

A new script is available in baxter_tools : rosrun baxter_tools description_publisher.py.
It publishes the robot_description parameter, that is robot-specific and only exists on Baxter’s rosmaster. ros1_bridge can thus forward it to the ROS 2 world.

2 Likes

Hi, is there any way of using gazebo sim with this ROS 2 implementation? if so, are there any tutorials online or any material related to simulation purposes?

Hi,

I started to add Ignition plugins in the description, that should be all what is missing to simulate Baxter.

As we actually do not use it (we have a real robot), it was not tested yet and is probably incomplete.

Note that since the initial pose, ros1_bridge is not used anymore and we use a custom baxter_bridge. It is already set up with Baxter’s topics and messages.
In addition, when several bridges are run on the same network (e.g. students groups doing a lab on Baxter) they synchronize to allow only one of them to actually send commands to the robot. This way, students know they have to wait that the previous group stops (or crash).