开始
博客故事
这是一个关于Robotics Library项目源码解析的博客,我写这个博客的意义一部分在于督促我学习吸收怎么使用C++进行项目的开发和构建,一部分是因为我对于机器人或多或少有点感兴趣,一次偶然的机会看了一下这个项目的源代码,后面就萌生出想要进行源码分析的一个尝试。我从来没有接触过机器人学以及其相应的知识,有的只是一些大学期间学的不是很好的高等数学和一些薄弱的计算机基础,再加上一些C++的知识,这一个源码分析或许将是一个对我的极大挑战,我会尽量不断地更新博客。
编译环境
我采用的是Ubuntu22.04,准确的说是WSL2的Ubuntu22.04系统,编译器我选择是clang18,文本编辑器我采用的是vscode+wsl插件+cmake扩展+clangd扩展。基础的代码开发环境,不同的读者也有适合自己的不同的配置。
重点说一下编译Robotics Library的要求:
-
需要安装一个编译器(例如 GNU 编译器集合)和跨平台构建系统 CMake(版本 ≥ 2.8.11)。使用以下命令在 Ubuntu 上安装它们:
sudo apt-get install build-essential cmake
-
构建所有组件需要一些第三方库。直接使用apt安装,先把官方的存储库加上:
sudo add-apt-repository ppa:roblib/ppa sudo apt-get update
然后执行:
sudo apt-get install libboost-all-dev libbullet-dev libdc1394-dev libeigen3-dev libnlopt-dev libode-dev libsimage-dev libsolid3d-dev libsoqt520-dev libxml2-dev libxslt1-dev
-
安装生成文档的包:
sudo apt-get install doxygen graphviz
-
安装boost 1.8.2
Robotics Library构建时候会用到boost,在其0.7.0源代码中,指定了一个boost区间版本,最高到1.6.4, 我采用1.7.4版本的boost会编译报错,但是在boost1.8.2版本无报错,且可以成功运行,所有我们手动编译boost版本。wget -O boost_1_82_0.tar.gz https://sourceforge.net/projects/boost/files/boost/1.82.0/boost_1_82_0.tar.gz/download tar xzvf boost_1_82_0.tar.gz cd boost_1_82_0/
获取编译所需要的库
sudo apt-get update sudo apt-get install build-essential g++ python3-dev autotools-dev libicu-dev libbz2-dev
设置boost的引导
./bootstrap.sh --prefix=/usr/local
开始并行安装boost,其中
$n
为你电脑的最大线程数,建议你几核电脑就设置n为几,如果绝对麻烦直接把-j $n
去掉或者直接-j 4
,一般现在买的电脑最少也有4线程。sudo ./b2 --with=all -j $n install
将 /usr/local/lib 目录添加到动态链接库的搜索路径中,并更新动态链接库缓存
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/local.conf' sudo ldconfig
编译流程
- 下载源码,并解压
wget https://github.com/roboticslibrary/rl/archive/0.7.0.tar.gz tar -xvzf 0.7.0.tar.gz cd rl-0.7.0
- 进入build文件夹
mkdir build cd build
- 执行编译并安装
cmake -D CMAKE_BUILD_TYPE=Release .. make sudo make install sudo ldconfig
- 验证安装
如果这里没有效果,改成/usr/local/bin/rlPlanDemo /usr/local/share/rl-0.7.0/examples/rlplan/unimation-puma560_boxes_rrtConCon.xml
效果图/usr/bin/rlPlanDemo /usr/lshare/rl-0.7.0/examples/rlplan/unimation-puma560_boxes_rrtConCon.xml
开始部分结束了,下次我们开始逐步抽离分析源码