I’am working with Reachy 2 to control it from ROS2 Humble, I have not achieved a successful result. Below, I explain the steps I have followed to try to control it using the topics published by the controller running in the “core” docker container.
When I access the “core” docker container and run “ros2 topic list” in the terminal, I can see all the topicspublished by the ROS2 reachy node .
I can check the command history to see which command was automatically executed first when the Docker container core was started.
I can try to move the robot joints with “rqt_controller"_gui” node running “ros2 run joint_state_publisher_gui joint_state_publisher_gui”.
If I move its axes in the GUI, the actual robot does not respond.
I would like to know how I can control the robot using topics, services, and actions, as I cannot find any documentation that discusses this.
It should be noted that controlling the robot from the container does work if I use the Python SDK. For example, I observe that the robot moves if I run some of the scripts found in the useful_commands folder.
I would greatly appreciate your help. I look forward to hearing from you.
I would like to control the movement of the robot’s joints and control the base. I don’t know whether I need to use topics, services, or actions. There is not enough information on the Internet about control with ROS2.
So basically our software stack is organized in layers:
at the top level you’ll have the Python SDK which is the typical entry point for someone wanting to control the robot. The SDK is a grpc client that can be installed on any machine and able to communicate with the SDK grpc server running on the robot (or locally on your machine if you are running the fake/simulation mode)
in the SDK grpc server you can find the bridge between grpc and ROS. Two relevant topics for you are /dynamic_joint_commands for the arms and head joints (handled by the bridge I pointed) and/cmd_vel for the mobile base *(*handled in a separate server file). By publishing in these topics you should be able to send ROS commands to the robot
and below the ROS level is the hardware interface interacting with the motors