unitreerobotics / unitree_ros Goto Github PK
View Code? Open in Web Editor NEWLicense: BSD 3-Clause "New" or "Revised" License
License: BSD 3-Clause "New" or "Revised" License
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!
I copied and pasted "mbs_simulation" file to my new catkin_ws folder. Then, I got this problem when I tried to make "catkin build"
The problem: unitree_legged_sdk/unitree_legged_sdk.h: No such file or directory
It seems like: (https://user-images.githubusercontent.com/54208292/164712498-fdbedc1d-cd85-48c1-a5c4-50c148560723.png)
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:
Thanks in advance!
Best
$ 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>
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:
unitree_ros/unitree_gazebo/plugin/draw_force_plugin.cc
Lines 47 to 48 in d16233d
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));
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
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
[ 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?
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)
@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
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:
Could this possibly be a ROS Noetic issue? Any help would be greatly appreciated.
Thank you.
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
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.
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
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
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:
How can I solve this problem?
Thanks in advance!
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!
after using"catkin make"
I have the error: cannot find -lunitree_legged_sdk_amd64
Can someone help me ?
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!
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?
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 ]
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?
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?
Hi,
When will the GO1's SDK (in all it's configs) be uploaded to the main repo?
Thanks
Hi, we have one of A1 robots and we need some simulation testing to run the robot.
When the walking will be available in gazebo? If not, will it be hard to write this package by our own?
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:
cmd_vel
topicimu
) / image / joint states / odometry odom
/ sensor dataI 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
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!
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:
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).
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:
I downloaded unitree_legged_sdk version 3.2; put it into catkin_ws/src; and then built it.
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.
Hi, i'm going to do some simulation on aliengo+z1 and test some algorithms. Could you please upload the z1 model? Thanks.
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?
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?
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.
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:
git clone https://github.com/unitreerobotics/unitree_legged_sdk
cd unitree_legged_sdk
mkdir build
cd build
cmake ..
make
git clone https://github.com/unitreerobotics/aliengo_sdk
cd aliengo_sdk
mkdir build
cd build
cmake ..
make
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.
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.
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,后面都是复制粘贴的所以都错了
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.
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?
** 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
Microsoft (R) Program Maintenance Utility Version 14.29.30145.0
Copyright (C) Microsoft Corporation. All rights reserved.
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
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?
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 ?
How can we achieve joystick functionality such as the various motions in sport mode: forward, backward, translating left and right, and pitch row using ROS?
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)
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.
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.
ros 运行rviz时出现 QXcbConnection: XCB error: 148 错误
qt.qpa.screen: QXcbConnection: Could not connect to display
How to solve it??????
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
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...
Hi there,
I saw in the unitree_ros github description, it says that the "joint_controller.cpp" in folder "unitree_legged_control" contains the joints controllers for simulation, where we can control joints with position, velocity and torque. But the detailed examples about how to use it are lacking. So I was wondering if there are some tutorials about this controller.
Thanks a lot!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.