Hello Mybotshop team,
I’m trying to get the A1 work with ROS. I’ve successfully installed the unitree_ros, unitree_ros_to_real, and the mbs_unitree* packages on a Jetson AGX board that sits on top of the robot, connected through the ethernet cable. I’m running unitree_legged_sdk 3.2.
On the bot, there are total of three machines I can ssh into:
- 192.168.123.12: the upboard
- 192.168.123.161: “slam board”, the one the d435 is connected to
- 192.168.123.162: extra jetson AGX board, also known as 192.168.178.36 in the local wifi network
I am running ROS on the 3rd board, with the address 192.168.123.162.
So far, I’ve been able to do the following:
- Turn on the robot. It stands up and stays still.
- I don’t touch anything on the joystick controller that came with the robot. I think this means that the robot is in “normal mode”
- I ssh into the AGX board (machine #3) and run the following commands:
sudo su
roslaunch mbs_unitree_ros high_level_mode.launch
- In another terminal, I run the teleop_keyboard node, and can control the movement of the robot.
The issue with the above is that the robot seems to drift quite a bit. I think this has to do with it being in Normal Mode. Therefore I tried to run the steps 3 and 4 after putting the robot into “sport mode”, by pressing L2+B -> L1+start -> start
, like written on the joypad controller.
The problem is, when the robot is in sport mode, controlling the robot via the /cmd_vel
topic through the mbs wrapper doesn’t seem to work.
The full stdout is the following:
started roslaunch server http://192.168.178.36:35179/
SUMMARY
========
PARAMETERS
* /control_level: highlevel
* /firmwork: 3_2
* /robot_name: a1
* /rosdistro: melodic
* /rosversion: 1.14.11
NODES
/
high_level_driver (mbs_unitree_ros/high_level_mode)
node_lcm_server (unitree_legged_real/lcm_server_3_2)
auto-starting new master
process[master]: started with pid [10013]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to 70b25c32-2a77-11ec-9a59-48b02d3dc095
process[rosout-1]: started with pid [10054]
started core service [/rosout]
process[node_lcm_server-2]: started with pid [10061]
UDP Initialized. Port: 8080
LCM Initialized. Subscribe channel: LCM_High_Cmd, Publish channel: LCM_High_State
[Loop Start] named: UDP_Send, period: 2(ms), run at cpu: 3
[Loop Start] named: UDP_Recv, period: 2(ms), run at cpu: 3
[Loop Start] named: LCM_Recv, period: 2(ms), cpu unspecified
[Loop Start] named: control_loop, period: 2(ms), cpu unspecified
process[high_level_driver-3]: started with pid [10068]
Error! LCM Time out.
[node_lcm_server-2] process has died [pid 10061, exit code 255, cmd /home/hooram/a1_ws/devel/lib/unitree_legged_real/l
cm_server_3_2 a1 highlevel __name:=node_lcm_server __log:=/root/.ros/log/70b25c32-2a77-11ec-9a59-48b02d3dc095/node_lcm
_server-2.log].
log file: /root/.ros/log/70b25c32-2a77-11ec-9a59-48b02d3dc095/node_lcm_server-2*.log
^[[A
^C[high_level_driver-3] killing on exit
*** buffer overflow detected ***: /home/hooram/a1_ws/devel/lib/mbs_unitree_ros/high_level_mode terminated
I would appreciate any pointers in solving this issue.
Regards,
Rammi