Legged_control复现&OCS2安装&相关问题&[spawn_urdf-4]问题解决

1. 前言

砚上三五笔,落墨鹧鸪啼

本文用于记录OCS2的安装、所遇见过程以及后续的MPC FOR GO2等
如有不对,欢迎评论区指正!

2. 正文

2.1 OCS2安装

方法见:https://blog.csdn.net/qq_52505878/article/details/148608776
更详细的安装方法见:https://zhuanlan.zhihu.com/p/682704448
遇到的问题请见2.3问题记录

2.2 legged_robot库记录

安装运行步骤网上有很多详细的教程这里不再赘述。我重点记录自己所遇到的问题等。

image
image

2.3 问题记录

I. python版本的问题

-- Could NOT find PY_em (missing: PY_EM) 
CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):
  Unable to find either executable 'empy' or Python module 'em'...  try
  installing the package 'python3-empy'

解决方法:

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

因为catkin找的python版本为anaconda下面的版本,所以更改为系统的python版本,不要卸载empy
image

II. boost安装

这个步骤很重要,不清楚具体的流程的可以查看我这里的控制台输出:
image

III. 安装过程中一些功能包报错

编译的时候这个最主要的包编译不成功,我在catkin build后面加上了 -DPYTHON_EXECUTABLE=/usr/bin/python3也没用。。。
image
我怀疑是这个问题:
Errors << ocs2_legged_robot_ros:make /home/yyds/ocs2_ws/logs/ocs2_legged_robot_ros/build.make.000.log
解决方法:清理掉之前的坏死文件,重新catkin build

cd ~/ocs2_ws
catkin clean -y
catkin build

把之前的Build devel等清理掉,然后重新编译就可以了,猜测是原来编译的部分错误导致后面没有覆盖掉。
然后先编译elevation_mapping_cupy:

cd ~/ocs2_ws
catkin build elevation_mapping_cupy -DPYTHON_EXECUTABLE=/usr/bin/python3

再编译ocs2的部分功能包,这时如果电脑设备的性能有限,可以在后面加上 -j8,这个意思是限制为最多8个并行环境,因为最新的默认的并行环境的数量为24,这对一些电脑的性能要求过高。。可能会导致电脑卡死。。。

然后试着编译:

catkin build ocs2 -DPYTHON_EXECUTABLE=/usr/bin/python3 -j8 # 不推荐
或者
catkin build ocs2_legged_robot_ros ocs2_self_collision_visualization -DPYTHON_EXECUTABLE=/usr/bin/python3 -j8 #推荐 省事不容易出错

如果成功恭喜你,解决了问题。

image

我的工作空间目录:文件指引
image

IV. 新的环境没有叫这个功能包的名字

image

小白常常犯这个错误,在切到新的工作环境的时候没有重新source setup.bash,这样就不认识这个工作环境了

我们在学习ROS的过程中应该有了解环境变量这个概念。像一些我们通过apt-get命令安装的一些软件通常在安装过程中就配置了相关的环境变量,使得我们无论在哪个位置打开终端,都能直接运行它相关的launch文件。但是我们在github上或者其它位置上下载的功能包是没有在系统中配置相关的环境变量的,因此成功编译后,系统并没有检测到有这个launch文件存在,所以需要我们手动刷新一下环境变量。

一种暂时的方法是:

cd ~/catkin_ws
source ./devel/setup.bash  #刷新环境变量

另一种永久的方法是将这个bash写进.bashrc里面,一劳永逸,这样无论在哪个控制台打开都可以默认激活了这个bash

sudo vim ~/.bashrc
source /home/.....绝对路径...../devel/setup.bash #写上绝对路径,在rc文末添加即可
source ~/.bashrc  #保存文件,默认生效

V. gazebo里面[spawn_urdf-4]的问题,没有模型文件

遇到一个非常奇怪的问题,问题描述:就是我能正常运行,但是就是没有机器人的模型文件,这让我很是气愤。。。。网上的各种方法都试过了:
image

网上已知的解决方法一共有三种,可见博客和issue讨论部分:

reload(sys)
sys.setdefaultencoding("utf-8")

但是我上述方法都不可以!!!!!!
我今天早上调试的时候偶然注意到这会不会是其他问题导致的报错,因此我重点查看了其他地方有没有问题,果然让我找到了一处问题:
image

猜测是这里引起的[spawn_urdf-4]问题,我之前也遇到过,这其实就是GLIBCXX版本不对,需要软连接的方式来解决,而非网上其他地方所说的问题。

解决方法:
可以参考这篇博客的方法,但不要照搬,因为我的问题和他还不完全一样: 相似的问题软连接更换

报错内容提示在这个路径下没有GLIBCXX_3.4.26这个版本的

libstdc++ 是 GNU 项目提供的 C++ 标准库实现,通常与 GCC(GNU Compiler Collection)一起使用。
在编译或运行 C++ 程序时,如果使用了 libstdc++,相关的动态库(如 libstdc++.so)会被加载。
所有 libstdc++ 导出的符号(函数、类等)都以 GLIBCXX_ 开头,例如:
GLIBCXX_3.4.29
GLIBCXX_3.4.30

ImportError: /home/yyds/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /opt/ros/noetic/lib/libtf2.so)

我先后通过命令:

strings /home/yyds/anaconda3/lib/libstdc++.so.6.0.25 | grep GLIBCXX
以及
strings /home/yyds/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/lib/libstdc++.so.6.0.26 | grep GLIBCXX

前者确实没有发现它要求的3.4.26版本
image
但后者发现有:
image

其实一个是6.0.26,另一个和是6.0.25
image

最后只需要通过软连接切换一下就可以了:
image

sudo rm -rf ./libstdc++.so.6
sudo ln -s ./libstdc++.so.6.0.26 ./libstdc++.so.6

控制台运行命令roslaunch legged_unitree_description empty_world.launch 没报错,问题解决,出现了机械狗
image

image

VI

打开gazebo的终端

roslaunch gazebo_ros empty_world.launch

2.4 代码简介

原始链接:https://blog.csdn.net/qq_26565435/article/details/148614713
下面是个人的摘要:

  • 状态估计器可以估计的状态量xHat_均为当前世界坐标系{s}下的机器人状态:(1)机身位置pb;(2)机身速度vb;(3)四个足端位置p0,p1,p2,p3。
  • 将机身加速度视为系统输入u,可以推导得到系统状态方程。这里输入u就是机身加速度,这个量通过IMU得到。通过IMU可以得到世界坐标系{s}下的机身姿态Rsb,机身坐标系{b}下的加速度ab,以及旋转角速度wb。
  • 这里设置输出y的维数=28,y << ps_, vs_, feetHeights_。ps_表示足端相对于机身坐标系{b}的位置在世界坐标系{s}中的描述,vs_表示足端相对于机身本体坐标系{b}的速度在世界坐标系{s}中的描述,feetHeights_表示足端高度均为0。

在状态估计器的实现阶段,卡尔曼滤波器状态更新函数,实时运行,融合IMU和足端传感器数据进行状态估计。IMU中的加速度计和陀螺仪只能提供机身姿态和线加速度,机身位置、速度以及足端位置需要通过卡尔曼滤波器融合IMU和足端传感器数据进行估计xHat_;如果外部传感器例如视觉、激光雷达、Vicon等有新数据,通过updateFromTopic()函数更新xHat_的位置信息,提高状态估计的精度;周期性执行,适用于高频状态估计。

3. 后记

To be continued.......

posted @ 2025-07-29 15:51  泪水下的笑靥  阅读(260)  评论(0)    收藏  举报