Manjaro Linux编译安装ROS2 humble机器人系统:从开始到安装完成

16 篇文章 1 订阅
13 篇文章 0 订阅

时间从2022/7来到了2022.12,又来找虐了。。。这次安装成功了哈哈哈哈。感谢arch ros2-humble的开发者。

我已经把编译好的包上传,有需要(又相信我不会做手脚的)可以直接使用,省得编译浪费时间了。看这里:Github: realysy/ros_packages_for_arch_manjaro_linux (不用Gitee是因为Gitee创建公开仓库太麻烦了),跟着README.md安装应该就没问题了。


如果你仍然想尝试编译源码安装,下面的记录应该会有帮助。


仍然是manjaro, 仍然是ros2, 只不过现在的最新版为humble. 主要的安装步骤:

  • 全面更新系统,防止出现依赖问题、软件源不够新等问题
    sudo pacman -Syyu --noconfirm

  • 安装必要的基础开发工具
    yay -S base-devel

  • yay -Sy ros2-humble
    (通过yay -Ss humble搜索得到,版本信息:2022.11.23-1)

    • 安装时如果报错“python-sip4”,“sip4”,“python-vcstool”等找不到目标,则yay -S安装缺少的东西,比如yay -S python-sip4, 解决之后再次执行安装命令yay -S ros2-humble

    • 安装时如果没翻墙的话会卡到prepare()步骤,是github访问的问题

      • 解决办法同之前,见文章最后几段,替换ros2.repos中的github链接为镜像地址,比如github.com替换为hub.yzuu.cf;然后修改替换vcs文件。 修改之后再次执行安装命令,顺利安装完成,/opt/ros下能看到安装的东西。

      • 另一种解决方法:使用makepkg -f手动编译然后手动安装,不使用yay了

        • 修改~/.cache/yay/ros2-humble/PKGBUILD文件中的source中的github链接为镜像链接

          source=(
              "ros2::git+https://hub.yzuu.cf/ros2/ros2#tag=release-humble-20221123"
          )
          

          或终端运行如下命令替换所有的github.com为镜像地址:

          cd ~/.cache/yay/ros2-humble/
          su
          sed -i "s/github.com/hub.yzuu.cf/g" $(grep -rl github.com ./)
          su [你的用户名]
          
        • 然后在此文件夹处打开终端,删除原来的ros2文件夹,执行makepkg -f进行编译打包,然后执行sudo pacman -U *.pkg.tar.zst进行安装

    • prepare()之后编译时也会访问github, 所以注意网络;

      • 编译比较耗时,我设置线程为8, 1小时左右才编完

      • 如果刚开始编译时报错cmake patch啥的没成功,可以尝试降低编译时的并行线程数,或者yay -S重新安装试试。
        PKGBUILD中colcon添加参数 --parallel-workers 8 可设置线程数

        • 如果第145个软件包qt_gui_cpp编译时报错,callprocess啥的,是python,pyqt和sip之间的版本冲突造成的,可以尝试更换sip4:
          教程(软件包官方仓库) https://aur.archlinux.org/packages/ros2-humble
          教程(软件包官方Github) https://github.com/m2-farzan/ros2-galactic-PKGBUILD/issues/9

        安装下面这两个都行:我由于找不到第一个,就安装的第二个,这个编译也挺慢,不过好在解决了这个就没什么问题了
        python-pyqt5-sip4-compat
        python-pyqt5-sip4

    • 安装完成后的提示信息:

      
          IMPORTANT NOTE:
          You should add something like this to your ~/.bashrc file:
      
            export ROS_DOMAIN_ID=42
            source /opt/ros/humble/setup.bash
      
          This quick command will do it for you:
      
            printf "\nsource /opt/ros/humble/setup.bash\n" >> ~/.bashrc
      
          Note 1: If you use zsh, replace '.bash' in the above lines with
          '.zsh' and add the lines to ~/.zshrc .
      
          Note 2: This will slow down terminal startup for a few seconds on
          cold start, and a fraction of a second for terminals that open later.
          If you know a better transparent solution, you are welcome to edit
          this.
          END OF IMPORTANT NOTE.
          
      
      

  • 首先ROS的官网显示目前ROS有3个版本,ROS1, ROS2 LTS, ROS2 Latest, 我想安装ROS2 Latest最新版—名字叫做galactic.
  • 其次ROS官网显示对系统的支持只有ubuntu,Win10等,没有Manjaro;
  • 然后Arch Wiki上显示Aur库中已经有ROS1, ROS2了,那安装起来就简单, ROS2在Aur库里的名字叫做ros2-galactic
    • 安装之前首先全面更新系统:sudo pacman -Syyu
    • 直接安装:yay -Sy ros2-galactic
      • 报错python-numpy与/usr/bin/f2py, /usr/bin/f2py3冲突,将这两个文件mv到桌面备份,然后重新执行命令安装——如果遇到从github下载失败的错误,就重试、更换为github镜像、或使用其他方法避免下载失败,很顺利就安装完成了

网络、环境顺利的话,上面一句命令就安装成功了,然而下面才是我的真实安装过程:

我在遇到 python-numpy冲突的时候,首先用Pip安装了numpy, 然后想根据安装ros2-galactic时的输出信息,逐个安装依赖的软件包,但没想到最后安装ros的时候仍然需要安装python-numpy, 而且仍然提示冲突,就想到了移动走的办法(因为这两个文件的权限为root, 担心移动走会搞坏系统)。

  • yay -Sy apr apr-util asio assimp bullet eigen gtest log4cxx mariadb-libs poco python-apipkg python-argcomplete python-argparse python-attrs python-coverage python-dateutil python-docutils python-empy python-iniconfig python-lark-parser python-netifaces python-nose python-notify2 python-pluggy python-py python-pyaml python-pytest python-pytest-cov python-pytest-repeat python-pytest-rerunfailures python-pytest-runner python-sip4 sip sip4 tinyxml tinyxml2 unixodbc
    • python-numpy也在这里,跳过不安装
  • yay -Sy python-vcstool python-colcon-core python-colcon-argcomplete python-colcon-bash python-catkin_pkg python-colcon-cmake python-colcon-defaults python-colcon-devtools python-colcon-library-path python-colcon-metadata python-colcon-notification python-colcon-output python-colcon-package-information python-colcon-package-selection python-colcon-pkg-config python-colcon-parallel-executor python-colcon-powershell python-colcon-python-setup-py python-colcon-recursive-crawl python-colcon-ros python-colcon-test-result python-colcon-zsh python-colcon-common-extensions python-rospkg python-rosdistro python-rosdep ros2-arch-deps ros2-pyqt5-sip-compat ros2-galactic
  • 安装完上面两大串依赖之后,再安装yay -Sy ros2-galactic总是卡在perpare()步骤(一个小时左右报错无法连接github),Log很多E说明还是网络问题。走到prepare()这一步,~/.cache/yay/ros2-galactic/src/ros2/这个github仓库就应该已经clone下来了,修改其中的ros2.repos文件,将所有的github.com链接替换为github镜像(一共428M的东西,大约100个仓库),比如:
    • 将:https://github.com/ros2/yaml_cpp_vendor.git
    • 替换为:https://api.mtr.pub/ros2/yaml_cpp_vendor.git
  • 替换之后先不要再次运行yay -Sy ros2-galactic, 因为你修改了ros2仓库,yay安装的时候会再尝试把它更新回去;
    • 也不要尝试先手动执行vcs import src < ros2.reposclone需要的库,因为这个aur软件包安装脚本有点蠢,每次都会把src删除再重新生常;
    • 可以这样:将修改后的ros2.repos移动到桌面备份; 将原来的/usr/bin/vcs可执行文件重命名为vcs_raw, 然后写一个脚本命名为vcs, 放到/usr/bin下,内容为:
      cp ~/Desktop/ros2.repos ~/.cache/yay/ros2-galactic/src/ros2/
      /usr/bin/vcs_raw $*
      
      然后赋予可执行权限chmod +x /usr/bin/vcs,这样执行yay -Sy ros2-galactic至少不会卡在prepare(),能够进入编译过程了;
    • 需要编译300+软件包,并且编译的时候仍然需要从github下载东,仍然可能有网络问题,感谢党!!除了网络问题也可能遇到软件包不兼容的问题,比如没有include某个头文件,然后就又要重新开始,感觉不如手动编译源码;但是手动编译到第120个软件包左右又遇到sip4与pyqt5不兼容的问题,,,放弃,换ubuntu或者win10,按官方教程安装。
      • 清理的话,先Rs第二串,再Rs第一串。
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值