【MoveIt2-humble】Moveit2_toturials 功能包详细安装过程及问题解决

:以下修改自官网文档上的安装步骤,在此基础上列出我安装时所遇到的问题与解决方法,官方的坑有很多,看我这篇就够了。

入门

构建 MoveIt 的所有源代码可能需要 20-30 分钟(渣机实测需要几个小时,所以不要在晚上安装),具体取决于计算机的 CPU 速度和可用 RAM。如果您使用的是性能较低的系统,或者通常只是想更快地开始,请查看我们的Docker 指南(实测更麻烦,暂不推荐)。

版本

  • 系统版本:ubuntu22.04
  • ROS2版本:humble
  • Moveit版本:moveit2-humble

安装 ROS 2 和 Colcon

安装 ROS 2 Humble。如果您在接下来的几个步骤中遇到错误,可以确认一下是否正确安装 ROS 2。

source /opt/ros/humble/setup.bash

安装rosdep以安装系统依赖项:

sudo apt install python3-rosdep

注意,国内 rosdep 不稳定,可以使用鱼香ros 开发的 rosdepc,下面是安装方法:

sudo apt install -y python3-pip
sudo pip3 install rosdepc

安装 ROS 2 后,请确保您拥有最新的软件包:

注:以下的 rosdep 都可以换成 rosdepc,避免网络不稳定导致的问题。

sudo rosdep init
rosdep update
sudo apt update
sudo apt dist-upgrade

使用mixin安装Colcon ROS 2 构建系统(这一步无所谓,因为后面会报错):

sudo apt install python3-colcon-common-extensions
sudo apt install python3-colcon-mixin
colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
colcon mixin update default

安装vcstool

sudo apt install python3-vcstool

创建 Colcon 工作区并下载教程

创建工作空间,很熟悉了。

mkdir -p ~/ws_moveit2/src

下载 MoveIt 源代码和教程

目前Moveit2官方已经支持了二进制安装了,这里我们就直接使用下面的指令即可完成安装

sudo apt-get install ros-humble-moveit

进入 Colcon 工作区(即工作空间的 src 目录下)并拉取 MoveIt 教程源:

注:官方文档的分支是 main,然而 main 分支的 repo 文件没更新,所以最后一步编译的时候会报错

cd ~/ws_moveit2/src
git clone https://github.com/ros-planning/moveit2_tutorials -b humble

接下来,我们将下载 MoveIt 其余部分的源代码:

vcs import < moveit2_tutorials/moveit2_tutorials.repos

输入命令后可能会要求您提供 GitHub 凭据。您可以直接按 Enter 直到它继续(忽略“身份验证失败”错误)。

注意,如果运行vcs import 发生报错,解决方法详见后面的 error 解决 部分。

建立 Colcon 工作区

以下将从 Debian 安装任何尚未在您的工作区中的软件包依赖项。这是安装 MoveIt 及其所有依赖项的步骤:

同样,这里更推荐使用 rosdepc

sudo apt update && rosdep install -r --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y

下一个命令将配置您的 Colcon 工作区:

cd ~/ws_moveit2
colcon build --mixin release

如果 mixin 报错了,可以换一种编译方式:

 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

此构建命令可能需要很长时间(这一步我虚拟内存调成 4G,编译了 2 个多小时),具体取决于计算机速度和可用 RAM 量(建议 32 GB)。如果计算机内存不足,可以将下面的参数附加到上面的 colcon 命令末尾。--parallel-workers 1

注:这一步对于计算机性能较差的人来说编译时会报错,详见后面 error解决 部分

设置 Colcon 工作区

之后,就是我们所熟悉的 source 和运行示例了。

来源 Colcon 工作区:

source ~/ws_moveit2/install/setup.bash

可选:将上一个命令添加到您的.bashrc

echo 'source ~/ws_moveit2/install/setup.bash' >> ~/.bashrc

运行样例程序

ros2 launch moveit2_tutorials demo.launch.py rviz_tutorial:=true

添加MotionPlanning然后修改group拖拽机械臂执行运动规划。

下面是问题及其解决

error1

colcon build 过程中,出现如下报错

--- stderr: rviz_visual_tools
c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
gmake[2]: *** [CMakeFiles/rviz_visual_tools.dir/build.make:90: CMakeFiles/rviz_visual_tools.dir/src/rviz_visual_tools.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:229: CMakeFiles/rviz_visual_tools.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---

原因:虚拟内存(swap)不够,需要扩充,我们采用临时扩充的方法

free -m #查看当前swap分区大小,发现只有1G

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8A6bd7eD-1657078188741)(assets/image-20220705170157-r5q3xtf.png)]

sudo dd if=/dev/zero of=/swapfile bs=1024 count=4000000 #增加到4G, 空间大小为bs*count

sudo mkswap /swapfile #把刚才增加的空间转换为swap格式

sudochmod 0600 /swapfile #修改录权限

sudo swapon /swapfile #使用刚才创建的4G swap空间

free -m #此时再查看,发现swap空间变为4G

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4SV6dl7c-1657078188742)(assets/image-20220705170734-jkj5bob.png)]

内存扩充后重新执行 colcon build 即可

最后释放临时内存

swapoff -a #gromacs编译结束,释放先前修改的内存

free -m #检查swap空间是否恢复

error2

By not providing “Findcatkin.cmake“ in CMAKE_MODULE_PATH this project has asked CMake to find a pa

CMake Error at CMakeLists.txt:17 (find_package):
  By not providing "Findcatkin.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "catkin", but
  CMake did not find one.

  Could not find a package configuration file provided by "catkin" with any
  of the following names:

    catkinConfig.cmake
    catkin-config.cmake

  Add the installation prefix of "catkin" to CMAKE_PREFIX_PATH or set
  "catkin_DIR" to a directory containing one of the above files.  If "catkin"
  provides a separate development package or SDK, be sure it has been
  installed.

原因:clone时版本选择错误

如下,我们应该选择 ros2 版本 ,而不是默认的 main 版本

git clone https://ghproxy.com/https://github.com/PickNikRobotics/rviz_visual_tools -b ros2

error3

vcs import 无响应或报错

$ vcs import < moveit2_tutorials/moveit2_tutorials.repos
..EE
=== ./moveit_task_constructor (git) ===
Cloning into '.'...
=== ./moveit_visual_tools (git) ===
Could not clone repository 'https://github.com/ros-planning/moveit_visual_tools': Cloning into '.'...
fatal: unable to access 'https://github.com/ros-planning/moveit_visual_tools/': GnuTLS recv error (-110): The TLS connection was non-properly terminated.
=== ./rosparam_shortcuts (git) ===
Cloning into '.'...
=== ./rviz_visual_tools (git) ===
Could not clone repository 'https://github.com/PickNikRobotics/rviz_visual_tools.git': Cloning into '.'...
fatal: unable to access 'https://github.com/PickNikRobotics/rviz_visual_tools.git/': gnutls_handshake() failed: Error in the pull function.

原因:网络问题,github DDS受到污染。

这一步是要安装以上4个依赖包,我们可以手动 git clone 来添加到工作空间的 src 目录下,注意分支版本都要选择 ros2,如果版本选择错误,编译时会出现如 error2 的报错。

error4

--- stderr: moveit2_tutorials
/home/zhouhr/My_learning/moveit2_learning/src/moveit2_tutorials/doc/how_to_guides/using_ompl_constrained_planning/src/ompl_constrained_planning_tutorial.cpp: In function ‘int main(int, char**)’:
/home/zhouhr/My_learning/moveit2_learning/src/moveit2_tutorials/doc/how_to_guides/using_ompl_constrained_planning/src/ompl_constrained_planning_tutorial.cpp:146:23: error: ‘class moveit_visual_tools::MoveItVisualTools’ has no member named ‘publishNormalAndDistancePlane’
  146 |   moveit_visual_tools.publishNormalAndDistancePlane(normal, d, rviz_visual_tools::TRANSLUCENT_DARK);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gmake[2]: *** [doc/how_to_guides/using_ompl_constrained_planning/CMakeFiles/ompl_constrained_planning.dir/build.make:76: doc/how_to_guides/using_ompl_constrained_planning/CMakeFiles/ompl_constrained_planning.dir/src/ompl_constrained_planning_tutorial.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:595: doc/how_to_guides/using_ompl_constrained_planning/CMakeFiles/ompl_constrained_planning.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
gmake: *** [Makefile:146: all] Error 2
---

原因:main 更新了,但是 repo 文件没更新,应该是官方的问题。

解决方法:在最初下载教程的时候,把分支改成 humble

git clone https://github.com/ros-planning/moveit2_tutorials -b humble

然而到这步的时候,我们已经下载了 main 分支,可以直接把moveit2_tutorials/doc/how_to_guides/using_ompl_constrained_planning这个文件夹删掉,再把 moveit2_tutorials 下的 CMakeLists 文件中add_subdirectory 部分的doc/how_to_guides/using_ompl_constrained_planning注释掉即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值