Manjaro Archlinux 安装ros noetic (非docker版)

先放一张成功的图片:

这里先建议一下,最好是刚刚装完的系统,比如刚安装完的manjaro(需要AUR源和PARU) 

在这个之前,千万不要改源!!!也不要安装archlinux-cn!!!!!!! 

在这个之前,千万不要改源!!!也不要安装archlinux-cn!!!!!!! 

在这个之前,千万不要改源!!!也不要安装archlinux-cn!!!!!!! 

否则系统yay paru可能会找不到ros-noetic-desktop-full在这个源!

前期准备:

安装yay

sudo pacman -Syyu
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

安装paru 

sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si

或者
yay -S paru

安装proxychains-ng(因为需要终端访问GitHub,这个是必须的,不然编译和下源码都gg)

sudo pacman -S proxychains-ng

在 /etc/proxychains.conf里修改sock的配置,一般是这样:

socks5        127.0.0.1:1080

安装tiiiziiii(这个自己随意了~) 


安装

ROS noetic AUR packages · GitHub

喝水不忘挖井人,感谢大佬的付出~

正式开始安装

proxychains4 paru -S ros-noetic-desktop-full

一路默认即可,如果报错下不下来某个包,就点开该链接,会跳转到AUR的网页,有一个git clone的代码 (比如报链接443错误,或者报没有这个包,都可以点对应的url下载下来放到下面的目录里,然后重新运行proxychains4 paru -S ros-noetic-desktop-full),可能会报很多个包找不到,大概10~20个吧,要手动下下来。

cd /home/${USER}/.cache/paru/clone

在这里你会看到一堆ros-noetic的包,这是刚刚下载下来的,你要做的就是在这个目录把东西git clone进去,我现在找不到那个错误了,因为已经编完了。

然后全部下完以后就可以进行编译,如果编译的时候python报错,那就报什么错就sudo pip3 uninstall 什么库,比如这个

直接删除该pkg

sudo pip3 uninstall catkin_pkg

 一直安装下去之后进入编译,大概半个小时,到了编译qt的时候会要求输入用户密码(因为和manjaro默认安装的qt有冲突,需要重新安装),等系统编译完成就可以啦~

然后直接把noetic写到zsh里

vim ~/.zshrc
source /opt/ros/noetic/setup.zsh

如果中间有报libboost-date-1.78.so的错误的话,可以看github上对应的issue,这个一般是你之前有个包没有下下来,然后系统跳过了这个包去编译下面的包,就会出现有的包用libboost1.79有的包是1.78,而且你重新proxychains4 paru -S ros-noetic-desktop-full是没有用的

Build failed. No rule to make target '/usr/lib/libboost_date_time.so.1.78.0'. · Issue #39 · ros-noetic-arch/ros-noetic-desktop-full · GitHub

编译完ros以后要注意系统内核的升级,不要动到影响ros的库,比如qt, boost等等,所以建议滚动版升级要慎重!!!! 


在昨天调用velodyne的urdf模型的时候,报错/usr/include/c++/12.1.0/bits/random.h:1995: std::normal_distribution<_RealType>::param_type::param_type(_RealType, _RealType) [with _RealType = double]: Assertion '_M_stddev > _RealType(0)' failed.

我查证了一番,是这个部分报错,也就是生成均值为0,方差为1的高斯噪声报错。 

发现是c++会检查stddev <= 0 is undefined behavior. 所以stddev不能为0,我们得取一个很小的数值,比如, <stddev>0.0000001</stddev>,把urdf或者xacro里对应高斯噪声部分的方差修改一下,可以运行了,没有问题。 这个是archlinux的通病好像,目前github上遇到这个问题的都是arch


版权声明:本文为weixin_39977764原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。