华北舵狗王simple man仿真环境搭建教程

1.介绍

本文详细介绍如何在ubuntu系统中配置仿真环境,实现开源机器人simple man的站立和行走。华北舵狗王发布的文章如下:
开源人形机器人SimpleMan(简单男人)
开源人形机器人SimpleMan1-仿真环境的搭建
但比较简略,对于新手不友好,本文是保姆级教程。

2. 准备操作系统

作者用的ubuntu16.04,我用的是20.04版本,都是可以的。不能用win系统,编译会出错。

3. 准备软件

需要安装vscode和webots。
vscode用于查看和编辑代码,安装方法略。
webots需要2021a版本,本文提供从浏览器下载安装的方法。浏览器搜索webots,进入webots官网(https://cyberbotics.com/),在“下载”按钮右边有个下拉菜单,点击“更早版本”:
在这里插入图片描述
在跳转后的网页中搜索“2021a”,找到与自己电脑架构相对应的安装包并下载。ubuntu网络不好,我是在win系统中下载然后把文件传过去的。
在这里插入图片描述
在安装包所在文件夹打开终端,执行下图命令,安装webots:
在这里插入图片描述
完成后打开webots,加载一个示例项目,确保安装成功:
在这里插入图片描述

4. 准备开源代码

进入作者发布的gitee项目,点击项目右上角的“克隆/下载”:
在这里插入图片描述
simulation路径下有个panda_man.rar是webots仿真项目,需要把它解压缩然后转移到ubuntu系统中。我对ubuntu不熟悉,所以下载和解压过程都是在win系统中进行的。
在ubuntu中用vscode打开panda_man文件夹,里面的controllers/panda_man就是双足控制代码了,打开CMakeLists.txt,需要对其修改。
在这里插入图片描述
cmakelist中有5行代码标注了“#需要修改路径”,其中前4行是webots库文件路径,需要把webots路径修改为自己电脑上的安装位置,可以在ubuntu系统目录下搜索"webots",我的搜索结果是在usr/local,如下图:
在这里插入图片描述
最后一处修改是在cmakelist最后,在双足控制程序中有个liblib_imp.a的预编译文件,需要修改其绝对路径。可以在panda_man仿真文件夹中搜索liblib_imp.a,找到路径然后替换。
替换后我的cmakelist文件如下:

cmake_minimum_required(VERSION 2.6)

SET(PROJECT_NAME panda_man)
PROJECT(${PROJECT_NAME})
get_filename_component(PROJECT ${CMAKE_SOURCE_DIR} NAME)

find_package(Eigen3)

add_compile_definitions(__USE_SINGLE_PRECISION__)

INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIR})
set( CMAKE_BUILD_TYPE "Release" )
set( CMAKE_CXX_FLAGS "-std=c++11 -O3 -pthread" )
# set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../../build)

include_directories( 
     "./build"
     "./include_vmc"
     "./include_wb"
     "./vmc_inc"
     "./mpc"
     "./vision_location"
     "./common_utils"
     "./urdf"
     "./rbdl"
     "./model"
     "./cube_vision"
    #  "/home/pi/webots/webots/include/controller/c/"#需要修改路径
    #  "/home/pi/webots/webots/include/controller/cpp/"#需要修改路径
     "/usr/local/webots/include/controller/c/" # 修改后
     "/usr/local/webots/include/controller/cpp/" # 修改后
)

link_directories("/usr/local/lib")
include_directories("/usr/local/include")

# LINK_LIBRARIES("/home/pi/webots/webots/lib/controller/libController.so")#需要修改路径
# LINK_LIBRARIES("/home/pi/webots/webots/lib/controller/libCppController.so")#需要修改路径
LINK_LIBRARIES("/usr/local/webots/lib/controller/libController.so")# 修改后
LINK_LIBRARIES("/usr/local/webots/lib/controller/libCppController.so")# 修改后

AUX_SOURCE_DIRECTORY(gait_src DIR_SRCS)
AUX_SOURCE_DIRECTORY(locomotion_src DIR_SRCS1)
AUX_SOURCE_DIRECTORY(math_src DIR_SRCS2)
AUX_SOURCE_DIRECTORY(mpc DIR_SRCS3)
AUX_SOURCE_DIRECTORY(source DIR_SRCS4)
AUX_SOURCE_DIRECTORY(source_vmc DIR_SRCS5)
AUX_SOURCE_DIRECTORY(vision_location DIR_SRCS6)
AUX_SOURCE_DIRECTORY(rbdl DIR_SRCS7)
AUX_SOURCE_DIRECTORY(urdf DIR_SRCS8)
AUX_SOURCE_DIRECTORY(common_utils DIR_SRCS9)
AUX_SOURCE_DIRECTORY(model DIR_SRCS10)
AUX_SOURCE_DIRECTORY(cube_vision DIR_SRCS11)
ADD_EXECUTABLE(${PROJECT_NAME} ${DIR_SRCS} ${DIR_SRCS1}  ${DIR_SRCS2} ${DIR_SRCS3}  ${DIR_SRCS4} ${DIR_SRCS5} ${DIR_SRCS6} ${DIR_SRCS7} ${DIR_SRCS8} ${DIR_SRCS9} ${DIR_SRCS10} ${DIR_SRCS11})

set(CMAKE_COLOR_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 14)

add_subdirectory(qpOASES lib/ EXCLUDE_FROM_ALL)
target_link_libraries(${PROJECT_NAME} qpOASES)

add_subdirectory(yaml-cpp lib/ EXCLUDE_FROM_ALL)
target_link_libraries(${PROJECT_NAME} yaml-cpp)

link_directories($ENV{WEBOTS_HOME}/lib/controller)
link_directories($ENV{WEBOTS_HOME}/lib/webots)
file(GLOB C_SOURCES *.c)
file(GLOB CPP_SOURCES *.cpp)
set(SOURCES ${C_SOURCES} ${CPP_SOURCES})

if (NOT CPP_SOURCES STREQUAL "")  # Sources contain C++ files
  set (LIBRARIES ${CMAKE_SHARED_LIBRARY_PREFIX}Controller${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_SHARED_LIBRARY_PREFIX}CppController${CMAKE_SHARED_LIBRARY_SUFFIX})
  include_directories($ENV{WEBOTS_HOME}/include/controller/c $ENV{WEBOTS_HOME}/include/controller/cpp)
else()  # C
  set (LIBRARIES ${CMAKE_SHARED_LIBRARY_PREFIX}Controller${CMAKE_SHARED_LIBRARY_SUFFIX})
  include_directories($ENV{WEBOTS_HOME}/include/controller/c)
endif()

add_custom_command(TARGET ${PROJECT} POST_BUILD COMMAND ${CMAKE_COMMAND} -E
  copy ${CMAKE_BINARY_DIR}/${PROJECT} ${CMAKE_SOURCE_DIR}
)

#add_library(lib_imp ./locomotion_src/force_imp_controller.cpp)
# target_link_libraries(${PROJECT_NAME} /home/pi/Documents/panda_man/controllers/panda_man/locomotion_src/liblib_imp.a)#需要修改路径
target_link_libraries(${PROJECT_NAME} /home/test/man/panda_man/controllers/panda_man/locomotion_src/liblib_imp.a)# 修改后

5. 编译源码

需要先安装cmake编译工具,依次执行以下指令,首先更新软件列表,然后安装cmake,最后检查cmake版本验证安装成功:

sudo apt update
sudo apt install cmake
cmake --version

然后进入控制器文件夹,我的是~/man/panda_man/controllers/panda_man,依次执行以下指令,进行编译操作:

mkdir build
cd build
cmake ..
make

首次编译会报错,发现需要在ubuntu系统上安装eigen, qpOASES, 和boost库,ChatGPT给出的安装方法如下,其中qpOASES需要从github下载然后用cmake编译和安装,其他两个库用apt指令即可直接安装。我用git clone会下载失败,所以是从浏览器下载的压缩包。安装好qpOASES即可把github下载的文件删掉。

在Ubuntu上安装Eigen、Boost和qpOASES库可以使你的C++开发环境更加完善。以下是详细的安装步骤:

1. 安装Eigen
Eigen是一个高性能的线性代数库,用于科学计算和工程项目。以下是安装步骤:

使用APT包管理器安装
sudo apt update
sudo apt install libeigen3-dev
2. 安装Boost
Boost是C++标准库的扩展集合,提供了许多实用的功能库。以下是安装步骤:

使用APT包管理器安装
sudo apt update
sudo apt install libboost-all-dev
3. 安装qpOASES
qpOASES是一个开源的库,用于求解QP(Quadratic Programming)问题。由于Ubuntu的APT仓库中不包含qpOASES,需要从源码编译安装。

从源码编译安装
安装必需工具:

sudo apt update
sudo apt install build-essential cmake git
下载qpOASES源码:

git clone https://github.com/coin-or/qpOASES.git
cd qpOASES
创建并进入构建目录:

mkdir build
cd build
运行CMake配置:

cmake ..
编译和安装:

make
sudo make install
默认情况下,qpOASES会被安装到默认系统目录中,一般是 /usr/local/lib 以及 /usr/local/include。

安装三个库之后,再用cmake …和make指令编译源码,就不会报错了。首次编译会比较漫长,编译成功后会在build文件夹内生成名为panda_man的可执行文件。

6. 运行仿真

打开webots,打开仿真项目中的世界文件,我的在~/man/panda_man/TinyHuman_up1.wbt,然后开始仿真,不出意外的话机器人会先站立一会,然后开始行走:
在这里插入图片描述
至此就完成了狗王开源人形机器人仿真环境的搭建,还是比较麻烦的。至于如何进一步开发,参见狗王的知乎文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值