EPSILON环境配置和本地测试

文章目录

  • 一、环境配置
    • 1.1 拉取镜像构建容器
    • 1.2 在容器中安装常用的包
    • 1.3 安装依赖
    • 1.4 安装OOQP
      • 1.4.1 安装blas
      • 1.4.2 安装ma27
      • 1.4.3 安装OOQP
    • 1.5 安装Protobuf
  • 二、本地编译测试
    • 2.1 拉取源码并编译
    • 2.2 X11转发docker图形化界面
    • 2.3 测试一个小例子
  • 三、镜像

一、环境配置

  • 宿主机基础环境
    • 系统:ubuntu22.04
    • CPU: Intel® Core™ i9-14900K
    • GPU: NVIDIA GeForce RTX 4090
    • Docker version 26.0.0, build 2ae903e
    • Driver Version: 535.171.04
    • CUDA Version: 12.2

1.1 拉取镜像构建容器

拉取合适的ros版本镜像创建容器,这里拉取ros-melodic

docker run --gpus all --name EPSILON --net=host -v /home/kemove/dockerShareFile/EPSILON:/workspace/data -it ros:melodic-ros-base-bionic bash

在dockrhub上,ros官方提供的镜像有几种命名方式,这里简要说明说一下,方便大家拉取合适的镜像

  • melodic-ros-core-bionic:基于Ubuntu18.04(Bionic Beaver)的melodic版本
  • molodic-ros-core-stretch:基于Debian Stretch操作系统的melodic版本
  • ros-core和ros-base:ros-core仅包含ROS核心包(通信、节点管理等最基本的功能),适合最小化安装,用户根据需求手动安装其他包;ros-base在 ros-core 的基础上,包含了更多常用的ROS包,但不包含GUI工具,如rviz、gazebo等。适合需要非图形化的ROS功能开发。
  • melodic-robot-bionic:主要用于部署在机器人系统中,不需要图形化界面但包含机器人运行时所需的核心功能包,适合资源有限的环境(如嵌入式设备)或只需要核心机器人功能的系统
  • melodic-perception:适用于需要处理感知任务的系统,比如机器人视觉、环境建模、图像和视频数据处理等,适合在需要复杂传感器数据处理、识别和分析的应用场景中使用

1.2 在容器中安装常用的包

# 获取最新软件包
apt-get update
# 安装vim
apt-get install vim
# 安装ping命令
apt-get install iputils-ping
# 安装wget
apt-get install wget
# 安装ps
apt-get install procps
# 安装git
apt-get install git
# 安装pip
apt-get install python3-pip

一条命令安装

apt-get update &&
apt-get install vim iputils-ping wget procps git python3-pip

1.3 安装依赖

sudo apt-get install libgoogle-glog-dev libdw-dev libopenblas-dev gfortran
pip install empy pygame

1.4 安装OOQP

OOQP 是一个面向对象的 C++ 包,基于原对偶内点方法,用于解决凸二次规划问题 (QP)。它包含可“开箱即用”解决各种结构化 QP 的代码,包括一般稀疏 QP、支持向量机产生的 QP、Huber 回归问题以及具有边界约束的 QP。
OOQP 还可以用作一个框架,用于为新类型的结构化 QP 设计高效的求解器。其设计允许轻松替换线性代数模块,从而允许尝试不同的标准线性代数包。
EPSILON使用OOQP求解二次规划问题。

1.4.1 安装blas

#创建目录
mkdir /workspace/myLib
# 进入指定目录
cd /workspace/myLib
# 拉取压缩包
wget http://www.netlib.org/blas/blas.tgz
# 解压压缩包
tar zxf blas.tgz
# 进入解压后的路径
cd BLAS-3.12.0/
# 使用gfortran编译器编译fortran源码
gfortran -O3 -std=legacy -m64 -fno-second-underscore -fPIC -c *.f
# 创建静态库
ar r libfblas.a *.o
# 为静态库libfblas.a生成符号表
ranlib libfblas.a
# 删除编译产生的巍峨间
rm -rf *.o     
# 更新环境变量
vim ~/.bashrc
## 在文件最后一行添加
export BLAS=/workspace/myLib/BLAS-3.12.0/libfblas.a 
# 保存并退出编辑器,刷新环境变量
source ~/.bashrc

1.4.2 安装ma27

cd /workspace/myLib
git clone https://github.com/HITSZ-LeggedRobotics/ma27.git
cd ma27/ma27-1.0.0
# 执行配置脚本
bash ./configure CPPFLAGS="-fPIC" CFLAGS="-fPIC" FFLAGS="-fPIC"
# 将生成的可执行文件、库文件安装到系统目录
sudo make install

1.4.3 安装OOQP

  • 拉取ooqp源码
cd /workspace/myLib
git clone https://github.com/emgertz/OOQP.git
  • 将libma27.a文件复制到ooqp文件夹下
cd /workspace/myLib/ma27/ma27-1.0.0/src
cp -r libma27.a /workspace/myLib/OOQP/lib
  • 编译安装
cd /workspace/myLib/OOQP
./configure
make
sudo make install

1.5 安装Protobuf

  • 安装依赖
sudo apt update
sudo apt install autoconf automake libtool curl make g++ unzip
  • 拉取源码编译安装
# 进入指定目录
cd /workspace/myLib
# 下载压缩包
wget https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protobuf-all-21.12.zip
# 进入目录
cd protobuf-21.12
# 配置编译选项
./configure
# 编译
make 
# 安装
sudo make install
# 更新动态库缓存
sudo ldconfig
  • 验证安装
protoc --version

二、本地编译测试

2.1 拉取源码并编译

  • 进入到root目录下,拉取EPSILON源码,这里我拉取的是我fork的仓库,方便后续修改存档,大家可以根据源项目的链接拉取
cd /root
mkdir ./epsilon_planner/src
cd ./epsilon_planner/src
git clone https://github.com/zf-account/EPSILON.git
  • 编译
catkin_make
  • 刷新环境变量
	source ~/epsilon_planner/devel/setup.bash

2.2 X11转发docker图形化界面

关于如何显示docker中的图形化界面,请参考我的这个博客:docker中图形化界面的转发
这里选用X11转发docker图形化界面,X11转发需要在构建容器时即挂载文件,因此我们先从之前构建的容器中提取镜像出来,再根据提取出来的镜像构建容器同时挂载目录

  • 从容器中提取镜像
docker commit EPSILON epsilon:v1.0
  • 在宿主机上新开终端,允许X11接受来自Docker容器的连接
xhost +local:docker
  • 运行Docker容器并设置DISPLAY变量,在运行容器时,需要将宿主机的X11 socket目录映射到容器内,并设置DISPLAY变量,指定宿主机的X显示服务。
docker run --name epsilon_planner --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all -v /etc/localtime:/etc/localtime:ro   -v /tmp/.X11-unix:/tmp/.X11-unix   -e DISPLAY=unix$DISPLAY   -e GDK_SCALE   -e GDK_DPI_SCALE --network="host" --privileged -v /dev/bus/usb:/dev/bus/usb -it epsilon_planner:v1.0 /bin/bash

2.3 测试一个小例子

  • 新建终端启动roscore
roscore
  • 新建终端启动rviz
roscd phy_simulator/rviz/
rviz -d phy_simulator_planning.rviz
  • 新建终端启动planner节点和AI节点
roslaunch planning_integrated test_ssc_with_eudm_ros.launch
roslaunch ai_agent_planner onlane_ai_agent.launch
  • 启动仿真器
roslaunch phy_simulator phy_simulator_planning.launch

此时,在宿主机上会显示仿真动画

三、镜像

上述环境配置过程均在docker中完成,配置完成后,我提取出了镜像上传到了dockerhub,大家可以跳过繁琐的环境配置过程,直接使用以下链接拉取我配置好的镜像使用,后续会更新对EPSILON代码的解读

  • 拉取镜像
docker pull aitotra/epsilon-planner:v1.0
  • 运行容器
docker run --name epsilon_planner --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all -v /etc/localtime:/etc/localtime:ro   -v /tmp/.X11-unix:/tmp/.X11-unix   -e DISPLAY=unix$DISPLAY   -e GDK_SCALE   -e GDK_DPI_SCALE --network="host" --privileged -v /dev/bus/usb:/dev/bus/usb -it epsilon_planner:v1.0 /bin/bash

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1539601.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Docker 进入容器并运行命令的方法

目录 理解 Docker 容器的基本概念 使用 docker exec 进入运行中的容器 基本用法 常用选项解析 选项详解 实际案例演示 1. 进入容器的交互式 Shell 2. 在容器中运行单个命令 3. 以指定用户运行命令 4. 设置环境变量并运行命令 5. 指定工作目录 使用 docker attach 附…

虚拟机安装xubuntu

新建一个新的虚拟机,选择自定义安装 默认下一步 选择稍后安装操作系统 选择所要创建的系统及版本 填写虚拟机的名称及创建的虚拟机保存的位置 选择处理器和内核的数量 处理器数量指的是:虚拟的CPU数量。 每个处理器的内核数量指的是:虚拟CPU…

智能BI项目第四期

开发图表管理功能 规划思路 首先需要做一个列表页。后端已经在星球提供了一个基础的万能项目模板,包含增删改查接口,我们只需要在此基础上进行定制化开发即可。所以本期后端的开发量不多,只需要复用即可,主要是前端。 规划功能…

Ubuntu20.04 搜索不到任何蓝牙设备

电脑信息 联想扬天YangTianT4900k 问题描述 打开蓝牙之后,一直转圈,搜索不到任何蓝牙设备 排查 dmesg | grep -i blue 有如下错误: Bluetooth: hci0: RTL: unknown IC info, lmp subver 8852, hci rev 000b, hci ver 000b lsusb 芯片型号如…

基于springboot+vue图书管理系统的设计与实现

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,图书信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…

C语言菜鸟入门·各种typedef用法超详细解析

目录 1. 什么是typedef 2. typedef的用法 2.1 对于数据类型的重定义 2.2 对于函数的重定义 2.3 对于指针的重定义 2.4 对于数组指针的重定义 2.5 对于指针数组的重定义 2.6 对于结构体的重定义(typedef struct) 2.6.1 对结构体起别名 …

2.4 数据库表字段约束

一、数据库三大范式 我们构造数据库的时候必须要遵守一定的原则,那这个规则就是范式关系型数据库,一共有六种范式,一般情况下只需要满足第三范式即可。 ​第一范式:原子性构造数据库必须遵循一定的规则,这种规则就是…

语音识别与语音控制的原理介绍

硬件平台 机器硬件:OriginBot(导航版/视觉版)PC主机:Windows(>10)/Ubuntu(>20.04)扩展硬件:X3语音版 运行案例 首先进入OriginBot主控系统,运行一下指令。请注意,部分操作OriginBot内暂…

深度学习笔记(8)预训练模型

深度学习笔记(8)预训练模型 文章目录 深度学习笔记(8)预训练模型一、预训练模型构建一、微调模型,训练自己的数据1.导入数据集2.数据集处理方法3.完形填空训练 使用分词器将文本转换为模型的输入格式参数 return_tenso…

docker从容器提取镜像并上传至dockerhub

一、使用commit从容器中提取镜像 例如 //docker commit 容器名 想要创建的镜像名:版本号 docker commit epsilon_planner epsilon_planner:latest导出完成后镜像如图所示 二、登陆dockerhub并创建仓库 登陆dockerhub,点击Create repository创建仓库&#xff0c…

【机器学习(八)】分类和回归任务-因子分解机(Factorization Machines,FM)-Sentosa_DSML社区版

文章目录 一、算法概念二、算法原理(一) FM表达式(二)时间复杂度(三)回归和分类 三、算法优缺点(一)优点(二)缺点 四、FM分类任务实现对比(一&…

【ShuQiHere】 探索数据挖掘的世界:从概念到应用

🌐 【ShuQiHere】 数据挖掘(Data Mining, DM) 是一种从大型数据集中提取有用信息的技术,无论是在商业分析、金融预测,还是医学研究中,数据挖掘都扮演着至关重要的角色。本文将带您深入了解数据挖掘的核心概…

机械设备产品资料方案介绍小程序系统开发制作

设备产品资料介绍小程序系统,是一家工业机械设备生产厂家为了更好的服务客户而定制开发的一套小程序系统,让用户通过小程序就可以了解公司产品介绍的详细参数、售后服务和产品操作手持等。 该小程序系统里面主要开发的功能模块有: 1、产品目…

智慧课堂学生行为数据集

智慧校园数据集合集概述 智慧校园旨在通过整合先进的信息技术来提升教育环境的安全性、效率以及互动性。一个关键组成部分是利用计算机视觉技术对校园内的各种活动进行监控与分析。为此,构建了一个全面的数据集合集,包含了密集行人、头部检测、抽烟行为…

一个手机号注册3个抖音号的绿色方法?一个人注册多个抖音号的方法!

下面这是我注册的新账号,显示未实名,在手机号这里显示辅助手机号绑定,手机号绑定这里显示未绑定。如果你需要矩阵,那么,还需要设置好头像,以及介绍,这些都可以正常设置。 再好的方法&#xff0c…

C++笔记21•C++11的新特性•

相比于 C98/03,C11则带来了数量可观的变化,其中包含了约140个新特性,以及对C03标准中约600个缺陷的修正,这使得C11更像是从C98/03中孕育出的一种新语言。相比较而言,C11能更好地用于系统开发和库开发、语法更加泛华和简…

VS code 创建与运行 task.json 文件

VS code 创建与运行 task.json 文件 引言正文创建 .json 文件第一步第二步第三步 运行 .json 文件 引言 之前在 VS code EXPLORER 中不显示指定文件及文件夹设置(如.pyc, pycache, .vscode 文件) 一文中我们介绍了 settings.json 文件,这里我…

唯徳知识产权管理系统 UploadFileWordTemplate 任意文件读取

0x01 漏洞描述: 唯徳于2014年成立,是专业提供企业、代理机构知识产权管理软件供应商,某公司凭借领先的技术实力和深厚的专利行业积累,产品自上市推广以来,已为1000多家企业及代理机构提供持续稳定的软件服务。其知识产…

安卓13长按电源按键直接关机 andriod13不显示关机对话框直接关机

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 有些设备需要在长按电源键的时候,直接关机。不需要弹出对话框进行询问。 2.问题分析 过滤电源按键,需要在系统里面处理的话,那么我们需要熟悉android的事件分发,然后再…

L67 【哈工大_操作系统】操作系统历史 学习任务

L6 操作系统历史 线条一 1、上古神机 IBM7094 专注于计算批处理操作系统(Batch system) 2、OS/360 一台计算机干多种事,多道程序作业之间的 切换和调度 成为核心 (多进程结构和进程管理概念萌芽!) 3…