Git Product home page Git Product logo

unitree_ros's People

Contributors

affonso-gui avatar agnel-wang avatar bdluo avatar bin-ro avatar cyoahs avatar dbaldwin avatar k-okada avatar matheecs avatar pierrebouffartigue avatar siilats avatar trivaszhang avatar xiaoliangstd avatar zhaiweiwei0 avatar zkbian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unitree_ros's Issues

Node::Advertise(): Error advertising a topic. Did you forget to start the discovery service?

Hi,I am using gazebo9 + ros melodic(it seems that ubuntu18.04 does not support gazebo8 but ros melodic needs ubuntu18.04).
And I launched the world successfully but when I run the following code:
"rosrun unitree_controller unitree_servo"
Nothing happens in gazebo.
And the terminal says Node::Advertise(): Error advertising a topic. Did you forget to start the discovery service?
And I do not know how to fix it?
Any help will be appreciated! Thanks in advance!

Customizing control loop frequency

Hi there,

recently, I was trying to increase the control loop frequency in both gazebo and our Unitree robot A1. I found in the software guide that the maximum real-time communication bandwidth is 1kHz. It suddenly occurred to me that in the gazebo codes and even the real-time control codes there are some "sleep" functions called after publishing the joint commands (for instance, the "usleep(1000)" in function "sendServoCmd()" in "unitree_controller/src/body.cpp" for simulation, and the "loop_rate.sleep()" in "unitree_legged_real/src/exe/position_mode.cpp" for real robot).

I know such "sleep" functions are meant to be used to set the control loop at the desired cycle. However, the time for one cycle is instead increased after using the "sleep" function (for example, I want the control loop to be run at 1kHz. But using sleep function reduces the frequency to less than half of it). So I was wondering:

  1. Why do you still use these functions? To make the command-sending more stable?
  2. If I want to increase the frequency, what should I do? Can I just command out the "usleep" function in gazebo, and also the "sleep" functions in control node + LCM server node for controlling the real robot with ROS?

Thanks in advance!

Best

robot.xacro Undefined substitution argument DEBUG

$ rosrun xacro xacro robot.xacro > robot.urdf
Undefined substitution argument DEBUG
when processing file: robot.xacro

In the robot.xacro file, Default value for DEBUG is not given. Maybe false by default?

<!-- Debug mode will hung up the robot, use "true" or "false" to switch it. -->
   <xacro:if value="$(arg DEBUG)">
       <link name="world"/>
       <joint name="base_static_joint" type="fixed">
           <origin rpy="0 0 0" xyz="0 0 0"/>
           <parent link="world"/>
           <child link="base"/>
       </joint>
   </xacro:if> 

Forward declaration of ‘class gazebo::common::Color’; support for Gazebo versions >9

LCM: 1.4.0
Boost: 1.71
Gazebo: 11
ROS: Noetic
System: amd64
unitree_legged_sdk: v3.4.2

[ 83%] Built target position_lcm
[ 86%] Built target walk_lcm
[ 88%] Built target torque_lcm
[ 91%] Built target velocity_lcm
[ 96%] Built target unitree_controller
[ 96%] Built target unitree_legged_control
[ 98%] Built target unitree_servo
/home/user/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc: In member function ‘virtual void gazebo::UnitreeDrawForcePlugin::Load(gazebo::rendering::VisualPtr, sdf::v9::ElementPtr)’:
/home/user/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc:53:95: error: invalid use of incomplete type ‘class gazebo::common::Color’
   53 |             this->line->AddPoint(ignition::math::Vector3d(0, 0, 0), common::Color(0, 1, 0, 1.0));
      |                                                                                               ^
In file included from /usr/include/gazebo-11/gazebo/common/Console.hh:30,
                 from /usr/include/gazebo-11/gazebo/common/Events.hh:23,
                 from /home/user/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc:7:
/usr/include/gazebo-11/gazebo/common/CommonTypes.hh:76:11: note: forward declaration of ‘class gazebo::common::Color’
   76 |     class Color;
      |           ^~~~~
/home/user/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc:54:95: error: invalid use of incomplete type ‘class gazebo::common::Color’
   54 |             this->line->AddPoint(ignition::math::Vector3d(1, 1, 1), common::Color(0, 1, 0, 1.0));
      |                                                                                               ^
In file included from /usr/include/gazebo-11/gazebo/common/Console.hh:30,
                 from /usr/include/gazebo-11/gazebo/common/Events.hh:23,
                 from /home/user/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc:7:
/usr/include/gazebo-11/gazebo/common/CommonTypes.hh:76:11: note: forward declaration of ‘class gazebo::common::Color’
   76 |     class Color;
      |           ^~~~~
make[2]: *** [unitree_ros/unitree_gazebo/CMakeFiles/unitreeDrawForcePlugin.dir/build.make:76: unitree_ros/unitree_gazebo/CMakeFiles/unitreeDrawForcePlugin.dir/plugin/draw_force_plugin.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:3586: unitree_ros/unitree_gazebo/CMakeFiles/unitreeDrawForcePlugin.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
Invoking "make -j8 -l8" failed

Since after Gazebo 9, they removed Color.cc and Color.hh in gazebo/commons, change following lines to use <ignition/math/Color.hh> to build successfully:

this->line->AddPoint(ignition::math::Vector3d(0, 0, 0), common::Color(0, 1, 0, 1.0));
this->line->AddPoint(ignition::math::Vector3d(1, 1, 1), common::Color(0, 1, 0, 1.0));

            this->line->AddPoint(ignition::math::Vector3d(0, 0, 0), ignition::math::Color(0, 1, 0, 1.0));
            this->line->AddPoint(ignition::math::Vector3d(1, 1, 1), ignition::math::Color(0, 1, 0, 1.0));

Problem with buid

I've got the catkin folder setup and all dependencies installed but I keep getting this same set of errors: (maybe a tutorial to set everything up could be helpful)

Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_BmsCmd
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_BmsCmd
Scanning dependencies of target sensor_msgs_generate_messages_nodejs
[ 0%] Built target sensor_msgs_generate_messages_nodejs
Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_BmsState
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_BmsState
Scanning dependencies of target geometry_msgs_generate_messages_nodejs
[ 0%] Built target geometry_msgs_generate_messages_nodejs
Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_MotorState
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_MotorState
Scanning dependencies of target std_msgs_generate_messages_nodejs
[ 0%] Built target std_msgs_generate_messages_nodejs
Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_LowState
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_LowState
Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_LowCmd
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_LowCmd
Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_HighState
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_HighState
Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_Cartesian
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_Cartesian
Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_MotorCmd
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_MotorCmd
Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_IMU
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_IMU
Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_HighCmd
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_HighCmd
Scanning dependencies of target _unitree_legged_msgs_generate_messages_check_deps_LED
[ 0%] Built target unitree_legged_msgs_generate_messages_check_deps_LED
Scanning dependencies of target unitree_legged_msgs_generate_messages_nodejs
[ 1%] Generating Javascript code from unitree_legged_msgs/LowState.msg
[ 2%] Generating Javascript code from unitree_legged_msgs/LowCmd.msg
[ 4%] Generating Javascript code from unitree_legged_msgs/HighState.msg
[ 5%] Generating Javascript code from unitree_legged_msgs/BmsCmd.msg
[ 7%] Generating Javascript code from unitree_legged_msgs/MotorCmd.msg
[ 8%] Generating Javascript code from unitree_legged_msgs/IMU.msg
[ 10%] Generating Javascript code from unitree_legged_msgs/Cartesian.msg
[ 11%] Generating Javascript code from unitree_legged_msgs/HighCmd.msg
[ 13%] Generating Javascript code from unitree_legged_msgs/LED.msg
[ 14%] Generating Javascript code from unitree_legged_msgs/BmsState.msg
[ 16%] Generating Javascript code from unitree_legged_msgs/MotorState.msg
[ 16%] Built target unitree_legged_msgs_generate_messages_nodejs
Scanning dependencies of target geometry_msgs_generate_messages_eus
[ 16%] Built target geometry_msgs_generate_messages_eus
Scanning dependencies of target sensor_msgs_generate_messages_eus
[ 16%] Built target sensor_msgs_generate_messages_eus
Scanning dependencies of target std_msgs_generate_messages_eus
[ 16%] Built target std_msgs_generate_messages_eus
Scanning dependencies of target unitree_legged_msgs_generate_messages_eus
[ 17%] Generating EusLisp code from unitree_legged_msgs/LowState.msg
[ 19%] Generating EusLisp code from unitree_legged_msgs/LowCmd.msg
[ 20%] Generating EusLisp code from unitree_legged_msgs/HighState.msg
[ 22%] Generating EusLisp code from unitree_legged_msgs/BmsCmd.msg
[ 23%] Generating EusLisp code from unitree_legged_msgs/MotorCmd.msg
[ 25%] Generating EusLisp code from unitree_legged_msgs/IMU.msg
[ 26%] Generating EusLisp code from unitree_legged_msgs/Cartesian.msg
[ 28%] Generating EusLisp code from unitree_legged_msgs/HighCmd.msg
[ 29%] Generating EusLisp code from unitree_legged_msgs/LED.msg
[ 31%] Generating EusLisp code from unitree_legged_msgs/BmsState.msg
[ 32%] Generating EusLisp code from unitree_legged_msgs/MotorState.msg
[ 34%] Generating EusLisp manifest code for unitree_legged_msgs
[ 34%] Built target unitree_legged_msgs_generate_messages_eus
Scanning dependencies of target geometry_msgs_generate_messages_py
[ 34%] Built target geometry_msgs_generate_messages_py
Scanning dependencies of target std_msgs_generate_messages_py
[ 34%] Built target std_msgs_generate_messages_py
Scanning dependencies of target sensor_msgs_generate_messages_py
[ 34%] Built target sensor_msgs_generate_messages_py
Scanning dependencies of target unitree_legged_msgs_generate_messages_py
[ 35%] Generating Python from MSG unitree_legged_msgs/LowState
[ 37%] Generating Python from MSG unitree_legged_msgs/LowCmd
[ 38%] Generating Python from MSG unitree_legged_msgs/HighState
[ 40%] Generating Python from MSG unitree_legged_msgs/BmsCmd
[ 41%] Generating Python from MSG unitree_legged_msgs/MotorCmd
[ 43%] Generating Python from MSG unitree_legged_msgs/IMU
[ 44%] Generating Python from MSG unitree_legged_msgs/Cartesian
[ 46%] Generating Python from MSG unitree_legged_msgs/HighCmd
[ 47%] Generating Python from MSG unitree_legged_msgs/LED
[ 49%] Generating Python from MSG unitree_legged_msgs/BmsState
[ 50%] Generating Python from MSG unitree_legged_msgs/MotorState
[ 52%] Generating Python msg init.py for unitree_legged_msgs
[ 52%] Built target unitree_legged_msgs_generate_messages_py
Scanning dependencies of target sensor_msgs_generate_messages_cpp
[ 52%] Built target sensor_msgs_generate_messages_cpp
Scanning dependencies of target geometry_msgs_generate_messages_cpp
[ 52%] Built target geometry_msgs_generate_messages_cpp
Scanning dependencies of target std_msgs_generate_messages_cpp
[ 52%] Built target std_msgs_generate_messages_cpp
Scanning dependencies of target unitree_legged_msgs_generate_messages_cpp
[ 53%] Generating C++ code from unitree_legged_msgs/LowState.msg
[ 55%] Generating C++ code from unitree_legged_msgs/LowCmd.msg
[ 56%] Generating C++ code from unitree_legged_msgs/HighState.msg
[ 58%] Generating C++ code from unitree_legged_msgs/BmsCmd.msg
[ 59%] Generating C++ code from unitree_legged_msgs/MotorCmd.msg
[ 61%] Generating C++ code from unitree_legged_msgs/IMU.msg
[ 62%] Generating C++ code from unitree_legged_msgs/Cartesian.msg
[ 64%] Generating C++ code from unitree_legged_msgs/HighCmd.msg
[ 65%] Generating C++ code from unitree_legged_msgs/LED.msg
[ 67%] Generating C++ code from unitree_legged_msgs/BmsState.msg
[ 68%] Generating C++ code from unitree_legged_msgs/MotorState.msg
[ 68%] Built target unitree_legged_msgs_generate_messages_cpp
Scanning dependencies of target sensor_msgs_generate_messages_lisp
[ 68%] Built target sensor_msgs_generate_messages_lisp
Scanning dependencies of target std_msgs_generate_messages_lisp
[ 68%] Built target std_msgs_generate_messages_lisp
Scanning dependencies of target geometry_msgs_generate_messages_lisp
[ 68%] Built target geometry_msgs_generate_messages_lisp
Scanning dependencies of target unitree_legged_msgs_generate_messages_lisp
[ 70%] Generating Lisp code from unitree_legged_msgs/LowState.msg
[ 71%] Generating Lisp code from unitree_legged_msgs/LowCmd.msg
[ 73%] Generating Lisp code from unitree_legged_msgs/HighState.msg
[ 74%] Generating Lisp code from unitree_legged_msgs/BmsCmd.msg
[ 76%] Generating Lisp code from unitree_legged_msgs/MotorCmd.msg
[ 77%] Generating Lisp code from unitree_legged_msgs/IMU.msg
[ 79%] Generating Lisp code from unitree_legged_msgs/Cartesian.msg
[ 80%] Generating Lisp code from unitree_legged_msgs/HighCmd.msg
[ 82%] Generating Lisp code from unitree_legged_msgs/LED.msg
[ 83%] Generating Lisp code from unitree_legged_msgs/BmsState.msg
[ 85%] Generating Lisp code from unitree_legged_msgs/MotorState.msg
[ 85%] Built target unitree_legged_msgs_generate_messages_lisp
Scanning dependencies of target unitree_legged_msgs_generate_messages
[ 85%] Built target unitree_legged_msgs_generate_messages
Scanning dependencies of target roscpp_generate_messages_nodejs
[ 85%] Built target roscpp_generate_messages_nodejs
Scanning dependencies of target roscpp_generate_messages_py
[ 85%] Built target roscpp_generate_messages_py
Scanning dependencies of target roscpp_generate_messages_eus
[ 85%] Built target roscpp_generate_messages_eus
Scanning dependencies of target roscpp_generate_messages_lisp
[ 85%] Built target roscpp_generate_messages_lisp
Scanning dependencies of target rosgraph_msgs_generate_messages_cpp
[ 85%] Built target rosgraph_msgs_generate_messages_cpp
Scanning dependencies of target rosgraph_msgs_generate_messages_eus
[ 85%] Built target rosgraph_msgs_generate_messages_eus
Scanning dependencies of target roscpp_generate_messages_cpp
[ 85%] Built target roscpp_generate_messages_cpp
Scanning dependencies of target rosgraph_msgs_generate_messages_lisp
[ 85%] Built target rosgraph_msgs_generate_messages_lisp
Scanning dependencies of target rosgraph_msgs_generate_messages_nodejs
[ 85%] Built target rosgraph_msgs_generate_messages_nodejs
Scanning dependencies of target rosgraph_msgs_generate_messages_py
[ 85%] Built target rosgraph_msgs_generate_messages_py
Scanning dependencies of target position_lcm
[ 86%] Building CXX object unitree_legged_real/CMakeFiles/position_lcm.dir/src/exe/position_mode.cpp.o
In file included from /home/jonathan/catkin_ws/src/unitree_legged_real/src/exe/position_mode.cpp:13:0:
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h: In function ‘unitree_legged_msgs::LowState ToRos(UNITREE_LEGGED_SDK::LowState&)’:
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:108:27: error: ‘struct UNITREE_LEGGED_SDK::LowState’ has no member named ‘commVersion’; did you mean ‘version’?
ros.commVersion = lcm.commVersion;
^~~~~~~~~~~
version
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:109:23: error: ‘struct UNITREE_LEGGED_SDK::LowState’ has no member named ‘robotID’
ros.robotID = lcm.robotID;
^~~~~~~
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:110:18: error: cannot convert ‘std::array<unsigned int, 2>’ to ‘unitree_legged_msgs::LowState
<std::allocator >::SN_type {aka unsigned int}’ in assignment
ros.SN = lcm.SN;
^~
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h: In function ‘UNITREE_LEGGED_SDK::LowCmd ToLcm(unitree_legged_msgs::LowCmd&, UNITREE_LEGGED_SDK::LowCmd)’:
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:134:9: error: ‘struct UNITREE_LEGGED_SDK::LowCmd’ has no member named ‘commVersion’; did you mean ‘version’?
lcm.commVersion = ros.commVersion;
^~~~~~~~~~~
version
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:135:9: error: ‘struct UNITREE_LEGGED_SDK::LowCmd’ has no member named ‘robotID’
lcm.robotID = ros.robotID;
^~~~~~~
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:136:18: error: no match for ‘operator=’ (operand types are ‘std::array<unsigned int, 2>’ and ‘unitree_legged_msgs::LowCmd
<std::allocator >::SN_type {aka unsigned int}’)
lcm.SN = ros.SN;
^~
In file included from /usr/include/c++/7/tuple:39:0,
from /usr/include/c++/7/bits/unique_ptr.h:37,
from /usr/include/c++/7/bits/locale_conv.h:41,
from /usr/include/c++/7/locale:43,
from /usr/include/c++/7/iomanip:43,
from /usr/include/boost/math/policies/error_handling.hpp:12,
from /usr/include/boost/math/special_functions/round.hpp:14,
from /opt/ros/melodic/include/ros/time.h:58,
from /opt/ros/melodic/include/ros/ros.h:38,
from /home/jonathan/catkin_ws/src/unitree_legged_real/src/exe/position_mode.cpp:6:
/usr/include/c++/7/array:94:12: note: candidate: std::array<unsigned int, 2>& std::array<unsigned int, 2>::operator=(const std::array<unsigned int, 2>&)
struct array
^~~~~
/usr/include/c++/7/array:94:12: note: no known conversion for argument 1 from ‘unitree_legged_msgs::LowCmd
<std::allocator >::SN_type {aka unsigned int}’ to ‘const std::array<unsigned int, 2>&’
/usr/include/c++/7/array:94:12: note: candidate: std::array<unsigned int, 2>& std::array<unsigned int, 2>::operator=(std::array<unsigned int, 2>&&)
/usr/include/c++/7/array:94:12: note: no known conversion for argument 1 from ‘unitree_legged_msgs::LowCmd
<std::allocator >::SN_type {aka unsigned int}’ to ‘std::array<unsigned int, 2>&&’
In file included from /home/jonathan/catkin_ws/src/unitree_legged_real/src/exe/position_mode.cpp:13:0:
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h: In function ‘unitree_legged_msgs::HighState ToRos(UNITREE_LEGGED_SDK::HighState&)’:
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:154:27: error: ‘struct UNITREE_LEGGED_SDK::HighState’ has no member named ‘commVersion’; did you mean ‘version’?
ros.commVersion = lcm.commVersion;
^~~~~~~~~~~
version
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:155:23: error: ‘struct UNITREE_LEGGED_SDK::HighState’ has no member named ‘robotID’
ros.robotID = lcm.robotID;
^~~~~~~
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:156:18: error: cannot convert ‘std::array<unsigned int, 2>’ to ‘unitree_legged_msgs::HighState
<std::allocator >::SN_type {aka unsigned int}’ in assignment
ros.SN = lcm.SN;
^~
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h: In function ‘UNITREE_LEGGED_SDK::HighCmd ToLcm(unitree_legged_msgs::HighCmd&, UNITREE_LEGGED_SDK::HighCmd)’:
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:196:9: error: ‘struct UNITREE_LEGGED_SDK::HighCmd’ has no member named ‘commVersion’; did you mean ‘version’?
lcm.commVersion = ros.commVersion;
^~~~~~~~~~~
version
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:197:9: error: ‘struct UNITREE_LEGGED_SDK::HighCmd’ has no member named ‘robotID’
lcm.robotID = ros.robotID;
^~~~~~~
/home/jonathan/catkin_ws/src/unitree_legged_real/include/convert.h:198:18: error: no match for ‘operator=’ (operand types are ‘std::array<unsigned int, 2>’ and ‘unitree_legged_msgs::HighCmd
<std::allocator >::SN_type {aka unsigned int}’)
lcm.SN = ros.SN;
^~
In file included from /usr/include/c++/7/tuple:39:0,
from /usr/include/c++/7/bits/unique_ptr.h:37,
from /usr/include/c++/7/bits/locale_conv.h:41,
from /usr/include/c++/7/locale:43,
from /usr/include/c++/7/iomanip:43,
from /usr/include/boost/math/policies/error_handling.hpp:12,
from /usr/include/boost/math/special_functions/round.hpp:14,
from /opt/ros/melodic/include/ros/time.h:58,
from /opt/ros/melodic/include/ros/ros.h:38,
from /home/jonathan/catkin_ws/src/unitree_legged_real/src/exe/position_mode.cpp:6:
/usr/include/c++/7/array:94:12: note: candidate: std::array<unsigned int, 2>& std::array<unsigned int, 2>::operator=(const std::array<unsigned int, 2>&)
struct array
^~~~~
/usr/include/c++/7/array:94:12: note: no known conversion for argument 1 from ‘unitree_legged_msgs::HighCmd
<std::allocator >::SN_type {aka unsigned int}’ to ‘const std::array<unsigned int, 2>&’
/usr/include/c++/7/array:94:12: note: candidate: std::array<unsigned int, 2>& std::array<unsigned int, 2>::operator=(std::array<unsigned int, 2>&&)
/usr/include/c++/7/array:94:12: note: no known conversion for argument 1 from ‘unitree_legged_msgs::HighCmd
<std::allocator >::_SN_type {aka unsigned int}’ to ‘std::array<unsigned int, 2>&&’
unitree_legged_real/CMakeFiles/position_lcm.dir/build.make:62: recipe for target 'unitree_legged_real/CMakeFiles/position_lcm.dir/src/exe/position_mode.cpp.o' failed
make[2]: *** [unitree_legged_real/CMakeFiles/position_lcm.dir/src/exe/position_mode.cpp.o] Error 1
CMakeFiles/Makefile2:1886: recipe for target 'unitree_legged_real/CMakeFiles/position_lcm.dir/all' failed
make[1]: *** [unitree_legged_real/CMakeFiles/position_lcm.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

Build Error

Hello. I have A1 and I am trying to set up the environment.

Currently, my catkin_ws is named a1_ws and I have src, devel and build folder within it.
Within the src folder, I have included unitree_ros folder and unitree_legged_sdk.

When I try to run catkin_make, I get the following error about unitree_legged_sdk.h
`dlee640@dlee640-ThinkPad-T580:~/a1_ws$ catkin_make -DCATKIN_WHITELIST_PACKAGES=""
Base path: /home/dlee640/a1_ws
Source space: /home/dlee640/a1_ws/src
Build space: /home/dlee640/a1_ws/build
Devel space: /home/dlee640/a1_ws/devel
Install space: /home/dlee640/a1_ws/install

Running command: "make cmake_check_build_system" in "/home/dlee640/a1_ws/build"

Running command: "make -j8 -l8" in "/home/dlee640/a1_ws/build"

[ 0%] Built target std_msgs_generate_messages_lisp
[ 0%] Built target geometry_msgs_generate_messages_lisp
[ 0%] Built target sensor_msgs_generate_messages_lisp
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_IMU
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_HighCmd
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_MotorState
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_LowState
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_LED
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_HighState
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_MotorCmd
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_LowCmd
[ 0%] Built target std_msgs_generate_messages_py
[ 0%] Built target sensor_msgs_generate_messages_py
[ 0%] Built target geometry_msgs_generate_messages_py
[ 0%] Built target std_msgs_generate_messages_cpp
[ 0%] Built target sensor_msgs_generate_messages_cpp
[ 0%] Built target _unitree_legged_msgs_generate_messages_check_deps_Cartesian
[ 0%] Built target std_msgs_generate_messages_eus
[ 0%] Built target geometry_msgs_generate_messages_cpp
[ 0%] Built target geometry_msgs_generate_messages_eus
[ 0%] Built target sensor_msgs_generate_messages_eus
[ 0%] Built target std_msgs_generate_messages_nodejs
[ 0%] Built target geometry_msgs_generate_messages_nodejs
[ 0%] Built target tf2_msgs_generate_messages_nodejs
[ 0%] Built target sensor_msgs_generate_messages_nodejs
[ 0%] Built target controller_manager_msgs_generate_messages_lisp
[ 0%] Built target tf2_msgs_generate_messages_py
[ 0%] Built target tf2_msgs_generate_messages_lisp
[ 0%] Built target tf2_msgs_generate_messages_eus
[ 0%] Built target tf2_msgs_generate_messages_cpp
[ 0%] Built target actionlib_msgs_generate_messages_py
[ 0%] Built target actionlib_msgs_generate_messages_lisp
[ 0%] Built target actionlib_msgs_generate_messages_eus
[ 0%] Built target rosgraph_msgs_generate_messages_py
[ 0%] Built target actionlib_msgs_generate_messages_nodejs
[ 0%] Built target actionlib_msgs_generate_messages_cpp
[ 0%] Built target rosgraph_msgs_generate_messages_lisp
[ 0%] Built target rosgraph_msgs_generate_messages_nodejs
[ 0%] Built target rosgraph_msgs_generate_messages_eus
[ 0%] Built target tf_generate_messages_eus
[ 0%] Built target tf_generate_messages_cpp
[ 0%] Built target rosgraph_msgs_generate_messages_cpp
[ 0%] Built target roscpp_generate_messages_lisp
[ 0%] Built target roscpp_generate_messages_py
[ 0%] Built target tf_generate_messages_lisp
[ 0%] Built target roscpp_generate_messages_nodejs
[ 0%] Built target roscpp_generate_messages_eus
[ 0%] Built target tf_generate_messages_nodejs
[ 0%] Built target actionlib_generate_messages_cpp
[ 0%] Built target actionlib_generate_messages_eus
[ 0%] Built target actionlib_generate_messages_nodejs
[ 0%] Built target tf_generate_messages_py
[ 0%] Built target actionlib_generate_messages_lisp
[ 0%] Built target roscpp_generate_messages_cpp
[ 0%] Built target actionlib_generate_messages_py
[ 0%] Built target controller_manager_msgs_generate_messages_eus
[ 0%] Built target controller_manager_msgs_generate_messages_nodejs
[ 0%] Built target controller_manager_msgs_generate_messages_py
[ 0%] Built target controller_manager_msgs_generate_messages_cpp
[ 2%] Built target unitree_move_kinetic
[ 5%] Built target unitree_external_force
[ 18%] Built target unitree_legged_msgs_generate_messages_lisp
[ 33%] Built target unitree_legged_msgs_generate_messages_cpp
[ 46%] Built target unitree_legged_msgs_generate_messages_py
[ 49%] Built target unitreeFootContactPlugin
[ 52%] Built target unitreeDrawForcePlugin
[ 65%] Built target unitree_legged_msgs_generate_messages_nodejs
[ 79%] Built target unitree_legged_msgs_generate_messages_eus
[ 79%] Built target unitree_legged_msgs_gencpp
[ 81%] Building CXX object unitree_ros/unitree_legged_real/CMakeFiles/velocity_lcm.dir/src/exe/velocity_mode.cpp.o
[ 81%] Built target unitree_legged_msgs_generate_messages
[ 82%] Building CXX object unitree_ros/unitree_legged_real/CMakeFiles/position_lcm.dir/src/exe/position_mode.cpp.o
[ 84%] Building CXX object unitree_ros/unitree_legged_real/CMakeFiles/walk_lcm.dir/src/exe/walk_mode.cpp.o
[ 85%] Building CXX object unitree_ros/unitree_legged_real/CMakeFiles/torque_lcm.dir/src/exe/torque_mode.cpp.o
[ 88%] Built target unitree_controller
[ 91%] Built target unitree_legged_control
[ 94%] Built target unitree_servo
/home/dlee640/a1_ws/src/unitree_ros/unitree_legged_real/src/exe/walk_mode.cpp:13:10: fatal error: unitree_legged_sdk/unitree_legged_sdk.h: No such file or directory
#include "unitree_legged_sdk/unitree_legged_sdk.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
/home/dlee640/a1_ws/src/unitree_ros/unitree_legged_real/src/exe/torque_mode.cpp:12:10: fatal error: unitree_legged_sdk/unitree_legged_sdk.h: No such file or directory
#include "unitree_legged_sdk/unitree_legged_sdk.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
unitree_ros/unitree_legged_real/CMakeFiles/walk_lcm.dir/build.make:62: recipe for target 'unitree_ros/unitree_legged_real/CMakeFiles/walk_lcm.dir/src/exe/walk_mode.cpp.o' failed
make[2]: *** [unitree_ros/unitree_legged_real/CMakeFiles/walk_lcm.dir/src/exe/walk_mode.cpp.o] Error 1
CMakeFiles/Makefile2:2862: recipe for target 'unitree_ros/unitree_legged_real/CMakeFiles/walk_lcm.dir/all' failed
make[1]: *** [unitree_ros/unitree_legged_real/CMakeFiles/walk_lcm.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
unitree_ros/unitree_legged_real/CMakeFiles/torque_lcm.dir/build.make:62: recipe for target 'unitree_ros/unitree_legged_real/CMakeFiles/torque_lcm.dir/src/exe/torque_mode.cpp.o' failed
make[2]: *** [unitree_ros/unitree_legged_real/CMakeFiles/torque_lcm.dir/src/exe/torque_mode.cpp.o] Error 1
CMakeFiles/Makefile2:3231: recipe for target 'unitree_ros/unitree_legged_real/CMakeFiles/torque_lcm.dir/all' failed
make[1]: *** [unitree_ros/unitree_legged_real/CMakeFiles/torque_lcm.dir/all] Error 2
/home/dlee640/a1_ws/src/unitree_ros/unitree_legged_real/src/exe/velocity_mode.cpp:13:10: fatal error: unitree_legged_sdk/unitree_legged_sdk.h: No such file or directory
#include "unitree_legged_sdk/unitree_legged_sdk.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
/home/dlee640/a1_ws/src/unitree_ros/unitree_legged_real/src/exe/position_mode.cpp:13:10: fatal error: unitree_legged_sdk/unitree_legged_sdk.h: No such file or directory
#include "unitree_legged_sdk/unitree_legged_sdk.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
unitree_ros/unitree_legged_real/CMakeFiles/position_lcm.dir/build.make:62: recipe for target 'unitree_ros/unitree_legged_real/CMakeFiles/position_lcm.dir/src/exe/position_mode.cpp.o' failed
make[2]: *** [unitree_ros/unitree_legged_real/CMakeFiles/position_lcm.dir/src/exe/position_mode.cpp.o] Error 1
unitree_ros/unitree_legged_real/CMakeFiles/velocity_lcm.dir/build.make:62: recipe for target 'unitree_ros/unitree_legged_real/CMakeFiles/velocity_lcm.dir/src/exe/velocity_mode.cpp.o' failed
make[2]: *** [unitree_ros/unitree_legged_real/CMakeFiles/velocity_lcm.dir/src/exe/velocity_mode.cpp.o] Error 1
CMakeFiles/Makefile2:3140: recipe for target 'unitree_ros/unitree_legged_real/CMakeFiles/position_lcm.dir/all' failed
make[1]: *** [unitree_ros/unitree_legged_real/CMakeFiles/position_lcm.dir/all] Error 2
CMakeFiles/Makefile2:2953: recipe for target 'unitree_ros/unitree_legged_real/CMakeFiles/velocity_lcm.dir/all' failed
make[1]: *** [unitree_ros/unitree_legged_real/CMakeFiles/velocity_lcm.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed
`

What am I doing wrong?

boost signals error while compiling

I cloned the package to src directory and tried to compile it but I have encountered a problem with the boost package.

`-- +++ processing catkin package: 'unitree_controller'
-- ==> add_subdirectory(unitree_ros/unitree_controller)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
CMake Error at /usr/lib/cmake/Boost-1.78.0/BoostConfig.cmake:141 (find_package):
Could not find a package configuration file provided by "boost_signals"
(requested version 1.78.0) with any of the following names:

boost_signalsConfig.cmake
boost_signals-config.cmake

Add the installation prefix of "boost_signals" to CMAKE_PREFIX_PATH or set
"boost_signals_DIR" to a directory containing one of the above files. If
"boost_signals" provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
/usr/lib/cmake/Boost-1.78.0/BoostConfig.cmake:262 (boost_find_component)
/usr/share/cmake-3.10/Modules/FindBoost.cmake:242 (find_package)
/usr/lib/x86_64-linux-gnu/cmake/gazebo/gazebo-config.cmake:159 (find_package)
unitree_ros/unitree_controller/CMakeLists.txt:17 (find_package)
`

Have anyone got an idea what may cause this problem?

与百度飞浆仿真库结合问题

Hi, 我正在使用百度飞浆的仿真库进行强化学习的方面研究,在这之前想模拟一些简单动作的控制,比如横向移动,向后移动等,百度飞浆提供了一个ETG模型可以向前移动,我在向他们咨询是否可以提供其他动作的演示代码时,他们建议我和你们取得联系。不知道你们是否可以帮忙解决,谢谢!百度飞浆的问题链接为PaddlePaddle/MetaGym#52 (comment)

ROS Noetic Error: cannot find -lunitree_legged_sdk

@ZKBian and Unitree team, I'm wondering if I can get some assistance with building the ROS packages for Gazebo simulation. I'm running into the following error in the screenshot below:

cannot find -lunitree_legged_sdk

Screenshot from 2022-02-08 07-52-11

I've gone through all the steps in the README file as well as several of the GitHub Issues. Here is what I've done:

  1. Cloned unitree_ros and unitree_ros_to_real into ~/catkin_ws/src
  2. Cloned unitree_legged_sdk into my home directory ~/
  3. Successfully built unitree_legged_sdk as you can see here:

Screenshot from 2022-02-08 07-58-54

  1. Added the UNITREE_LEGGED_SDK_PATH environment variable as suggested by @Zhaiweiwei0 here
  2. But running catkin build in my workspace yields the error I posted above

Could this possibly be a ROS Noetic issue? Any help would be greatly appreciated.

Thank you.

Problem with LCM server

Hello ! I have an a1 robot and have successfully setup my workspace. But form times to times, I get the following error when I run the robot in high level mode for example (roslaunch mbs_unitree_ros high_level_mode.launch) :

[node_lcm_server-2] process has died [pid 6969, exit code 255, cmd /home/amin/catkin_ws/devel/lib/unitree_legged_real/lcm_server_3_2 a1 highlevel __name:=node_lcm_server __log:=/root/.ros/log/37556312-1b72-11ec-a5c3-000c296e3085/node_lcm_server-2.log].
log file: /root/.ros/log/37556312-1b72-11ec-a5c3-000c296e3085/node_lcm_server-2*.log

It occurs very randomly but often enough to become a problem. It usually works for a few minutes if I'm lucky and then I get the error, it doesn't occur right after I run the command. And I've tried to check the log file (/root/.ros/log/37556312-1b72-11ec-a5c3-000c296e3085/node_lcm_server-2*.log) but it doesn't exist though the folder does (and contains other log files). Any idea on how to solve it ?

PS : Here's the whole return message that I get.
log.txt

[urdf_spawner-4] process has died

After I deleted the comment and successfully opened the models in the Rviz by the guidance in Issue #35 , I found I have problem in running the simulation by the command roslaunch unitree_gazebo normal.launch in the terminal.
It gave me the following errors:

[urdf_spawner-4] process has died [pid 17950, exit code 1, cmd /opt/ros/melodic/lib/gazebo_ros/spawn_model -urdf -z 0.6 -model laikago_gazebo -param robot_description -unpause __name:=urdf_spawner __log:=/home/xinyu/.ros/log/00c0cee8-9aef-11ec-976c-103d1c3e9504/urdf_spawner-4.log].
log file: /home/xinyu/.ros/log/00c0cee8-9aef-11ec-976c-103d1c3e9504/urdf_spawner-4*.log

The complete terminal output was as follows:

... logging to /home/xinyu/.ros/log/00c0cee8-9aef-11ec-976c-103d1c3e9504/roslaunch-Office-17909.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

xacro: in-order processing became default in ROS Melodic. You can drop the option.
started roslaunch server http://Office:37841/

SUMMARY
========

PARAMETERS
 * /gazebo/enable_ros_network: True
 * /laikago_gazebo/FL_calf_controller/joint: FL_calf_joint
 * /laikago_gazebo/FL_calf_controller/pid/d: 8.0
 * /laikago_gazebo/FL_calf_controller/pid/i: 0.0
 * /laikago_gazebo/FL_calf_controller/pid/p: 300.0
 * /laikago_gazebo/FL_calf_controller/type: unitree_legged_co...
 * /laikago_gazebo/FL_hip_controller/joint: FL_hip_joint
 * /laikago_gazebo/FL_hip_controller/pid/d: 5.0
 * /laikago_gazebo/FL_hip_controller/pid/i: 0.0
 * /laikago_gazebo/FL_hip_controller/pid/p: 100.0
 * /laikago_gazebo/FL_hip_controller/type: unitree_legged_co...
 * /laikago_gazebo/FL_thigh_controller/joint: FL_thigh_joint
 * /laikago_gazebo/FL_thigh_controller/pid/d: 8.0
 * /laikago_gazebo/FL_thigh_controller/pid/i: 0.0
 * /laikago_gazebo/FL_thigh_controller/pid/p: 300.0
 * /laikago_gazebo/FL_thigh_controller/type: unitree_legged_co...
 * /laikago_gazebo/FR_calf_controller/joint: FR_calf_joint
 * /laikago_gazebo/FR_calf_controller/pid/d: 8.0
 * /laikago_gazebo/FR_calf_controller/pid/i: 0.0
 * /laikago_gazebo/FR_calf_controller/pid/p: 300.0
 * /laikago_gazebo/FR_calf_controller/type: unitree_legged_co...
 * /laikago_gazebo/FR_hip_controller/joint: FR_hip_joint
 * /laikago_gazebo/FR_hip_controller/pid/d: 5.0
 * /laikago_gazebo/FR_hip_controller/pid/i: 0.0
 * /laikago_gazebo/FR_hip_controller/pid/p: 100.0
 * /laikago_gazebo/FR_hip_controller/type: unitree_legged_co...
 * /laikago_gazebo/FR_thigh_controller/joint: FR_thigh_joint
 * /laikago_gazebo/FR_thigh_controller/pid/d: 8.0
 * /laikago_gazebo/FR_thigh_controller/pid/i: 0.0
 * /laikago_gazebo/FR_thigh_controller/pid/p: 300.0
 * /laikago_gazebo/FR_thigh_controller/type: unitree_legged_co...
 * /laikago_gazebo/RL_calf_controller/joint: RL_calf_joint
 * /laikago_gazebo/RL_calf_controller/pid/d: 8.0
 * /laikago_gazebo/RL_calf_controller/pid/i: 0.0
 * /laikago_gazebo/RL_calf_controller/pid/p: 300.0
 * /laikago_gazebo/RL_calf_controller/type: unitree_legged_co...
 * /laikago_gazebo/RL_hip_controller/joint: RL_hip_joint
 * /laikago_gazebo/RL_hip_controller/pid/d: 5.0
 * /laikago_gazebo/RL_hip_controller/pid/i: 0.0
 * /laikago_gazebo/RL_hip_controller/pid/p: 100.0
 * /laikago_gazebo/RL_hip_controller/type: unitree_legged_co...
 * /laikago_gazebo/RL_thigh_controller/joint: RL_thigh_joint
 * /laikago_gazebo/RL_thigh_controller/pid/d: 8.0
 * /laikago_gazebo/RL_thigh_controller/pid/i: 0.0
 * /laikago_gazebo/RL_thigh_controller/pid/p: 300.0
 * /laikago_gazebo/RL_thigh_controller/type: unitree_legged_co...
 * /laikago_gazebo/RR_calf_controller/joint: RR_calf_joint
 * /laikago_gazebo/RR_calf_controller/pid/d: 8.0
 * /laikago_gazebo/RR_calf_controller/pid/i: 0.0
 * /laikago_gazebo/RR_calf_controller/pid/p: 300.0
 * /laikago_gazebo/RR_calf_controller/type: unitree_legged_co...
 * /laikago_gazebo/RR_hip_controller/joint: RR_hip_joint
 * /laikago_gazebo/RR_hip_controller/pid/d: 5.0
 * /laikago_gazebo/RR_hip_controller/pid/i: 0.0
 * /laikago_gazebo/RR_hip_controller/pid/p: 100.0
 * /laikago_gazebo/RR_hip_controller/type: unitree_legged_co...
 * /laikago_gazebo/RR_thigh_controller/joint: RR_thigh_joint
 * /laikago_gazebo/RR_thigh_controller/pid/d: 8.0
 * /laikago_gazebo/RR_thigh_controller/pid/i: 0.0
 * /laikago_gazebo/RR_thigh_controller/pid/p: 300.0
 * /laikago_gazebo/RR_thigh_controller/type: unitree_legged_co...
 * /laikago_gazebo/joint_state_controller/publish_rate: 1000
 * /laikago_gazebo/joint_state_controller/type: joint_state_contr...
 * /robot_description: <?xml version="1....
 * /robot_name: laikago
 * /rosdistro: melodic
 * /rosversion: 1.14.12
 * /use_sim_time: True

NODES
  /
    gazebo (gazebo_ros/gzserver)
    gazebo_gui (gazebo_ros/gzclient)
    robot_state_publisher (robot_state_publisher/robot_state_publisher)
    urdf_spawner (gazebo_ros/spawn_model)
  /laikago_gazebo/
    controller_spawner (controller_manager/spawner)

auto-starting new master
process[master]: started with pid [17922]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 00c0cee8-9aef-11ec-976c-103d1c3e9504
process[rosout-1]: started with pid [17933]
started core service [/rosout]
process[gazebo-2]: started with pid [17940]
process[gazebo_gui-3]: started with pid [17945]
process[urdf_spawner-4]: started with pid [17950]
process[laikago_gazebo/controller_spawner-5]: started with pid [17951]
process[robot_state_publisher-6]: started with pid [17952]
[ INFO] [1646311185.155471846]: Finished loading Gazebo ROS API Plugin.
[ INFO] [1646311185.157043612]: waitForService: Service [/gazebo/set_physics_properties] has not been advertised, waiting...
[ INFO] [1646311185.160730852]: Finished loading Gazebo ROS API Plugin.
[ INFO] [1646311185.162966871]: waitForService: Service [/gazebo_gui/set_physics_properties] has not been advertised, waiting...
[INFO] [1646311185.184220, 0.000000]: Controller Spawner: Waiting for service controller_manager/load_controller
Traceback (most recent call last):
  File "/opt/ros/melodic/lib/gazebo_ros/spawn_model", line 34, in <module>
    from tf.transformations import quaternion_from_euler
  File "/opt/ros/melodic/lib/python2.7/dist-packages/tf/__init__.py", line 30, in <module>
    from tf2_ros import TransformException as Exception, ConnectivityException, LookupException, ExtrapolationException
  File "/opt/ros/melodic/lib/python2.7/dist-packages/tf2_ros/__init__.py", line 39, in <module>
    from .buffer_interface import *
  File "/opt/ros/melodic/lib/python2.7/dist-packages/tf2_ros/buffer_interface.py", line 32, in <module>
    import roslib; roslib.load_manifest('tf2_ros')
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 64, in load_manifest
    sys.path = _generate_python_path(package_name, _rospack) + sys.path
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 97, in _generate_python_path
    m = rospack.get_manifest(pkg)
  File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 171, in get_manifest
    return self._load_manifest(name)
  File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 215, in _load_manifest
    retval = self._manifests[name] = parse_manifest_file(self.get_path(name), self._manifest_name, rospack=self)
  File "/usr/lib/python2.7/dist-packages/rospkg/manifest.py", line 414, in parse_manifest_file
    _static_rosdep_view = init_rospack_interface()
  File "/usr/lib/python2.7/dist-packages/rosdep2/rospack.py", line 60, in init_rospack_interface
    lookup = _get_default_RosdepLookup(Options())
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 136, in _get_default_RosdepLookup
    verbose=options.verbose)
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 609, in create_default
    sources = load_cached_sources_list(sources_cache_dir=sources_cache_dir, verbose=verbose)
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 566, in load_cached_sources_list
    raise CachePermissionError('Failed to write cache file: ' + str(e))
rosdep2.core.CachePermissionError: Failed to write cache file: [Errno 13] Permission denied: '/home/xinyu/.ros/rosdep/sources.cache/index'
[urdf_spawner-4] process has died [pid 17950, exit code 1, cmd /opt/ros/melodic/lib/gazebo_ros/spawn_model -urdf -z 0.6 -model laikago_gazebo -param robot_description -unpause __name:=urdf_spawner __log:=/home/xinyu/.ros/log/00c0cee8-9aef-11ec-976c-103d1c3e9504/urdf_spawner-4.log].
log file: /home/xinyu/.ros/log/00c0cee8-9aef-11ec-976c-103d1c3e9504/urdf_spawner-4*.log
[ INFO] [1646311185.992605882]: waitForService: Service [/gazebo/set_physics_properties] is now available.
[ INFO] [1646311186.003600256]: Physics dynamic reconfigure ready.
[WARN] [1646311215.255998, 0.000000]: Controller Spawner couldn't find the expected controller_manager ROS interface.
[laikago_gazebo/controller_spawner-5] process has finished cleanly
log file: /home/xinyu/.ros/log/00c0cee8-9aef-11ec-976c-103d1c3e9504/laikago_gazebo-controller_spawner-5*.log

I've successfully run the simulation before, it's weird to have a error like this.

How to control the robot without sudo?

I tried to set up the environment in Ubuntu 20.04. It seems to work well after addressing the path changes and compile errors due to Common::Color. However, the demos are not what I thought to be. Is there any way to control the robot with this package? Can I run real_launch for the purpose? Can real_launch work without sudo privileges?

The following is the output when I tried to run 'roslaunch unitree_legged_real real.launch rname:=a1 ctrl_level:=highlevel firmwork:=3_2' without sudo. I don't know if it is useful.

... logging to /home/Username/.ros/log/ae1ca92a-c2bb-11eb-a73a-4594c786ab26/roslaunch-Username-PC-68983.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://Username-PC:39303/
SUMMARY
========
PARAMETERS

  • /control_level: highlevel
  • /firmwork: 3_2
  • /robot_name: a1
  • /rosdistro: noetic
  • /rosversion: 1.15.11
    NODES
    /
    node_lcm_server (unitree_legged_real/lcm_server_3_2)
    ROS_MASTER_URI=http://localhost:11311
    process[node_lcm_server-1]: started with pid [69051]
    Error: Pthread set sched policy failed.
    [node_lcm_server-1] process has died [pid 69051, exit code 254, cmd /home/Username/unitree/catkin_ws/devel/lib/unitree_legged_real/lcm_server_3_2 a1 highlevel __name:=node_lcm_server __log:=/home/Username/.ros/log/ae1ca92a-c2bb-11eb-a73a-4594c786ab26/node_lcm_server-1.log].
    log file: /home/Username/.ros/log/ae1ca92a-c2bb-11eb-a73a-4594c786ab26/node_lcm_server-1*.log
    all processes on machine have died, roslaunch will exit
    shutting down processing monitor...
    ... shutting down processing monitor complete
    done

Complete Sensors URDF - AlienGo

Hi,

We have an AlienGo robot equipped with two D435 cameras and a T265.

Is there available somewhere the URDF model with the correct transformations (i.e imu to upper D435 camera transformation).

Or a way to start the publishing of the tf tree on the robot?

Or would I have to measure it myself?

Best,
Ilyass

Unitree A1 - /unitree/state returns all zero values

Hello,

First of all, thank you for the robots and the software tools :)

I made a connection between unitree A1 robot and the laptop,

the rostopic lists appeared and ping test was successful.

However, when I ran 'rostopic echo /unitree/state/' that is supposed to show the joint positions and other things, all the parameter values returned zeros:
all_zeros_2

How can I solve this problem?

Thanks in advance!

Battery level

Hi!
Is there a way to get the battery level of the robot as a ROS message (i.e. sensor_msgs/BatteryState)?
This would be useful for experiments and real-world deployment.
Thanks!

How to run on amd

I have the error: cannot find -lunitree_legged_sdk_amd64

Can someone help me ?

Nonzero joint velocities for static position

Hello everyone! I am using ROS Melodic with Gazebo 9 for simulating Unitree A1. Recently I found that /a1_gazebo/joint_states shows considerable non-zero joint velocities when robot stands on the ground in static position.

name: [FL_calf_joint, FL_hip_joint, FL_thigh_joint, FR_calf_joint, FR_hip_joint, FR_thigh_joint,
RL_calf_joint, RL_hip_joint, RL_thigh_joint, RR_calf_joint, RR_hip_joint, RR_thigh_joint]
position: [-1.8067917018317212, -0.0036711704252851973, 0.9099697629715378, -1.806772142712079, 0.004696926607448582, 0.9095625720138552, -1.8186968950126419, 0.0008575607460707957, 0.8774355131675948, -1.8181737030277958, -0.0009353485832894748, 0.878487507105894]
velocity: [0.10163459135855274, 0.00017837897750033207, -0.054344907897997556, 0.09963114700550404, -0.00019835855988175152, -0.05325392609056173, 0.12271480958040351, -6.147523458182025e-05, -0.06289511662443122, 0.1201566424423951, 9.000511433220106e-05, -0.06168391696019666]
effort: [2.803582101455794, 0.2587902718223676, -2.426390044563027, 2.7882159765580243, -0.3283892436963771, -2.3523401162714674, 6.498382876895728, -0.0609953422707894, 3.4360149951399754, 6.333023565603345, 0.06641326422155286, 3.2482856200882586]

When I plot joint velocities in Gazebo values are also non-zero. However when I hung up the robot and use the same servo velocities are zero. I use unitree_legged_control package as a servo controller.
At the same time dq value in controller/state topic shows correct zero values.
Thanks!

Ability to run user ROS code on internal A1 computer

Hi,

Is it possible to run our ROS nodes on the internal computer inside of the A1 or do we require an external computer? For instance, if I wanted to run the ROS 2 navigation stack with a waypoint follower node, would that have to be done on a separate machine connected over ethernet and share the ROS network or could I add it to the robot computer? How much compute power is left on the internal computer after the system operations?

Problem with building unitree_controller package

my system
ubuntu 18.04
unitree_legged_sdk: 3.8.0
cmake 3.10.2
lcm 1.4.0
g++ 8.4.0

I have problem with building the unitree_controller package. Can not get pass these error. Please.

Errors << unitree_controller:make /home/wong/catkin_ws/logs/unitree_controller/build.make.011.log
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp: In member function ‘void multiThread::FRfootCallback(const WrenchStamped&)’:
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:170:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[0].x = msg.wrench.force.x;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:171:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[0].y = msg.wrench.force.y;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:172:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[0].z = msg.wrench.force.z;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp: In member function ‘void multiThread::FLfootCallback(const WrenchStamped&)’:
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:178:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[1].x = msg.wrench.force.x;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:179:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[1].y = msg.wrench.force.y;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:180:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[1].z = msg.wrench.force.z;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp: In member function ‘void multiThread::RRfootCallback(const WrenchStamped&)’:
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:186:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[2].x = msg.wrench.force.x;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:187:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[2].y = msg.wrench.force.y;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:188:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[2].z = msg.wrench.force.z;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp: In member function ‘void multiThread::RLfootCallback(const WrenchStamped&)’:
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:194:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[3].x = msg.wrench.force.x;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:195:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[3].y = msg.wrench.force.y;
^~~~~~~
footForce
/home/wong/catkin_ws/src/unitree_ros/unitree_controller/src/servo.cpp:196:18: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator >’} has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[3].z = msg.wrench.force.z;
^~~~~~~
footForce
make[2]: *** [CMakeFiles/unitree_servo.dir/src/servo.cpp.o] Error 1
make[1]: *** [CMakeFiles/unitree_servo.dir/all] Error 2
make: *** [all] Error 2
cd /home/wong/catkin_ws/build/unitree_controller; catkin build --get-env unitree_controller | catkin env -si /usr/bin/make --jobserver-fds=6,7 -j; cd -
...............................................................................
Failed << unitree_controller:make [ Exited with code 2 ]
Failed <<< unitree_controller [ 7.4 seconds ]

send high-level commands (walk), and receive low-level sensor readings

Hello, I purchased A1 a few months ago for academic research on Estimation. To do this, I need to send high-level commands (walk), and receive low-level sensor readings (for the Estimation). How can this be done?
I can not do that under the same port, is it possible to work with two ports at the same time in different modes?

How to get motor states in High level control?

I have seen that in low level control the motor status is available in low state message. But it is not available in high level mode. Is there any way to get these values in high level mode?

GO1 SDK

Hi,

When will the GO1's SDK (in all it's configs) be uploaded to the main repo?

Thanks

Minimal example ROS driver

Hi,

Most robots have some node that will connect to the robot and stream data (images, imu, odometry, joint states, etc) and accept a command velocity Twist message (like drive forward at X m/s, turn at M rad/s). Does this have that node? If so, where is it?

I see in this repo examples of launching in simulation and how to run on the real robot if we wanted to change the low level controllers. But if I'm totally fine with the low level controllers and just want to control the higher level functions of the robot to make it autonomous, how do I do that?

Examples:

  • topic to report if in recovery mode from having flipped over / internal state necessary
  • command velocity for base to track cmd_vel topic
  • get IMU (imu) / image / joint states / odometry odom / sensor data
  • Robot specific services (change modes, command to self right, any other mode change or features for the robots that aren't just getting data or commanding velocities in your SDK)
  • power on / off

I see that most, if not all, of this is in your high level control mode API, but I don't see code examples of these here and some of the info is missing (programmatically know if its in the fault mode when it flips over or mode is missing the fast "trot/run" mode and not just walk or make it do a flip) that the remote controller can do

Before runing unitree_servo, the robot shifts in Gazebo

Hi there,

when I run the gazebo simulation launch file and before I run the servo.cpp to control the robot to stand up, the robot always shifts towards some random directios. I was wondering is it a bug? And how to solve this problem? Because I want to fix the base postion and orientation, as well as the feet position after the robot is standing up. Many thanks!

Problems with Creating the Environment for A1


UPDATE ( SUMMARY OF THE PROBLEM)

legged_messages, which I've built before unitree_legged_real, is not seen by ROS for some reason. Actually, as you can see, the message type is installed:

Screenshot from 2022-06-20 15-06-33

but when I catkin_make , the message is not seen (it does not have member pitch for instance, according to the error, but it has that member (see the above image).

Screenshot from 2022-06-20 15-07-12


Hello, I am trying to connect A1 to ROS (Noetic) (and I also want to simulate A1 in Gazebo later). I've done the following:

  1. I downloaded unitree_legged_sdk version 3.2; put it into catkin_ws/src; and then built it.

  2. I downloaded unitree_ros_to_real version 3.2.1; put it into catkin_we/src. I then built unitree_legged_msgs. Then I try to build unitree_legged_real or try to catkin_make, but I always get this error:


[ 85%] Building CXX object unitree_ros_to_real/unitree_legged_real/CMakeFiles/velocity_lcm.dir/src/exe/velocity_mode.cpp.o
[ 85%] Building CXX object unitree_ros_to_real/unitree_legged_real/CMakeFiles/walk_lcm.dir/src/exe/walk_mode.cpp.o
[ 87%] Building CXX object unitree_ros_to_real/unitree_legged_real/CMakeFiles/torque_lcm.dir/src/exe/torque_mode.cpp.o
[ 89%] Building CXX object unitree_ros_to_real/unitree_legged_real/CMakeFiles/position_lcm.dir/src/exe/position_mode.cpp.o
[ 92%] Built target lcm_server_3_2
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/position_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘unitree_legged_msgs::LowState ToRos(UNITREE_LEGGED_SDK::LowState&)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:225:9: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator<void> >’} has no member named ‘commVersion’
  225 |     ros.commVersion = lcm.commVersion;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:226:9: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator<void> >’} has no member named ‘robotID’
  226 |     ros.robotID = lcm.robotID;
      |         ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:227:18: error: no match for ‘operator=’ (operand types are ‘unitree_legged_msgs::LowState_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} and ‘uint32_t’ {aka ‘unsigned int’})
  227 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/position_mode.cpp:6:
/usr/include/boost/array.hpp:172:21: note: candidate: ‘template<class T2> boost::array<T, N>& boost::array<T, N>::operator=(const boost::array<T2, N>&) [with T2 = T2; T = unsigned int; long unsigned int N = 2]’
  172 |         array<T,N>& operator= (const array<T2,N>& rhs) {
      |                     ^~~~~~~~
/usr/include/boost/array.hpp:172:21: note:   template argument deduction/substitution failed:
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/position_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:227:18: note:   mismatched types ‘const boost::array<T2, 2>’ and ‘uint32_t’ {aka ‘unsigned int’}
  227 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/position_mode.cpp:6:
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(const boost::array<unsigned int, 2>&)’
   61 |     class array {
      |           ^~~~~
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘const boost::array<unsigned int, 2>&’
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(boost::array<unsigned int, 2>&&)’
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘boost::array<unsigned int, 2>&&’
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/position_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘UNITREE_LEGGED_SDK::LowCmd ToLcm(unitree_legged_msgs::LowCmd&, UNITREE_LEGGED_SDK::LowCmd)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:250:27: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘commVersion’
  250 |     lcm.commVersion = ros.commVersion;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:251:23: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘robotID’
  251 |     lcm.robotID = ros.robotID;
      |                       ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:252:18: error: cannot convert ‘unitree_legged_msgs::LowCmd_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} to ‘uint32_t’ {aka ‘unsigned int’} in assignment
  252 |     lcm.SN = ros.SN;
      |              ~~~~^~
      |                  |
      |                  unitree_legged_msgs::LowCmd_<std::allocator<void> >::_SN_type {aka boost::array<unsigned int, 2>}
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:258:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  258 |         lcm.led[i].r = ros.led[i].r;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:259:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  259 |         lcm.led[i].g = ros.led[i].g;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:260:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  260 |         lcm.led[i].b = ros.led[i].b;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘unitree_legged_msgs::HighState ToRos(UNITREE_LEGGED_SDK::HighState&)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:274:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘commVersion’
  274 |     ros.commVersion = lcm.commVersion;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:275:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘robotID’
  275 |     ros.robotID = lcm.robotID;
      |         ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:276:18: error: no match for ‘operator=’ (operand types are ‘unitree_legged_msgs::HighState_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} and ‘uint32_t’ {aka ‘unsigned int’})
  276 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/position_mode.cpp:6:
/usr/include/boost/array.hpp:172:21: note: candidate: ‘template<class T2> boost::array<T, N>& boost::array<T, N>::operator=(const boost::array<T2, N>&) [with T2 = T2; T = unsigned int; long unsigned int N = 2]’
  172 |         array<T,N>& operator= (const array<T2,N>& rhs) {
      |                     ^~~~~~~~
/usr/include/boost/array.hpp:172:21: note:   template argument deduction/substitution failed:
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/position_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:276:18: note:   mismatched types ‘const boost::array<T2, 2>’ and ‘uint32_t’ {aka ‘unsigned int’}
  276 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/position_mode.cpp:6:
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(const boost::array<unsigned int, 2>&)’
   61 |     class array {
      |           ^~~~~
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘const boost::array<unsigned int, 2>&’
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(boost::array<unsigned int, 2>&&)’
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘boost::array<unsigned int, 2>&&’
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/position_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:280:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘forwardSpeed’
  280 |     ros.forwardSpeed = lcm.forwardSpeed;
      |         ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:281:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘sideSpeed’
  281 |     ros.sideSpeed = lcm.sideSpeed;
      |         ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:282:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘rotateSpeed’
  282 |     ros.rotateSpeed = lcm.rotateSpeed;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:284:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘updownSpeed’
  284 |     ros.updownSpeed = lcm.updownSpeed;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:285:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘forwardPosition’
  285 |     ros.forwardPosition = lcm.forwardPosition;
      |         ^~~~~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:286:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘sidePosition’
  286 |     ros.sidePosition = lcm.sidePosition;
      |         ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:297:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘tick’
  297 |     ros.tick = lcm.tick;
      |         ^~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘UNITREE_LEGGED_SDK::HighCmd ToLcm(unitree_legged_msgs::HighCmd&, UNITREE_LEGGED_SDK::HighCmd)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:310:27: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘commVersion’
  310 |     lcm.commVersion = ros.commVersion;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:311:23: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘robotID’
  311 |     lcm.robotID = ros.robotID;
      |                       ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:312:18: error: cannot convert ‘unitree_legged_msgs::HighCmd_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} to ‘uint32_t’ {aka ‘unsigned int’} in assignment
  312 |     lcm.SN = ros.SN;
      |              ~~~~^~
      |                  |
      |                  unitree_legged_msgs::HighCmd_<std::allocator<void> >::_SN_type {aka boost::array<unsigned int, 2>}
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:315:28: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘forwardSpeed’
  315 |     lcm.forwardSpeed = ros.forwardSpeed;
      |                            ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:316:25: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘sideSpeed’
  316 |     lcm.sideSpeed = ros.sideSpeed;
      |                         ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:317:27: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘rotateSpeed’
  317 |     lcm.rotateSpeed = ros.rotateSpeed;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:320:19: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘yaw’
  320 |     lcm.yaw = ros.yaw;
      |                   ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:321:21: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘pitch’
  321 |     lcm.pitch = ros.pitch;
      |                     ^~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:322:20: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘roll’
  322 |     lcm.roll = ros.roll;
      |                    ^~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:330:32: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘AppRemote’
  330 |         lcm.AppRemote[i] = ros.AppRemote[i];
      |                                ^~~~~~~~~
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/velocity_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘unitree_legged_msgs::LowState ToRos(UNITREE_LEGGED_SDK::LowState&)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:225:9: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator<void> >’} has no member named ‘commVersion’
  225 |     ros.commVersion = lcm.commVersion;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:226:9: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator<void> >’} has no member named ‘robotID’
  226 |     ros.robotID = lcm.robotID;
      |         ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:227:18: error: no match for ‘operator=’ (operand types are ‘unitree_legged_msgs::LowState_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} and ‘uint32_t’ {aka ‘unsigned int’})
  227 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/velocity_mode.cpp:6:
/usr/include/boost/array.hpp:172:21: note: candidate: ‘template<class T2> boost::array<T, N>& boost::array<T, N>::operator=(const boost::array<T2, N>&) [with T2 = T2; T = unsigned int; long unsigned int N = 2]’
  172 |         array<T,N>& operator= (const array<T2,N>& rhs) {
      |                     ^~~~~~~~
/usr/include/boost/array.hpp:172:21: note:   template argument deduction/substitution failed:
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/velocity_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:227:18: note:   mismatched types ‘const boost::array<T2, 2>’ and ‘uint32_t’ {aka ‘unsigned int’}
  227 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/velocity_mode.cpp:6:
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(const boost::array<unsigned int, 2>&)’
   61 |     class array {
      |           ^~~~~
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘const boost::array<unsigned int, 2>&’
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(boost::array<unsigned int, 2>&&)’
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘boost::array<unsigned int, 2>&&’
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/velocity_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘UNITREE_LEGGED_SDK::LowCmd ToLcm(unitree_legged_msgs::LowCmd&, UNITREE_LEGGED_SDK::LowCmd)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:250:27: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘commVersion’
  250 |     lcm.commVersion = ros.commVersion;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:251:23: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘robotID’
  251 |     lcm.robotID = ros.robotID;
      |                       ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:252:18: error: cannot convert ‘unitree_legged_msgs::LowCmd_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} to ‘uint32_t’ {aka ‘unsigned int’} in assignment
  252 |     lcm.SN = ros.SN;
      |              ~~~~^~
      |                  |
      |                  unitree_legged_msgs::LowCmd_<std::allocator<void> >::_SN_type {aka boost::array<unsigned int, 2>}
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:258:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  258 |         lcm.led[i].r = ros.led[i].r;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:259:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  259 |         lcm.led[i].g = ros.led[i].g;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:260:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  260 |         lcm.led[i].b = ros.led[i].b;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘unitree_legged_msgs::HighState ToRos(UNITREE_LEGGED_SDK::HighState&)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:274:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘commVersion’
  274 |     ros.commVersion = lcm.commVersion;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:275:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘robotID’
  275 |     ros.robotID = lcm.robotID;
      |         ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:276:18: error: no match for ‘operator=’ (operand types are ‘unitree_legged_msgs::HighState_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} and ‘uint32_t’ {aka ‘unsigned int’})
  276 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/velocity_mode.cpp:6:
/usr/include/boost/array.hpp:172:21: note: candidate: ‘template<class T2> boost::array<T, N>& boost::array<T, N>::operator=(const boost::array<T2, N>&) [with T2 = T2; T = unsigned int; long unsigned int N = 2]’
  172 |         array<T,N>& operator= (const array<T2,N>& rhs) {
      |                     ^~~~~~~~
/usr/include/boost/array.hpp:172:21: note:   template argument deduction/substitution failed:
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/velocity_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:276:18: note:   mismatched types ‘const boost::array<T2, 2>’ and ‘uint32_t’ {aka ‘unsigned int’}
  276 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/velocity_mode.cpp:6:
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(const boost::array<unsigned int, 2>&)’
   61 |     class array {
      |           ^~~~~
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘const boost::array<unsigned int, 2>&’
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(boost::array<unsigned int, 2>&&)’
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘boost::array<unsigned int, 2>&&’
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/velocity_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:280:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘forwardSpeed’
  280 |     ros.forwardSpeed = lcm.forwardSpeed;
      |         ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:281:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘sideSpeed’
  281 |     ros.sideSpeed = lcm.sideSpeed;
      |         ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:282:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘rotateSpeed’
  282 |     ros.rotateSpeed = lcm.rotateSpeed;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:284:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘updownSpeed’
  284 |     ros.updownSpeed = lcm.updownSpeed;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:285:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘forwardPosition’
  285 |     ros.forwardPosition = lcm.forwardPosition;
      |         ^~~~~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:286:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘sidePosition’
  286 |     ros.sidePosition = lcm.sidePosition;
      |         ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:297:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘tick’
  297 |     ros.tick = lcm.tick;
      |         ^~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘UNITREE_LEGGED_SDK::HighCmd ToLcm(unitree_legged_msgs::HighCmd&, UNITREE_LEGGED_SDK::HighCmd)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:310:27: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘commVersion’
  310 |     lcm.commVersion = ros.commVersion;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:311:23: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘robotID’
  311 |     lcm.robotID = ros.robotID;
      |                       ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:312:18: error: cannot convert ‘unitree_legged_msgs::HighCmd_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} to ‘uint32_t’ {aka ‘unsigned int’} in assignment
  312 |     lcm.SN = ros.SN;
      |              ~~~~^~
      |                  |
      |                  unitree_legged_msgs::HighCmd_<std::allocator<void> >::_SN_type {aka boost::array<unsigned int, 2>}
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:315:28: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘forwardSpeed’
  315 |     lcm.forwardSpeed = ros.forwardSpeed;
      |                            ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:316:25: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘sideSpeed’
  316 |     lcm.sideSpeed = ros.sideSpeed;
      |                         ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:317:27: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘rotateSpeed’
  317 |     lcm.rotateSpeed = ros.rotateSpeed;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:320:19: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘yaw’
  320 |     lcm.yaw = ros.yaw;
      |                   ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:321:21: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘pitch’
  321 |     lcm.pitch = ros.pitch;
      |                     ^~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:322:20: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘roll’
  322 |     lcm.roll = ros.roll;
      |                    ^~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:330:32: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘AppRemote’
  330 |         lcm.AppRemote[i] = ros.AppRemote[i];
      |                                ^~~~~~~~~
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘unitree_legged_msgs::LowState ToRos(UNITREE_LEGGED_SDK::LowState&)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:225:9: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator<void> >’} has no member named ‘commVersion’
  225 |     ros.commVersion = lcm.commVersion;
      |         ^~~~~~~~~~~
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/torque_mode.cpp:12:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘unitree_legged_msgs::LowState ToRos(UNITREE_LEGGED_SDK::LowState&)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:225:9: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator<void> >’} has no member named ‘commVersion’
  225 |     ros.commVersion = lcm.commVersion;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:226:9: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator<void> >’} has no member named ‘robotID’
  226 |     ros.robotID = lcm.robotID;
      |         ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:226:9: error: ‘unitree_legged_msgs::LowState’ {aka ‘struct unitree_legged_msgs::LowState_<std::allocator<void> >’} has no member named ‘robotID’
  226 |     ros.robotID = lcm.robotID;
      |         ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:227:18: error: no match for ‘operator=’ (operand types are ‘unitree_legged_msgs::LowState_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} and ‘uint32_t’ {aka ‘unsigned int’})
  227 |     ros.SN = lcm.SN;
      |                  ^~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:227:18: error: no match for ‘operator=’ (operand types are ‘unitree_legged_msgs::LowState_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} and ‘uint32_t’ {aka ‘unsigned int’})
  227 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:6:
/usr/include/boost/array.hpp:172:21: note: candidate: ‘template<class T2> boost::array<T, N>& boost::array<T, N>::operator=(const boost::array<T2, N>&) [with T2 = T2; T = unsigned int; long unsigned int N = 2]’
  172 |         array<T,N>& operator= (const array<T2,N>& rhs) {
      |                     ^~~~~~~~
/usr/include/boost/array.hpp:172:21: note:   template argument deduction/substitution failed:
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:227:18: note:   mismatched types ‘const boost::array<T2, 2>’ and ‘uint32_t’ {aka ‘unsigned int’}
  227 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/torque_mode.cpp:6:
/usr/include/boost/array.hpp:172:21: note: candidate: ‘template<class T2> boost::array<T, N>& boost::array<T, N>::operator=(const boost::array<T2, N>&) [with T2 = T2; T = unsigned int; long unsigned int N = 2]’
  172 |         array<T,N>& operator= (const array<T2,N>& rhs) {
      |                     ^~~~~~~~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:6:
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(const boost::array<unsigned int, 2>&)’
   61 |     class array {
      |           ^~~~~
/usr/include/boost/array.hpp:172:21: note:   template argument deduction/substitution failed:
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘const boost::array<unsigned int, 2>&’
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(boost::array<unsigned int, 2>&&)’
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/torque_mode.cpp:12:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:227:18: note:   mismatched types ‘const boost::array<T2, 2>’ and ‘uint32_t’ {aka ‘unsigned int’}
  227 |     ros.SN = lcm.SN;
      |                  ^~
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘boost::array<unsigned int, 2>&&’
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/torque_mode.cpp:6:
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(const boost::array<unsigned int, 2>&)’
   61 |     class array {
      |           ^~~~~
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘const boost::array<unsigned int, 2>&’
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(boost::array<unsigned int, 2>&&)’
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘boost::array<unsigned int, 2>&&’
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘UNITREE_LEGGED_SDK::LowCmd ToLcm(unitree_legged_msgs::LowCmd&, UNITREE_LEGGED_SDK::LowCmd)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:250:27: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘commVersion’
  250 |     lcm.commVersion = ros.commVersion;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:251:23: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘robotID’
  251 |     lcm.robotID = ros.robotID;
      |                       ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:252:18: error: cannot convert ‘unitree_legged_msgs::LowCmd_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} to ‘uint32_t’ {aka ‘unsigned int’} in assignment
  252 |     lcm.SN = ros.SN;
      |              ~~~~^~
      |                  |
      |                  unitree_legged_msgs::LowCmd_<std::allocator<void> >::_SN_type {aka boost::array<unsigned int, 2>}
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/torque_mode.cpp:12:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘UNITREE_LEGGED_SDK::LowCmd ToLcm(unitree_legged_msgs::LowCmd&, UNITREE_LEGGED_SDK::LowCmd)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:250:27: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘commVersion’
  250 |     lcm.commVersion = ros.commVersion;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:251:23: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘robotID’
  251 |     lcm.robotID = ros.robotID;
      |                       ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:252:18: error: cannot convert ‘unitree_legged_msgs::LowCmd_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} to ‘uint32_t’ {aka ‘unsigned int’} in assignment
  252 |     lcm.SN = ros.SN;
      |              ~~~~^~
      |                  |
      |                  unitree_legged_msgs::LowCmd_<std::allocator<void> >::_SN_type {aka boost::array<unsigned int, 2>}
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:258:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  258 |         lcm.led[i].r = ros.led[i].r;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:259:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  259 |         lcm.led[i].g = ros.led[i].g;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:260:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  260 |         lcm.led[i].b = ros.led[i].b;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:258:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  258 |         lcm.led[i].r = ros.led[i].r;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:259:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  259 |         lcm.led[i].g = ros.led[i].g;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:260:28: error: ‘unitree_legged_msgs::LowCmd’ {aka ‘struct unitree_legged_msgs::LowCmd_<std::allocator<void> >’} has no member named ‘led’
  260 |         lcm.led[i].b = ros.led[i].b;
      |                            ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘unitree_legged_msgs::HighState ToRos(UNITREE_LEGGED_SDK::HighState&)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:274:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘commVersion’
  274 |     ros.commVersion = lcm.commVersion;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:275:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘robotID’
  275 |     ros.robotID = lcm.robotID;
      |         ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:276:18: error: no match for ‘operator=’ (operand types are ‘unitree_legged_msgs::HighState_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} and ‘uint32_t’ {aka ‘unsigned int’})
  276 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:6:
/usr/include/boost/array.hpp:172:21: note: candidate: ‘template<class T2> boost::array<T, N>& boost::array<T, N>::operator=(const boost::array<T2, N>&) [with T2 = T2; T = unsigned int; long unsigned int N = 2]’
  172 |         array<T,N>& operator= (const array<T2,N>& rhs) {
      |                     ^~~~~~~~
/usr/include/boost/array.hpp:172:21: note:   template argument deduction/substitution failed:
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:276:18: note:   mismatched types ‘const boost::array<T2, 2>’ and ‘uint32_t’ {aka ‘unsigned int’}
  276 |     ros.SN = lcm.SN;
      |                  ^~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘unitree_legged_msgs::HighState ToRos(UNITREE_LEGGED_SDK::HighState&)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:274:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘commVersion’
  274 |     ros.commVersion = lcm.commVersion;
      |         ^~~~~~~~~~~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:6:
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(const boost::array<unsigned int, 2>&)’
   61 |     class array {
      |           ^~~~~
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘const boost::array<unsigned int, 2>&’
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(boost::array<unsigned int, 2>&&)’
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘boost::array<unsigned int, 2>&&’
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:275:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘robotID’
  275 |     ros.robotID = lcm.robotID;
      |         ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:276:18: error: no match for ‘operator=’ (operand types are ‘unitree_legged_msgs::HighState_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} and ‘uint32_t’ {aka ‘unsigned int’})
  276 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/torque_mode.cpp:6:
/usr/include/boost/array.hpp:172:21: note: candidate: ‘template<class T2> boost::array<T, N>& boost::array<T, N>::operator=(const boost::array<T2, N>&) [with T2 = T2; T = unsigned int; long unsigned int N = 2]’
  172 |         array<T,N>& operator= (const array<T2,N>& rhs) {
      |                     ^~~~~~~~
/usr/include/boost/array.hpp:172:21: note:   template argument deduction/substitution failed:
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/torque_mode.cpp:12:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:276:18: note:   mismatched types ‘const boost::array<T2, 2>’ and ‘uint32_t’ {aka ‘unsigned int’}
  276 |     ros.SN = lcm.SN;
      |                  ^~
In file included from /opt/ros/noetic/include/ros/message.h:38,
                 from /opt/ros/noetic/include/ros/publisher.h:33,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/torque_mode.cpp:6:
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(const boost::array<unsigned int, 2>&)’
   61 |     class array {
      |           ^~~~~
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘const boost::array<unsigned int, 2>&’
/usr/include/boost/array.hpp:61:11: note: candidate: ‘boost::array<unsigned int, 2>& boost::array<unsigned int, 2>::operator=(boost::array<unsigned int, 2>&&)’
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:13:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:280:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘forwardSpeed’
  280 |     ros.forwardSpeed = lcm.forwardSpeed;
      |         ^~~~~~~~~~~~
/usr/include/boost/array.hpp:61:11: note:   no known conversion for argument 1 from ‘uint32_t’ {aka ‘unsigned int’} to ‘boost::array<unsigned int, 2>&&’
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:281:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘sideSpeed’
  281 |     ros.sideSpeed = lcm.sideSpeed;
      |         ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:282:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘rotateSpeed’
  282 |     ros.rotateSpeed = lcm.rotateSpeed;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:284:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘updownSpeed’
  284 |     ros.updownSpeed = lcm.updownSpeed;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:285:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘forwardPosition’
  285 |     ros.forwardPosition = lcm.forwardPosition;
      |         ^~~~~~~~~~~~~~~
In file included from /home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/torque_mode.cpp:12:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:280:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘forwardSpeed’
  280 |     ros.forwardSpeed = lcm.forwardSpeed;
      |         ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:286:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘sidePosition’
  286 |     ros.sidePosition = lcm.sidePosition;
      |         ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:281:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘sideSpeed’
  281 |     ros.sideSpeed = lcm.sideSpeed;
      |         ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:282:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘rotateSpeed’
  282 |     ros.rotateSpeed = lcm.rotateSpeed;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:284:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘updownSpeed’
  284 |     ros.updownSpeed = lcm.updownSpeed;
      |         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:285:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘forwardPosition’
  285 |     ros.forwardPosition = lcm.forwardPosition;
      |         ^~~~~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:297:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘tick’
  297 |     ros.tick = lcm.tick;
      |         ^~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:286:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘sidePosition’
  286 |     ros.sidePosition = lcm.sidePosition;
      |         ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:297:9: error: ‘unitree_legged_msgs::HighState’ {aka ‘struct unitree_legged_msgs::HighState_<std::allocator<void> >’} has no member named ‘tick’
  297 |     ros.tick = lcm.tick;
      |         ^~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘UNITREE_LEGGED_SDK::HighCmd ToLcm(unitree_legged_msgs::HighCmd&, UNITREE_LEGGED_SDK::HighCmd)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:310:27: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘commVersion’
  310 |     lcm.commVersion = ros.commVersion;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:311:23: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘robotID’
  311 |     lcm.robotID = ros.robotID;
      |                       ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:312:18: error: cannot convert ‘unitree_legged_msgs::HighCmd_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} to ‘uint32_t’ {aka ‘unsigned int’} in assignment
  312 |     lcm.SN = ros.SN;
      |              ~~~~^~
      |                  |
      |                  unitree_legged_msgs::HighCmd_<std::allocator<void> >::_SN_type {aka boost::array<unsigned int, 2>}
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:315:28: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘forwardSpeed’
  315 |     lcm.forwardSpeed = ros.forwardSpeed;
      |                            ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:316:25: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘sideSpeed’
  316 |     lcm.sideSpeed = ros.sideSpeed;
      |                         ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:317:27: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘rotateSpeed’
  317 |     lcm.rotateSpeed = ros.rotateSpeed;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h: In function ‘UNITREE_LEGGED_SDK::HighCmd ToLcm(unitree_legged_msgs::HighCmd&, UNITREE_LEGGED_SDK::HighCmd)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:310:27: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘commVersion’
  310 |     lcm.commVersion = ros.commVersion;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:320:19: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘yaw’
  320 |     lcm.yaw = ros.yaw;
      |                   ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:321:21: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘pitch’
  321 |     lcm.pitch = ros.pitch;
      |                     ^~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:311:23: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘robotID’
  311 |     lcm.robotID = ros.robotID;
      |                       ^~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:322:20: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘roll’
  322 |     lcm.roll = ros.roll;
      |                    ^~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:312:18: error: cannot convert ‘unitree_legged_msgs::HighCmd_<std::allocator<void> >::_SN_type’ {aka ‘boost::array<unsigned int, 2>’} to ‘uint32_t’ {aka ‘unsigned int’} in assignment
  312 |     lcm.SN = ros.SN;
      |              ~~~~^~
      |                  |
      |                  unitree_legged_msgs::HighCmd_<std::allocator<void> >::_SN_type {aka boost::array<unsigned int, 2>}
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:315:28: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘forwardSpeed’
  315 |     lcm.forwardSpeed = ros.forwardSpeed;
      |                            ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:316:25: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘sideSpeed’
  316 |     lcm.sideSpeed = ros.sideSpeed;
      |                         ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:317:27: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘rotateSpeed’
  317 |     lcm.rotateSpeed = ros.rotateSpeed;
      |                           ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:330:32: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘AppRemote’
  330 |         lcm.AppRemote[i] = ros.AppRemote[i];
      |                                ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:320:19: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘yaw’
  320 |     lcm.yaw = ros.yaw;
      |                   ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:321:21: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘pitch’
  321 |     lcm.pitch = ros.pitch;
      |                     ^~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:322:20: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘roll’
  322 |     lcm.roll = ros.roll;
      |                    ^~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/include/convert.h:330:32: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘AppRemote’
  330 |         lcm.AppRemote[i] = ros.AppRemote[i];
      |                                ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp: In function ‘int mainHelper(int, char**, TLCM&)’:
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:61:21: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘forwardSpeed’
   61 |         SendHighROS.forwardSpeed = 0.0f;
      |                     ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:62:21: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘sideSpeed’
   62 |         SendHighROS.sideSpeed = 0.0f;
      |                     ^~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:63:21: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘rotateSpeed’
   63 |         SendHighROS.rotateSpeed = 0.0f;
      |                     ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:67:21: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘roll’
   67 |         SendHighROS.roll  = 0;
      |                     ^~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:68:21: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘pitch’
   68 |         SendHighROS.pitch = 0;
      |                     ^~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:69:21: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘yaw’
   69 |         SendHighROS.yaw = 0;
      |                     ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:78:25: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘pitch’
   78 |             SendHighROS.pitch = 0.3f;
      |                         ^~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:83:25: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘yaw’
   83 |             SendHighROS.yaw = 0.2f;
      |                         ^~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:107:25: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘forwardSpeed’
  107 |             SendHighROS.forwardSpeed = 0.1f; // -1  ~ +1
      |                         ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:112:25: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘forwardSpeed’
  112 |             SendHighROS.forwardSpeed = -0.2f; // -1  ~ +1
      |                         ^~~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:117:25: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘rotateSpeed’
  117 |             SendHighROS.rotateSpeed = 0.1f;   // turn
      |                         ^~~~~~~~~~~
/home/staycoolish/catkin_ws/src/unitree_ros_to_real/unitree_legged_real/src/exe/walk_mode.cpp:122:25: error: ‘unitree_legged_msgs::HighCmd’ {aka ‘struct unitree_legged_msgs::HighCmd_<std::allocator<void> >’} has no member named ‘rotateSpeed’
  122 |             SendHighROS.rotateSpeed = -0.1f;   // turn
      |                         ^~~~~~~~~~~
make[2]: *** [unitree_ros_to_real/unitree_legged_real/CMakeFiles/torque_lcm.dir/build.make:63: unitree_ros_to_real/unitree_legged_real/CMakeFiles/torque_lcm.dir/src/exe/torque_mode.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1916: unitree_ros_to_real/unitree_legged_real/CMakeFiles/torque_lcm.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** [unitree_ros_to_real/unitree_legged_real/CMakeFiles/position_lcm.dir/build.make:63: unitree_ros_to_real/unitree_legged_real/CMakeFiles/position_lcm.dir/src/exe/position_mode.cpp.o] Error 1
make[2]: *** [unitree_ros_to_real/unitree_legged_real/CMakeFiles/velocity_lcm.dir/build.make:63: unitree_ros_to_real/unitree_legged_real/CMakeFiles/velocity_lcm.dir/src/exe/velocity_mode.cpp.o] Error 1
make[2]: *** [unitree_ros_to_real/unitree_legged_real/CMakeFiles/walk_lcm.dir/build.make:63: unitree_ros_to_real/unitree_legged_real/CMakeFiles/walk_lcm.dir/src/exe/walk_mode.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1694: unitree_ros_to_real/unitree_legged_real/CMakeFiles/velocity_lcm.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:2161: unitree_ros_to_real/unitree_legged_real/CMakeFiles/position_lcm.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:1804: unitree_ros_to_real/unitree_legged_real/CMakeFiles/walk_lcm.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
Invoking "make -j8 -l8" failed

What is wrong?
What is the right way to build this environment?

I appreciate any help. If there is any tutorial on this, I would like to check it as well. I tried everything (in bashrc., all the variables are defined, which are:

source /opt/ros/melodic/setup.bash
source /usr/share/gazebo-8/setup.sh
source ~/catkin_ws/devel/setup.bash
export ROS_PACKAGE_PATH=~/catkin_ws:${ROS_PACKAGE_PATH}
export GAZEBO_PLUGIN_PATH=~/catkin_ws/devel/lib:${GAZEBO_PLUGIN_PATH}
export LD_LIBRARY_PATH=~/catkin_ws/devel/lib:${LD_LIBRARY_PATH}
# 3_1, 3_2
export UNITREE_SDK_VERSION=3_2
export UNITREE_LEGGED_SDK_PATH=~/unitree_legged_sdk
export ALIENGO_SDK_PATH=~/aliengo_sdk
# amd64, arm32, arm64
export UNITREE_PLATFORM="amd64"

What is wrong is a mystery to me. Thank you.

ROS 2 Support?

Hi,

I have an A1 with the expressed goal of making it work with the new and improved ROS 2 navigation2 system. Do you have drivers that work with ROS 2 foxy or any of the ROS2 distributions?

TF tree AlienGo

Hi @TrivasZhang @Zhaiweiwei0 @ZKBian,

In order to publish the TF tree of the robot I would have to need access to the joint states information of the robot (i.e. the motor state information).

But there is a problem. I can only access those info if I am in low level mode, which is not convenient.

Unfortunately, without the motor info I cannot publish the tf frame....

Is there a way to add motor state information to the high state info? Or run both high level and low level connections at the same time?

Low level control does not update

The three examples provided for the ros driver in low level control does not work i.e. update motor position. For example after running position control the there should be printed the current position of the front right joint but it prints 0.0 though moving the joint also don't update. Similar is true for other two torque and velocity example. Walking example works very fine.

FYI: Similar examples in unitree_legged_sdk works very fine.

Package Built Error

I am trying to build unitree_ros package but no success. Here are the steps I followed for the installations:

sudo apt install libboost-all-dev
sudo apt install liblcm-dev
sudo apt install cmake
sudo apt-get install ros-melodic-controller-interface ros-melodic-gazebo-ros-control ros-melodic-joint-state-controller ros-melodic-effort-controllers ros-melodic-joint-trajectory-controller

Now I believe all the dependencies would have been installed to latest stable release.
Now I exactly followed the same procedure as in the Readme:

  1. To build unitree_legged_sdk
git clone https://github.com/unitreerobotics/unitree_legged_sdk
cd unitree_legged_sdk
mkdir build
cd build
cmake ..
make
  1. To build aliengo sdk:
git clone https://github.com/unitreerobotics/aliengo_sdk
cd aliengo_sdk
mkdir build
cd build
cmake ..
make

  1. Creating Catkin_ws and adding unitree_ros
mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://github.com/unitreerobotics/unitree_ros
cd ..
catkin build

Now all of the below environment variable and source commands exist in .bashrc

source /opt/ros/melodic/setup.bash
source /usr/share/gazebo-9/setup.sh
source ~/catkin_ws/devel/setup.bash
export ROS_PACKAGE_PATH=~/catkin_ws:${ROS_PACKAGE_PATH}
export GAZEBO_PLUGIN_PATH=~/catkin_ws/devel/lib:${GAZEBO_PLUGIN_PATH}
export LD_LIBRARY_PATH=~/catkin_ws/devel/lib:${LD_LIBRARY_PATH}
export UNITREE_LEGGED_SDK_PATH=~/unitree_legged_sdk
export ALIENGO_SDK_PATH=~/aliengo_sdk
export UNITREE_PLATFORM="amd64"

After the build, unitree_legged_real package is not build giving the error:


make[2]: *** No rule to make target 'CMakeFiles/lcm_server_3_1.dir/build'.  Stop.
make[1]: *** [CMakeFiles/lcm_server_3_1.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** No rule to make target 'CMakeFiles/lcm_server_3_2.dir/build'.  Stop.
make[1]: *** [CMakeFiles/lcm_server_3_2.dir/all] Error 2
/home/mbs/catkin_ws/src/unitree_ros/unitree_legged_real/src/exe/walk_mode.cpp:13:10: fatal error: unitree_legged_sdk/unitree_legged_sdk.h: No such file or directory
 #include "unitree_legged_sdk/unitree_legged_sdk.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/walk_lcm.dir/src/exe/walk_mode.cpp.o] Error 1
make[1]: *** [CMakeFiles/walk_lcm.dir/all] Error 2
/home/mbs/catkin_ws/src/unitree_ros/unitree_legged_real/src/exe/velocity_mode.cpp:13:10: fatal error: unitree_legged_sdk/unitree_legged_sdk.h: No such file or directory
 #include "unitree_legged_sdk/unitree_legged_sdk.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/velocity_lcm.dir/src/exe/velocity_mode.cpp.o] Error 1
make[1]: *** [CMakeFiles/velocity_lcm.dir/all] Error 2
/home/mbs/catkin_ws/src/unitree_ros/unitree_legged_real/src/exe/torque_mode.cpp:12:10: fatal error: unitree_legged_sdk/unitree_legged_sdk.h: No such file or directory
 #include "unitree_legged_sdk/unitree_legged_sdk.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/torque_lcm.dir/src/exe/torque_mode.cpp.o] Error 1
make[1]: *** [CMakeFiles/torque_lcm.dir/all] Error 2
/home/mbs/catkin_ws/src/unitree_ros/unitree_legged_real/src/exe/position_mode.cpp:13:10: fatal error: unitree_legged_sdk/unitree_legged_sdk.h: No such file or directory
 #include "unitree_legged_sdk/unitree_legged_sdk.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/position_lcm.dir/src/exe/position_mode.cpp.o] Error 1
make[1]: *** [CMakeFiles/position_lcm.dir/all] Error 2
make: *** [all] Error 2
cd /home/mbs/catkin_ws/build/unitree_legged_real; catkin build --get-env unitree_legged_real | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -

All the environment variables are correctly set but still it is not able to find unitree_legged_sdk.

rosPC:~$ printenv | grep "UNITREE"
UNITREE_PLATFORM=amd64
UNITREE_LEGGED_SDK_PATH=/home/mbs/unitree_legged_sdk

Is there anything which I am missing or something else needs to be done?
Any leads/help will highly be appreciated.

Build error

Errors << unitree_controller:make /workspace/logs/unitree_controller/build.make.005.log
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp: In member function 'void multiThread::FRfootCallback(const WrenchStamped&)':
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:170:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[0].x = msg.wrench.force.x;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:171:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[0].y = msg.wrench.force.y;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:172:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[0].z = msg.wrench.force.z;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp: In member function 'void multiThread::FLfootCallback(const WrenchStamped&)':
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:178:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[1].x = msg.wrench.force.x;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:179:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[1].y = msg.wrench.force.y;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:180:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[1].z = msg.wrench.force.z;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp: In member function 'void multiThread::RRfootCallback(const WrenchStamped&)':
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:186:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[2].x = msg.wrench.force.x;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:187:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[2].y = msg.wrench.force.y;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:188:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[2].z = msg.wrench.force.z;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp: In member function 'void multiThread::RLfootCallback(const WrenchStamped&)':
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:194:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[3].x = msg.wrench.force.x;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:195:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[3].y = msg.wrench.force.y;
^~~~~~~
footForce
/workspace/src/unitree_ros/unitree_controller/src/servo.cpp:196:18: error: 'unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}' has no member named 'eeForce'; did you mean 'footForce'?
lowState.eeForce[3].z = msg.wrench.force.z;
^~~~~~~
footForce
make[2]: *** [CMakeFiles/unitree_servo.dir/src/servo.cpp.o] Error 1
make[1]: *** [CMakeFiles/unitree_servo.dir/all] Error 2
make: *** [all] Error 2
cd /workspace/build/unitree_controller; catkin build --get-env unitree_controller | catkin env -si /usr/bin/make --jobserver-fds=6,7 -j; cd -
..................................................................
Failed << unitree_controller:make [ Exited with code 2 ]
Failed <<< unitree_controller [ 6.8 seconds ]
[build] Summary: 6 of 7 packages succeeded.
[build] Ignored: None.
[build] Warnings: None.
[build] Abandoned: None.
[build] Failed: 1 packages failed.
[build] Runtime: 7.2 seconds total.

Cannot install unitree_legged_real

Hello, I have problem when doiing catkin_make on unitree_legged_real:

[ 84%] Linking CXX executable /home/hansen/catkin_ws/devel/lib/unitree_legged_real/walk_lcm
/usr/bin/ld: cannot find -lunitree_legged_sdk_
/usr/bin/ld: cannot find -laliengo_comm
collect2: error: ld returned 1 exit status

I have followed the instruction to install unitree_legged_sdk and aliengo_sdk, but it seems that the catkin_make cannot find this library. Does anyone have idea of a solution?

Thanks

报错

unitree_ros里面的unitree_legged_real的CmakeLists,最后的add_dependencies里的{PEOJECT_NAME}打错了,应该是PROJECT,后面都是复制粘贴的所以都错了

Control the Go1 robot with the topic and rosmaster

Hello,
I tried to use directly the topic to receive information about camera... and to send information in topics.
For that, we use the network connection with rosmaster, and in WiFi. We can see all the topics of the robot but the problem is that we didn't receive any information with the command "rostopic echo /topic".
Can you help me, please.

has no member named ‘eeForce’

error: ‘unitree_legged_msgs::LowState {aka struct unitree_legged_msgs::LowState_<std::allocator >}’ has no member named ‘eeForce’; did you mean ‘footForce’?
lowState.eeForce[0].x = msg.wrench.force.x;
How to solve this problem?

Build error


** Visual Studio 2019 Developer Command Prompt v16.11.15
** Copyright (c) 2021 Microsoft Corporation


[vcvarsall.bat] Environment initialized for: 'x64'

C:\Windows\System32>call C:\catkin_ws\devel\setup.bash
'C:\catkin_ws\devel\setup.bash' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\System32>call C:\catkin_ws\devel\setup.bat

C:\Windows\System32>call C:\opt\ros\melodic\x64\setup.bt
'C:\opt\ros\melodic\x64\setup.bt' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\System32>call C:\opt\ros\melodic\x64\setup.bat

C:\Windows\System32>rosrun unitre_controller unitree_servo
[rospack] Error: package 'unitre_controller' not found

C:\Windows\System32>call C:\catkin_ws\devel\setup.bat

C:\Windows\System32>rosrun unitre_controller unitree_servo
[rospack] Error: package 'unitre_controller' not found

C:\Windows\System32>cd C:\catkin_ws

C:\catkin_ws>catkin_make
Base path: C:\catkin_ws
Source space: C:\catkin_ws\src
Build space: C:\catkin_ws\build
Devel space: C:\catkin_ws\devel
Install space: C:\catkin_ws\install

Running command: "nmake cmake_check_build_system" in "C:\catkin_ws\build"

Microsoft (R) Program Maintenance Utility Version 14.29.30145.0
Copyright (C) Microsoft Corporation. All rights reserved.

Running command: "nmake" in "C:\catkin_ws\build"

Microsoft (R) Program Maintenance Utility Version 14.29.30145.0
Copyright (C) Microsoft Corporation. All rights reserved.

[ 2%] Built target Project__setup_util.py_exec_install_python
[ 2%] Built target geometry_msgs_generate_messages_lisp
[ 2%] Built target std_msgs_generate_messages_lisp
[ 2%] Built target sensor_msgs_generate_messages_lisp
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_HighCmd
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_Cartesian
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_LowState
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_LED
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_MotorState
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_BmsCmd
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_IMU
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_HighState
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_BmsState
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_MotorCmd
[ 2%] Built target _unitree_legged_msgs_generate_messages_check_deps_LowCmd
[ 15%] Built target unitree_legged_msgs_generate_messages_lisp
[ 15%] Built target geometry_msgs_generate_messages_cpp
[ 15%] Built target sensor_msgs_generate_messages_cpp
[ 15%] Built target std_msgs_generate_messages_cpp
[ 28%] Built target unitree_legged_msgs_generate_messages_cpp
[ 28%] Built target geometry_msgs_generate_messages_py
[ 28%] Built target sensor_msgs_generate_messages_py
[ 28%] Built target std_msgs_generate_messages_py
[ 42%] Built target unitree_legged_msgs_generate_messages_py
[ 42%] Built target std_msgs_generate_messages_eus
[ 42%] Built target geometry_msgs_generate_messages_eus
[ 42%] Built target sensor_msgs_generate_messages_eus
[ 56%] Built target unitree_legged_msgs_generate_messages_eus
[ 56%] Built target geometry_msgs_generate_messages_nodejs
[ 56%] Built target sensor_msgs_generate_messages_nodejs
[ 56%] Built target std_msgs_generate_messages_nodejs
[ 69%] Built target unitree_legged_msgs_generate_messages_nodejs
[ 69%] Built target unitree_legged_msgs_generate_messages
[ 69%] Built target unitree_legged_msgs_gencpp
[ 70%] Linking CXX shared library C:\catkin_ws\devel\bin\unitree_legged_control.dll
LINK Pass 1: command "C:\PROGRA2\MICROS2\2019\COMMUN1\VC\Tools\MSVC\14291.301\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\unitree_legged_control.dir\objects1.rsp /out:C:\catkin_ws\devel\bin\unitree_legged_control.dll /implib:C:\catkin_ws\devel\lib\unitree_legged_control.lib /pdb:C:\catkin_ws\devel\bin\unitree_legged_control.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL /DEF:CMakeFiles\unitree_legged_control.dir\exports.def -LIBPATH:C:\catkin_ws\src\unitree_ros\unitree_legged_control\ -LIBPATH:C:\catkin_ws\src\unitree_ros\unitree_legged_control\lib C:\opt\ros\melodic\x64\lib\class_loader.lib C:\opt\ros\melodic\x64\lib\PocoFoundation.lib C:\opt\ros\melodic\x64\lib\roslib.lib C:\opt\ros\melodic\x64\lib\rospack.lib C:\opt\ros\melodic\x64\libs\python27.lib C:\opt\ros\melodic\x64\lib\boost_program_options-vc141-mt-x64-1_66.lib C:\opt\ros\melodic\x64\lib\tinyxml2.lib C:\opt\ros\melodic\x64\lib\realtime_tools.lib C:\opt\ros\melodic\x64\lib\roscpp.lib C:\opt\ros\melodic\x64\lib\boost_filesystem-vc141-mt-x64-1_66.lib C:\opt\ros\melodic\x64\lib\rosconsole.lib C:\opt\ros\melodic\x64\lib\rosconsole_log4cxx.lib C:\opt\ros\melodic\x64\lib\rosconsole_backend_interface.lib C:\opt\ros\melodic\x64\lib\log4cxx.lib C:\opt\ros\melodic\x64\lib\boost_regex-vc141-mt-x64-1_66.lib C:\opt\ros\melodic\x64\lib\xmlrpcpp.lib C:\opt\ros\melodic\x64\lib\roscpp_serialization.lib C:\opt\ros\melodic\x64\lib\rostime.lib C:\opt\ros\melodic\x64\lib\cpp_common.lib C:\opt\ros\melodic\x64\lib\boost_system-vc141-mt-x64-1_66.lib C:\opt\ros\melodic\x64\lib\boost_thread-vc141-mt-x64-1_66.lib C:\opt\ros\melodic\x64\lib\boost_chrono-vc141-mt-x64-1_66.lib C:\opt\ros\melodic\x64\lib\boost_date_time-vc141-mt-x64-1_66.lib C:\opt\ros\melodic\x64\lib\boost_atomic-vc141-mt-x64-1_66.lib C:\opt\ros\melodic\x64\lib\console_bridge.lib unitree_joint_control_tool.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\unitree_legged_control.dir/intermediate.manifest CMakeFiles\unitree_legged_control.dir/manifest.res" failed (exit code 1104) with the following output:
LINK : fatal error LNK1104: cannot open file 'unitree_joint_control_tool.lib'
NMAKE : fatal error U1077: 'C:\opt\ros\melodic\x64\lib\site-packages\cmake\data\bin\cmake.exe' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
Invoking "nmake" failed

CMake error (unitree_legged_msgs)

Hi everyone,
I'm a beginner in ROS and I looked on several forums but didn't get the solution for this specific problem of package if i understand well.
I cloned the Unitree_ros Git and followed the Tutorial under but when i launch the "catkin_make" I have this error:

CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by
"unitree_legged_msgs" with any of the following names:

unitree_legged_msgsConfig.cmake
unitree_legged_msgs-config.cmake

Add the installation prefix of "unitree_legged_msgs" to CMAKE_PREFIX_PATH
or set "unitree_legged_msgs_DIR" to a directory containing one of the above
files. If "unitree_legged_msgs" provides a separate development package or
SDK, be sure it has been installed.
Call Stack (most recent call first):
unitree_ros/unitree_legged_control/CMakeLists.txt:4 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/odysse/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/odysse/catkin_ws/build/CMakeFiles/CMakeError.log".
Makefile:320: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed

Have you ever get it and if yes how can I solve it please?

Cannot find -lunitree_legged_sdk_amd64

Hi,
when I try to catkin_make I obtain this error:

[ 82%] Building CXX object unitree_ros_to_real/unitree_legged_real/CMakeFiles/walk_lcm.dir/src/exe/walk_mode.cpp.o
[ 83%] Building CXX object unitree_ros_to_real/unitree_legged_real/CMakeFiles/position_lcm.dir/src/exe/position_mode.cpp.o
/usr/bin/ld: skipping incompatible /home/parallels/capstone/capstone_ws/src/unitree_legged_sdk/lib/libunitree_legged_sdk_amd64.so when searching for -lunitree_legged_sdk_amd64
/usr/bin/ld: cannot find -lunitree_legged_sdk_amd64
collect2: error: ld returned 1 exit status
make[2]: *** [unitree_ros_to_real/unitree_legged_real/CMakeFiles/torque_lcm.dir/build.make:101: /home/parallels/capstone/capstone_ws/devel/lib/unitree_legged_real/torque_lcm] Error 1
make[1]: *** [CMakeFiles/Makefile2:2697: unitree_ros_to_real/unitree_legged_real/CMakeFiles/torque_lcm.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 85%] Linking CXX executable /home/parallels/capstone/capstone_ws/devel/lib/unitree_legged_real/walk_lcm
[ 86%] Linking CXX executable /home/parallels/capstone/capstone_ws/devel/lib/unitree_legged_real/position_lcm
/usr/bin/ld: skipping incompatible /home/parallels/capstone/capstone_ws/src/unitree_legged_sdk/lib/libunitree_legged_sdk_amd64.so when searching for -lunitree_legged_sdk_amd64
/usr/bin/ld: cannot find -lunitree_legged_sdk_amd64
collect2: error: ld returned 1 exit status
make[2]: *** [unitree_ros_to_real/unitree_legged_real/CMakeFiles/position_lcm.dir/build.make:101: /home/parallels/capstone/capstone_ws/devel/lib/unitree_legged_real/position_lcm] Error 1
make[1]: *** [CMakeFiles/Makefile2:2753: unitree_ros_to_real/unitree_legged_real/CMakeFiles/position_lcm.dir/all] Error 2
/usr/bin/ld: skipping incompatible /home/parallels/capstone/capstone_ws/src/unitree_legged_sdk/lib/libunitree_legged_sdk_amd64.so when searching for -lunitree_legged_sdk_amd64
/usr/bin/ld: cannot find -lunitree_legged_sdk_amd64
collect2: error: ld returned 1 exit status
make[2]: *** [unitree_ros_to_real/unitree_legged_real/CMakeFiles/walk_lcm.dir/build.make:101: /home/parallels/capstone/capstone_ws/devel/lib/unitree_legged_real/walk_lcm] Error 1
make[1]: *** [CMakeFiles/Makefile2:2641: unitree_ros_to_real/unitree_legged_real/CMakeFiles/walk_lcm.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
Invoking "make -j4 -l4" failed

What I have done is following this pdf tutorial from @andrewhstovell

Can someone help me please ?

hardware_interface issue in simulation

After successfull building I got the following problem when running simulation in Gazebo:

gzserver: /opt/ros/melodic/include/hardware_interface/joint_command_interface.h:60: void hardware_interface::JointHandle::setCommand(double): Assertion `cmd_' failed.
Aborted (core dumped)

Cannot run through the "catkin_make" for building the project at the first time

Hi there,

My Ubuntu is 20.04.2 LTS, and Gazebo is 11. When i first time run the catkin_make to build the workspace, it showed some errors as follows. Anyone know how to solve the problem? Is it the version problem with my Gazebo? Thanks in advance.

/home/szwang/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc: In member function ‘virtual void gazebo::UnitreeDrawForcePlugin::Load(gazebo::rendering::VisualPtr, sdf::v9::ElementPtr)’:
/home/szwang/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc:47:95: error: invalid use of incomplete type ‘class gazebo::common::Color’
47 | this->line->AddPoint(ignition::math::Vector3d(0, 0, 0), common::Color(0, 1, 0, 1.0));
| ^
In file included from /usr/include/gazebo-11/gazebo/common/Console.hh:30,
from /usr/include/gazebo-11/gazebo/common/Events.hh:23,
from /home/szwang/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc:7:
/usr/include/gazebo-11/gazebo/common/CommonTypes.hh:76:11: note: forward declaration of ‘class gazebo::common::Color’
76 | class Color;
| ^~~~~
/home/szwang/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc:48:95: error: invalid use of incomplete type ‘class gazebo::common::Color’
48 | this->line->AddPoint(ignition::math::Vector3d(1, 1, 1), common::Color(0, 1, 0, 1.0));
| ^
In file included from /usr/include/gazebo-11/gazebo/common/Console.hh:30,
from /usr/include/gazebo-11/gazebo/common/Events.hh:23,
from /home/szwang/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc:7:
/usr/include/gazebo-11/gazebo/common/CommonTypes.hh:76:11: note: forward declaration of ‘class gazebo::common::Color’
76 | class Color;
| ^~~~~
/home/szwang/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc:49:37: error: cannot convert ‘const char [14]’ to ‘const MaterialPtr&’ {aka ‘const Ogre::SharedPtrOgre::Material&’}
49 | this->line->setMaterial("Gazebo/Purple");
| ^~~~~~~~~~~~~~~
| |
| const char [14]
In file included from /usr/local/include/OGRE/Ogre.h:114,
from /usr/include/gazebo-11/gazebo/rendering/ogre_gazebo.h:26,
from /usr/include/gazebo-11/gazebo/rendering/Conversions.hh:25,
from /usr/include/gazebo-11/gazebo/rendering/DynamicLines.hh:26,
from /home/szwang/catkin_ws/src/unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc:12:
/usr/local/include/OGRE/OgreSimpleRenderable.h:76:53: note: initializing argument 1 of ‘virtual void Ogre::SimpleRenderable::setMaterial(const MaterialPtr&)’
76 | virtual void setMaterial(const MaterialPtr& mat);
| ~~~~~~~~~~~~~~~~~~~^~~
make[2]: *** [unitree_ros/unitree_gazebo/CMakeFiles/unitreeDrawForcePlugin.dir/build.make:76: unitree_ros/unitree_gazebo/CMakeFiles/unitreeDrawForcePlugin.dir/plugin/draw_force_plugin.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:3504: unitree_ros/unitree_gazebo/CMakeFiles/unitreeDrawForcePlugin.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
Invoking "make -j4 -l4" failed

Many thanks.

How to get torso_odom in the gazebo?

Hi, I want to control a1 in the gazebo and need the gt odom published by the gazebo.
I know the topic of gt odom is "torso_odom". However, the topic always disappears.
How can I fix the problem? Thanks.

resource not found: a1_gazebo

When i am running
roslaunch unitree_gazebo normal.launch rname:=a1`

It gives me the following errors:
xacro: in-order processing became default in ROS Melodic. You can drop the option.
resource not found: a1_gazebo
ROS path [0]=/opt/ros/melodic/share/ros
ROS path [1]=/home/ramil/catkin_ws/src
ROS path [2]=/opt/ros/melodic/share
when processing file: /home/ramil/catkin_ws/src/unitree_ros/robots/a1_description/xacro/robot.xacro
RLException: Invalid tag: Cannot load command parameter [robot_description]: command [['/opt/ros/melodic/lib/xacro/xacro', '--inorder', '/home/ramil/catkin_ws/src/unitree_ros/robots/a1_description/xacro/robot.xacro', 'DEBUG:=false']] returned with code [2].

Param xml is
The traceback for the exception was written to the log file

However, when i am running gazebo for laikago by writing roslaunch unitree_gazebo normal.launch rname:=laikago` everything works well

Problem in foot contact plugin

In foot_contact_plugin.cc:

                for (unsigned int j = 0; j < contacts.contact(i).position_size(); ++j){                 
                    // std::cout << i <<" "<< contacts.contact(i).position_size() <<" Force:"
                    //           << contacts.contact(i).wrench(j).body_1_wrench().force().x() << " "
                    //           << contacts.contact(i).wrench(j).body_1_wrench().force().y() << " "
                    //           << contacts.contact(i).wrench(j).body_1_wrench().force().z() << "\n";
                    Fx += contacts.contact(i).wrench(0).body_1_wrench().force().x(); // Notice: the force is in local coordinate, not in world or base coordnate.
                    Fy += contacts.contact(i).wrench(0).body_1_wrench().force().y();
                    Fz += contacts.contact(i).wrench(0).body_1_wrench().force().z();
                }

Seems like components of wrench(0) are being added to F for multiple times. Maybe this should be wrench(j)?
I understand that the number of contacts should be exactly one, but still this is weird...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.