[Unitree A1] Control unitree A1 with ROS using qre_a1 driver V3.3.1

Hi,
I want to control unitree A1 Explorer using ROS. My first step is to achieve control of unitree A1 motors publishing geometry_msgs/twist messages on a /xxx/cmd_vel topic.

In the version of unitree A1 I have, there are following subsystems:

  • Nvidia Jetson Xavier NX development kit (ip: 192.168.123.12) [Ubuntu 18.04 with ROS Melodic installed]
  • A UP-CHT01 miniPC (ip: 192.168.123.161) [Ubuntu 16.04 without ROS installation]
  • A MCU (ip: 192.168.123.10)

My plan is to leave both boards (Nvidia & UP-CHT01) unchanged. To be able to control unitree A1 motors using ROS, only miniPC is needed. I extract an image from the UP-CHT01 miniPC and install it on a x86_64 zotac miniPC. I check the IP configuration (everything was OK, the zotac PC also has the ip 192.168.123.161) and then I try to start the A1_sport_1 executable using the start.sh script, and I was able to start the sport mode on the robot from remote control using L2+B and then L1+Start & 2xStart, as you can see in the screenshot below. When the Zotac miniPC is connected to the robot, the UP-CHT01 must be shut down to avoid ip conflict.

My next step was to upgrade the zotac miniPC to Ubuntu 18.04, install ROS melodic and then test again using the remote control to see if everything was working properly as before the upgrade. I upgraded then tested and everything was fine. I also tested ROS Publisher/Subscriber between zotac miniPC and Nvidia, making configurations to define zotac miniPC as ROS Master and everything works fine.

As next step was to try to communicate from zotac miniPC to MCU using ROS melodic. First I try to ping the MCU using:

$ ping 192.168.123.10

and I receive response from MCU. Then I compile the newer version of qre_a1 driver V3.3.1 (my A1_sport_1 executable is compatible using V1.19), I open a terminal and take sudo rights using

$ sudo su

I source ros and workspace where qre_a1 driver is compiled and I launch the base.launch using:

$ roslaunch a1_base base.launch

After that I have the following rqt graph:

But publishing geometry_msgs/twist commands in /base_node/cmd_vel topic, using rqt_robot_steering app, nothing happens. In the other topics empty messages are published f.e. for odom or imu.

I don’t know if I forget something to start or if I make something wrong. Can you please help me to achieve a first communication with robot MCU in order to be able to drive unitree A1 Explorer using ROS???

Overview compiled software:

  1. LCM 1.4.0
  2. unitree_legged_sdk V3.3.1 (if I understand correctly, this is implemented in qre_a1 driver in a1_base package and not needed anymore)
  3. A1_sport_1 V1.19
  4. qre_a1 V3.3.1

Dear @PSotir,

Alot of clients were facing issues with the v3.3.1, so I would advise the use of the stable and tested v3.2.0 for your A1.

As next step was to try to communicate from zotac miniPC to MCU using ROS melodic. First I try to ping the MCU using:

Please clone and build v3.2.0, it should work directly, instructions are on the README.md. Also please note in unitrees older models i.e. A1 the odom is not published from the drivers.

Thanks a lot Sohail for your very quick reply. I will try using V3.2.0!