阿木实验室的普罗米修斯仿真平台搭建的难点和坑点

普罗米修斯仿真实验平台搭建的难点解决

0.我为什么要辛苦搭环境?

前一段时间阿木实验室提供了一个搭好环境的镜像,凭阿木币购买,是真的好用,阿木币嘛,签一签道就会有

关于这个镜像其实还是有点问题的,比如在虚拟机上安装会报文件系统以严重改变的错误,在只有独显的机型上会出现卡紫屏的问题,幸好第二个问题我解决了。
解决办法参考https://blog.csdn.net/qq_36376982/article/details/109819239
应该没有人不会用vim吧,应该吧,应该吧

1.必要准备

确保cpu的每个线程都能分到4g的内存,如果你电脑是4核8线程,有8g内存,那么在装机时分出一个24g的交换分区,不然在接下来的编译的过程中会内存一但耗尽就会死机。
如果已经装完系统,就用交换文件的方式添加交换分区,如下。

sudo su 

#进入管理员模式,会提示输入密码

cd /usr/;mkdir swap
cd swap
dd if=/dev/zero of=swapfile bs=1G count=24 

#这条命令是从硬盘里扣出一个24*1g的空间,挂在swapfile上

mkswap swapfile

#将swapfile转换为可用的交换文件

swapon swapfile

#激活交换文件,这时打开任务管理器已经可以看到有24g的交换分区,但这只是临时的,重启后就会失效
#为使swapfile永久生效,需要编辑fstab

sudo gedit /etc/fstab

在其中加入下面这句话

/usr/swap/swapfile              swap              swap    defaults        0 0

2.修改hosts

为了加快下载速度,添加必要的hosts

sudo gedit /etc/hosts

加入下面这些域名

52.52.171.73    packages.osrfoundation.org
140.211.166.134 packages.ros.org
91.189.91.15    archive.canonical.com
91.189.95.85    ppa.launchpad.net
13.226.18.85    download.docker.com
199.232.96.133  raw.githubusercontent.com
199.232.69.63   files.pythonhosted.org
52.239.137.100  armkeil.blob.core.windows.net

3.依赖安装:

须知:Python 2.7于2020年1月1日结束其生命。请升级您的Python,因为Python 2.7已不再维护。pip 21.0将在2021年1月放弃对Python 2.7的支持。关于在pip中支持Python 2的更多细节可以在https://pip.pypa找到。pip 21.0将删除对该功能的支持。
在执行下面命令前先更新pip,Ubuntu18.04自带的pip版本已落后

pip install -U pip
sudo apt install -y ninja-build exiftool python-argparse python-empy python-toml python-numpy python-yaml python-dev python-pip ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
pip2 install pandas jinja2 pyserial cerberus pyulog numpy toml pyquaternion   -i https://pypi.tuna.tsinghua.edu.cn/simple

这条命令会报错,原因是pyulog已经不能通过pip2进行下载了,可以用pip下载试一下

pip3 install packaging numpy empy toml pyyaml jinja2   -i https://pypi.tuna.tsinghua.edu.cn/simple

4.ros安装

安装教程:http://wiki.ros.org/melodic/Installation/Ubuntu
根据系统版本选择ros版本,中间选择 Desktop-Full Install 进行全部安装

5.mavros安装

sudo apt install ros-melodic-mavros ros-melodic-mavros-extras 
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh 
sudo chmod a+x ./install_geographiclib_datasets.sh 
sudo ./install_geographiclib_datasets.sh 

6.安装gstreamer

sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

7.px4固件

git clone https://gitee.com/amovlab/prometheus_px4.git
cd prometheus_px4
git submodule update --init --recursive
make amovlab_sitl_default gazebo

这时,make amovlab_sitl_default gazebo如果编译能进行下去,gazebo能正常打开,方可按下面的步骤进行,如果gazebo不能启动,大概率是得从头再来了。

虚拟机报错:VMware: vmw_ioctl_command error 无效的参数
解决办法:echo "export SVGA_VGPU10=0" >> ~/.bashrc然后重启

gazebo 报错 [Err] [REST.cc:205] Error in REST request 解决

修改:.ignition/fuel/config.yaml

gedit .ignition/fuel/config.yaml

url: https://api.ignitionfuel.org

改为

url: https://api.ignitionrobotics.org

8.ubuntu.sh

虽然我没有问阿木实验室,但是我感觉普罗米修斯这个项目应该是适配的gazebo9.0.0,因为我之前选择不用ros自带的gazebo也就是9.0.0而安装的ubuntu.sh里的gazebo9.16和ros-melodic-gazaebo*插件,在编译的时候报错,原因是gazebo的动态库缺少一些文件。而且我去动态库看了一下确实没有找到需要的文件,但找到了对应文件的更高版本号的文件,这是我认为普罗米修斯没有适配9.16的原因。

提前警告:千万不要擅自升级gazebo9和libignition,不然你将得到下图结果,任何自动更新中都要取消gazebo9和libignition的升级,如果您不小心忘记了,这边建议您重开呢。可以看看这时的gazebo版本
在这里插入图片描述

建议在ubuntu.sh中删除整个gazebo9的安装,也就是下面全部。

# Gazebo
	sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
	wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
	sudo DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \
		dmidecode \
		gazebo9\
		gstreamer1.0-plugins-bad \
		gstreamer1.0-plugins-base \
		gstreamer1.0-plugins-good \
		gstreamer1.0-plugins-ugly \
		gstreamer1.0-libav \
		libeigen3-dev \
		libgazebo9-dev \
		libgstreamer-plugins-base1.0-dev \
		libimage-exiftool-perl \
		libopencv-dev \
		libxml2-utils \
		pkg-config \
		protobuf-compiler \
		;

	if sudo dmidecode -t system | grep -q "Manufacturer: VMware, Inc." ; then
		# fix VMWare 3D graphics acceleration for gazebo
		echo "export SVGA_VGPU10=0" >> ~/.profile
	fi


不要担心这样做会影响仿真,ros自带的gazebo正是普罗米修斯需要的版本,gazebo需要的依赖在前面3、4、5、6步骤时已经安装好了。整个ubuntu.sh就是为了安装python3依赖和arm-gcc。
如果您认为jmavsim没什么用处的话(确实没什么用),也可以直接运行source ./ubuntu.sh --no-sim-tools跳过安装jmavsim和gazebo。

总结:
1.如果想安装python3、arm-gcc、jmavsim,删除gazebo部分之后再运行ubuntu.sh

cd ~/prometheus_px4/Tools/setup
source ./ubuntu.sh

2.如果只想安装python3、arm-gcc

cd ~/prometheus_px4/Tools/setup
source ./ubuntu.sh  --no-sim-tools

之后重启,看看还能不能正常编译,如果不能,建议重开

cd prometheus_px4
make amovlab_sitl_default gazebo

9.arm-gcc安装失败解决

在运行ubuntu.sh时,明明费了很长时间安装完arm_gcc,重启之后用下面命令查看安装结果,显示没有安装,这就很气

arm-none-eabi-gcc --version

那在运行完之后别着急重启,先新建一个文件gcc_arm_path_test.sh
打开粘贴下面语句

NUTTX_GCC_VERSION="9-2020-q2-update"		
if grep -Fxq "$exportline" $HOME/.profile; then
    echo "${NUTTX_GCC_VERSION} path already set.";
fi

保存到home,打开终端

chmod a+x gcc_arm_path_test.sh
./ gcc_arm_path_test.sh

如果显示

9-2020-q2-update path already set.

这时候再放心重启,如果啥也没有
就导航到/opt/删除gcc-arm文件夹,再执行

sudo tar -jxf /tmp/gcc-arm-none-eabi-9-2020-q2-update-linux.tar.bz2 -C /opt/
exportline="export PATH=/opt/gcc-arm-none-eabi-9-2020-q2-update/bin:\$PATH"

10.其他ros插件安装

sudo apt-get install ros-melodic-rtabmap*
sudo apt-get install ros-melodic-octomap-*
sudo apt-get install ros-melodic-cartographer*
sudo apt-get install ros-melodic-velodyne-gazebo-plugins
sudo apt-get install ros-melodic-octomap-rviz-plugins
sudo apt-get install ros-melodic-turtlebot3-*

如果是虚拟机或者核显:

pip2 install torch==1.4.0+cpu torchvision==0.5.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

如果有英维达独显,显卡驱动换成下面这个,正好对应的CUDA10.1。
在这里插入图片描述显卡驱动换成功后重启,再执行下面命令

pip2 install torch==1.4.0 torchvision==0.5.0

11.安装非线性优化工具箱 NLopt

git clone git://github.com/stevengj/nlopt  
cd nlopt  
mkdir build  
cd build  
cmake ..  
make  
sudo make install  

12.Prometheus

git clone https://gitee.com/amovlab/Prometheus.git
cd Prometheus
sudo chmod 777 ./compile_all.sh  
./compile_all.sh  #考验内存的时刻到来了,如果你虚拟内存不够的话,就等着死机吧
echo "source ~/Prometheus/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

13.环境变量配置

在wiki中,给出的环境变量配置中有几处错误,都是拼写错误,prometheus拼成了promethues

sudo gedit ~/.bashrc 

复制粘贴下面内容

export GAZEBO_PLUGIN_PATH=$GAZEBO_PLUGIN_PATH:~/Prometheus/devel/lib
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Prometheus/Simulator/gazebo_simulator/models
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Prometheus/Simulator/gazebo_simulator/amov_models
source ~/prometheus_px4/Tools/setup_gazebo.bash ~/prometheus_px4 ~/prometheus_px4/build/amovlab_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/prometheus_px4
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/prometheus_px4/Tools/sitl_gazebo

14.Prometheus仿真功能包编译

cd Prometheus
chmod a+x compile_gazebo.sh
./compile_gazebo.sh

15.Gazebo仿真运行测试

运行如下命令测试是否Gazebo仿真是否正确配置

roslaunch prometheus_gazebo sitl.launch

16.报错Unable to contact my own server at解决

这种错误是由roscore无法连接到本地服务引起的,造成这种情况的原因很多。
博主在一台电脑上配置开发环境的时候为了方便把电脑名称设置成了0-255内的纯数字名称,这时roscore在解析本地服务时会解析成0.0.0.xxx的IP地址。这是根本不可能连上的,最后ros还会提示你检查网络,并且ping一下0.0.0.xxx,感觉不是特别聪明的压子。

解决办法:

在.bashrc 中加入:

export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311

这两条应该放到所有路径设置的上方。

最后.bashrc 中的内容应该是:

export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311
export SVGA_VGPU10=0
source /opt/ros/melodic/setup.bash
source ~/Prometheus/devel/setup.bash
export GAZEBO_PLUGIN_PATH=$GAZEBO_PLUGIN_PATH:~/Prometheus/devel/lib
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Prometheus/Simulator/gazebo_simulator/models
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Prometheus/Simulator/gazebo_simulator/amov_models
source ~/prometheus_px4/Tools/setup_gazebo.bash ~/prometheus_px4 ~/prometheus_px4/build/amovlab_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/prometheus_px4
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/prometheus_px4/Tools/sitl_gazebo
  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值