当前位置: 首页 > news >正文

读hunter_bipedal_control-main

逆天gpt把我原本几乎配置好的项目搞崩了,所以重新按照网上的教程配置一下

配置ROS1-Noetic

首先是ROS
软件与更新里面把所有选齐
在这里插入图片描述
“更新”里面也设置好,要不然就会一直报依赖项安装不上的错
然后照着官网从1.2开始就可以


sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

设置密钥 安装


sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654sudo apt updatesudo apt install ros-noetic-desktop-full

设置环境,把source /opt/ros/noetic/setup.bash写进~/.bashrc然后source ~/.bashrc

后面可能有些操作会把一些noetic的一些相关包搞坏需要卸载,需要保证重新走一遍安装过程安装好,要不然后面会有一个叫hardware什么的包安装一直报错

配置OCS2

依赖项


mkdir -p ~/ocs2_ws/src
cd ~/ocs2_ws/src
git clone https://github.com/leggedrobotics/ocs2.gitsudo apt-get update
sudo apt-get install libeigen3-devwget https://boostorg.jfrog.io/artifactory/main/release/1.71.0/source/boost_1_71_0.tar.bz2
tar --bzip2 -xf boost_1_71_0.tar.bz2cd boost_1_71_0
./bootstrap.shsudo ./b2 installsudo apt install ros-noetic-catkin libglpk-dev libglfw3-dev ros-noetic-pybind11-catkin python3-catkin-tools doxygen doxygen-latex liburdfdom-dev liboctomap-dev libassimp-dev ros-noetic-grid-map-msgs ros-noetic-octomap-msgs libreadline-dev libcgal-dev
sudo apt-get install ros-noetic-rqt-multiplot
sudo apt update && sudo apt install checkinstallcd ~/ocs2_ws/srcgit clone --recurse-submodules https://github.com/leggedrobotics/pinocchio.git
git clone --recurse-submodules https://github.com/leggedrobotics/hpp-fcl.git
git clone https://github.com/leggedrobotics/ocs2_robotic_assets.git
git clone --depth 1 https://github.com/raisimTech/raisimLib.git -b v1.1.01
git clone https://github.com/leggedrobotics/elevation_mapping_cupy.git
git clone https://github.com/ANYbotics/grid_map.git
git clone https://github.com/leggedrobotics/ocs2.git

安装

这里的raisimLib绝对要在这一步完成,否则很卡后面


cd ~/ocs2_ws/src/raisimLib
mkdir build
cd build
cmake .. 
make -j4 && sudo checkinstallcd /tmp
wget https://github.com/microsoft/onnxruntime/releases/download/v1.7.0/onnxruntime-linux-x64-1.7.0.tgz
tar xf onnxruntime-linux-x64-1.7.0.tgz
mkdir -p ~/.local/bin ~/.local/include/onnxruntime ~/.local/lib ~/.local/share/cmake/onnxruntime
rsync -a /tmp/onnxruntime-linux-x64-1.7.0/include/ ~/.local/include/onnxruntime
rsync -a /tmp/onnxruntime-linux-x64-1.7.0/lib/ ~/.local/lib
rsync -a ~/ocs2_ws/src/ocs2/ocs2_mpcnet/ocs2_mpcnet_core/misc/onnxruntime/cmake/ ~/.local/share/cmake/onnxruntime
mkdir -p ~/.local/share/onnxruntime/cmake/
rsync -a ~/ocs2_ws/src/ocs2/ocs2_mpcnet/ocs2_mpcnet_core/misc/onnxruntime/cmake/ ~/.local/share/onnxruntime/cmake/
  • 把下面的写进bashrc并source,注意换成自己的用户名!!!

    
    export CMAKE_PREFIX_PATH=/home/!!!/ocs2_ws/src/raisimLib/build:$CMAKE_PREFIX_PATH
    export onnxruntime_DIR=~/.local/
    export LD_LIBRARY_PATH=/home/!!!/.local/lib:$LD_LIBRARY_PATH

    顺便一直以来bashrc里其实有不少重复的玩意,所以整了个去重可以放到结尾,以免环境变量冲突

    
    remove_duplicates() {echo "$1" | tr ':' '\n' | awk '!seen[$0]++' | grep -v '^$' | tr '\n' ':' | sed 's/:$//'
    }# 去除重复路径并移除末尾多余的 ":"
    export LD_LIBRARY_PATH=$(remove_duplicates "$LD_LIBRARY_PATH")
    export CMAKE_PREFIX_PATH=$(remove_duplicates "$CMAKE_PREFIX_PATH")	

注意这一部分如果有conda环境最好这会包括之后都要activate否则会lib冲突啥的 亲测不需要activate,可能是因为我设定了DPYTHON_EXECUTABLE


cd ~/ocs2_ws/
catkin init
catkin build elevation_mapping_cupy
  • 正常情况会显示[build] Summary: All 8 packages succeeded!
  • 存在一个Fail就要重新试,先catkin clean -y全部清除,然后再init再来
  • 报错1:
    • 其实就是当前conda环境缺包,需要安装empy==3.3.4 catkin_pkg
  • 报错2:
    • /usr/bin/ld: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined reference to ffi_closure_alloc@LIBFFI_CLOSURE_7.0’
      /usr/bin/ld: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined reference to ffi_type_uint8@LIBFFI_BASE_7.0’
      /usr/bin/ld: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined reference to ffi_prep_closure_loc@LIBFFI_CLOSURE_7.0’
      /usr/bin/ld: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined reference to ffi_type_uint64@LIBFFI_BASE_7.0’
      /usr/bin/ld: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined reference to ffi_type_pointer@LIBFFI_BASE_7.0’
      /usr/bin/ld: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined reference to ffi_prep_cif@LIBFFI_BASE_7.0’

    • 解决方法:我是采用的https://blog.csdn.net/special00/article/details/135100639这个方法,修改了conda环境的这个文件

      • cd (conda环境路径)/lib
        sudo rm libffi.so.7
        sudo ln -s /lib/x86_64-linux-gnu/libffi.so.7.1.0 libffi.so.7
    • 不过我感觉下面这种更稳妥一些
      sudo ln -s /lib/x86_64-linux-gnu/libffi.so.7.1.0 /opt/ros/noetic/lib/libffi.so.7


catkin init
catkin config --extend /opt/ros/noetic
catkin config --cmake-args -DPYTHON_EXECUTABLE=/home/!!!/anaconda3/envs/ros_env/bin/python -Wno-deprecated -Wno-ignored-qualifiers -DCMAKE_BUILD_TYPE=RelWithDebInfo -Wno-dev -DBULLET_INCLUDE_DIR=/usr/local/include/bullet -DBULLET_LIBRARY=/usr/local/lib/libBulletCollision.so
catkin build ocs2

cmake-args那一步其实别人没必要写这么长,主要是在我这必须要写齐全咯。同样是74个包必须全部succeed,只要有一个Fail就得clean,然后从elevation_mapping_cupy那一步开始init
这里Fail的原因除了一些依赖包可能没有安装环境变量冲突之外,还有可能就是有延迟之类的东西,总之多试几次,确实会碰巧就过了

最后74个齐活了再在bashrc里添加source ~/ocs2_ws/devel/setup.bash,放置位置应当如下:


其他export的路径source /opt/ros/noetic/setup.bash
source ~/ocs2_ws/devel/setup.bash去重函数remove_duplicates

注意如果又需要从头开始build的话需要把这个删掉,否则会冲突,因为重置clean后就没有devel文件夹了

测试

不需要cd到manipulator_franka.launch所在路径执行


roslaunch  ocs2_mobile_manipulator_ros manipulator_franka.launch

另外依赖项

Unable to find either executable ‘empy’ or Python module ‘em’

主要是build时可能会遇到这个报错,python3-empys是已经通过apt安装过的,所以这个就得在python环境下安装pip install empy
这也是为什么我每次都要设置DPYTHON_EXECUTABLE(因此build的时候其实不需要activate环境)

自己安装或者问SB GPT的话可能有ghostscripth和hpp-fcl的报错

这俩包基本上都有安装,reinstall也不太可能安好,所以最好还是看专业的教程

LCM


# 安装依赖
# 必选
sudo apt install build-essential libglib2.0-dev cmake
# 可选,可根据使用的语言选择安装
sudo apt install default-jdk python-all-dev liblua5.1-dev golang doxygen
# 拷贝源码
cd ~/ocs2_ws/src
git clone https://github.com/lcm-proj/lcm.git
cd lcm
# 编译并安装
mkdir build && cd build
cmake ..
make -j4	
sudo make install

make -j4 这一步需要存在Python.h,也就是指定python环境
但是帮别人安装时也发现了指定环境也不行,写了各种环境变量也不行,明明conda环境肯定是有python的,对应的dev包也有安装,那么参照https://blog.csdn.net/sinat_38079265/article/details/116519987

  1. 先查找到底有没有Python.h,如果前面安装都正常的话一定会有的
    • find /usr/include/ -name Python.h
  2. src/lcm/lcm-python建立那个python的链接
    • ln -s Python.h所在路径 ~/ocs2_ws/src/lcm/lcm-python
  3. lcm-python路径下的.c或者.h里面都要加上python3.x的路径,也就是说如果那个快捷方式的名字叫python3.8,那就是#include <python3.8/Python.h>

mujoco

下载2.1.0


mkdir ~/.mujoco
tar -zxvf mujoco210-linux-x86_64.tar.gz -C ~/.mujoco

在bashrc中添加export LD_LIBRARY_PATH=~/.mujoco/mujoco210/bin

测试


cd ~/.mujoco/mujoco210/bin./simulate ../model/humanoid.xml

mujoco-py


cd ~/ocs2_ws/src
git clone https://github.com/openai/mujoco-py.git
cd mujoco-py
pip install -U 'mujoco-py<2.2,>=2.1'pip install -r requirements.txtpip install -r requirements.dev.txtpython setup.py install

在bashrc中添加export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia

测试

import mujoco_py
import os
mj_path = mujoco_py.utils.discover_mujoco()
xml_path = os.path.join(mj_path, 'model', 'humanoid.xml')
model = mujoco_py.load_model_from_path(xml_path)
sim = mujoco_py.MjSim(model)print(sim.data.qpos)
# [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]sim.step()
print(sim.data.qpos)
# [-2.09531783e-19  2.72130735e-05  6.14480786e-22 -3.45474715e-06
#   7.42993721e-06 -1.40711141e-04 -3.04253586e-04 -2.07559344e-04
#   8.50646247e-05 -3.45474715e-06  7.42993721e-06 -1.40711141e-04
#  -3.04253586e-04 -2.07559344e-04 -8.50646247e-05  1.11317030e-04
#  -7.03465386e-05 -2.22862221e-05 -1.11317030e-04  7.03465386e-05
#  -2.22862221e-05]

运行后有注释的结果即可

  • 可能会有报错Cython.Compiler.Errors.CompileError,那就pip install cython==0.29.21
  • 如果是LD_LIBRARY_PATH等环境变量的错,而且是用的pycharm,那就在Run->Edit Configurations->Environment variables 里添加变量Name是LD_LIBRARY_PATH,变量Value是 $LD_LIBRARY_PATH:/home/!!!/.mujoco/mujoco210/bin:/usr/lib/nvidia
  • 报错No such file or directory: 'patchelf',那就直接安装sudo apt-get install patchelf
  • 可能报错的时候,控制台不止显示注释的内容,还有“Compiling”等内容,等报错都解决后就消失了。
  • 其他报错可以看教程

项目

不知道为什么gazo就是安装不匹配所以就用了mujojo(某包11版本和某包9版本的不兼容问题,恶性循环)

不过legged_interface老是报错说/usr/lib/include这个不存在的路径被引用了,无论怎么排查都没发现这个路径是从哪来的
最后的解决办法是

  • 方法1:直接修改devel/share里面对应的.cmake把里面的/usr/lib/include删掉。但是还有个legged_wbc的包里是没有显式写明这个路径的,所以最好还是用方法2
  • 方法2:新建这个空白路径

顺便为了不影响前面的ocs2我新建了一个空间来编译这一部分,但是就是引用不到ocs2 的路径,明明设了环境变量。所以只好把devel直接拷贝到新空间里了

最后都调试顺利之后我在前一个空间汇集编译了一遍,但是最终测试结果只有个白影,没有完整显示的结果
别人顺利出来模型,有可能是因为他们是在后一个空间汇集编译的
也有可能是我的分辨率有问题,viz就算了,mujoco的界面只能看到左侧的按钮别的都看不到,只能等电脑空闲时调一下分辨率再试试


http://www.mrgr.cn/news/57073.html

相关文章:

  • Python多进程学习与使用:全面指南
  • kotlin 入门总结
  • C++ Qt 使用openCV库将图片文件互转YUV文件
  • ISO 21434:重塑汽车网络安全与数据保护的行业标准
  • 开发自定义大模型
  • javaweb-mybatis之动态sql
  • 力扣209-长度最小的子数组-滑动窗口思想
  • Chromium 沙盒Sandbox源码介绍(3)
  • ppt组合为一个整体怎么做?2个ppt常用操作和技巧分享!
  • QT-子项目管理
  • linux-牛刀小试
  • 一个非常实用的 Vue 拖拽组件,成熟、稳定且功能丰富的拖拽库,效率与灵活性的双重提升(带私活源码)
  • 数据库聚合函数
  • 等价文件名绕过
  • 技术速递|Microsoft.Extensions.AI 预览版简介 – 适用于 .NET 的统一 AI 构建块
  • 10.18做题记
  • C#中的LINQ之美:优雅的数据查询与操作
  • 云轴科技ZStack信创云平台助力上海科技大学实现信创业务落地
  • Redis学习文档(Redis基本数据类型【Hash、Set】)
  • java版鸿鹄招投标系统源码 招标采购系统源码 询比价投标平台源码
  • Android按钮Button
  • SSM-Springboot笔记(7)- Servlet3.0和SpringBoot过滤器和拦截器
  • OPPO携手比亚迪共同探索手机与汽车互融新时代
  • 056_基于python新闻采集与订阅平台
  • NC 单据模板自定义项 设置参照,比如部门参照、自定义参照等
  • 迁移学习和在线学习小结