Home | Project DAVE仿真项目来源于这个
1 安装ubuntu
首先选择直接在主机上配置,之前安装了ubuntu22.04版本的,因为前面提到最新的测试在ubuntu22.04下进行,本来想直接按照最高要求进行,但是发现在主机上的配置前提是ubuntu20.04,后来重新安装了20.04版本的ubuntu。
安装好Ubuntu20.04后,在桌面的右上方弹出一个错误
未知错误:"<calss 'KeyError'>"("The cache has no package named 'ubuntu-pro-client:amd64'")
这通常意味着您安装的软件包有未满足的依赖关系
直接安装依赖就可以解决
sudo apt-get install ubuntu-pro-client:amd64
我直接在官网上下载的ubuntu镜像源,不知道为什么还是有这个问题,但是无所谓了,能解决的问题就是小问题
2 安装ros和gazebo
这部分应该放在安装CUDA的部分之后再看
【ubuntu】ubuntu20.04安装ros noetic(亲测有效,附操作步骤)-CSDN博客
按照文章步骤进行未弹出错误,在安装ros和gazebo的时候想要测试一下小海龟,roscore未出错,但在第二个终端进行rosrun的时候显示没有rosrun随即在网上找了安装ros的教程,按照上文进行配置,成功测试小海龟。
sudo apt update
sudo apt full-upgradesudo apt install -y build-essential cmake cppcheck curl git gnupg libeigen3-dev libgles2-mesa-dev lsb-release pkg-config protobuf-compiler python3-dbg python3-pip python3-venv qtbase5-dev ruby software-properties-common sudo wget
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros1-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
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 https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt update
DIST=noetic
GAZ=gazebo11
sudo apt install -y ${GAZ} lib${GAZ}-dev python3-catkin-tools python3-rosdep python3-rosinstall python3-rosinstall-generator python3-vcstool ros-${DIST}-gazebo-plugins ros-${DIST}-gazebo-ros ros-${DIST}-gazebo-ros-control ros-${DIST}-gazebo-ros-pkgs ros-${DIST}-effort-controllers ros-${DIST}-geographic-info ros-${DIST}-hector-gazebo-plugins ros-${DIST}-image-view ros-${DIST}-joint-state-controller ros-${DIST}-joint-state-publisher ros-${DIST}-joy ros-${DIST}-joy-teleop ros-${DIST}-kdl-parser-py ros-${DIST}-key-teleop ros-${DIST}-move-base ros-${DIST}-moveit-commander ros-${DIST}-moveit-planners ros-${DIST}-moveit-simple-controller-manager ros-${DIST}-moveit-ros-visualization ros-${DIST}-pcl-ros ros-${DIST}-robot-localization ros-${DIST}-robot-state-publisher ros-${DIST}-ros-base ros-${DIST}-ros-controllers ros-${DIST}-rqt ros-${DIST}-rqt-common-plugins ros-${DIST}-rqt-robot-plugins ros-${DIST}-rviz ros-${DIST}-teleop-tools ros-${DIST}-teleop-twist-joy ros-${DIST}-teleop-twist-keyboard ros-${DIST}-tf2-geometry-msgs ros-${DIST}-tf2-tools ros-${DIST}-urdfdom-py ros-${DIST}-velodyne-gazebo-plugins ros-${DIST}-velodyne-simulator ros-${DIST}-xacro
完成后,进行小海龟的测试,显示没有rosrun命令,所以就运行上面文章中的安装部分
sudo apt install ros-noetic-desktop-full
//设置&更新环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
//安装ros所需工具sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential python3-roslaunch
//进行测试//第一个终端运行
roscore
//第二个终端运行
rosrun turtlesim turtlesim_node
//第三个终端运行
rosrun turtlesim turtle_teleop_key
//然后将鼠标放在第三个终端里,操控键盘上的方向键就可以控制小海龟移动。
按照原文运行gazebo能够成功现实,且检查gazebo的版本有显示,但同原文中给出的有不同。
//验证gazebo能否启动
gazebo
//检查gazebo版本
gazebo --version
3 获取源代码
mkdir -p ~/uuv_ws/src
cd ~/uuv_ws/src
git clone https://github.com/Field-Robotics-Lab/dave.gitsudo pip3 install -U vcstool //不知道这一步是不是必须的,但我感觉如果不用vcs的话可能这一句也并不必要
在获取源代码的这一步,首先是安装vcs有问题,根据文章的显示说vcstool对网络的要求很高,可以自己clone每个包,在之前的虚拟机上运行这个方法是可行的。
NONONO
有问题,应该是进入到~/uuv_ws/src/dave/extras/repos中的dave_sim.repos然后将其中的gist@github.com: 换成 https://github.com/,然后在进行vcs,(但我记得我的vcs很失败),我看到一篇文章中说,如果直接clone可能会出现问题,就是各种问题,所以我决定
1、先更改.repos文件中的内容,然后进行vcs,安装vcs的时候报错了,所以到底是不是网络的问题,就是vcstool里面的(MD这个网站本身都好难打开),我认为如果只是安装的话应该只需要进行如下代码(按照vcstool - ROS Wiki)
sudo apt install python3-vcstool
//我直接用的这个
or
sudo pip install -U vcstool
dave项目中提到的安装代码是:
sudo pip3 install -U vcstool
//之前的实验中执行过这个,都没什么问题
因为原来安装了python3所以,无所谓用 pip还是pip3,所以这一步应该只需要进行安装就可以,不需要按照vcstool中的进行创建工作区&填充工作区的操作。
2、如果以上方法行不通,那可以再进行git clone
这一部分是我之前使用的,进行catkin build的时候确实报错了,不清楚是clone导致的还是CUDA导致的
git clone https://github.com/Field-Robotics-Lab/dave.git
git clone https://github.com/Field-Robotics-Lab/dockwater.git
git clone https://github.com/Field-Robotics-Lab/ds_msgs.git
git clone https://github.com/Field-Robotics-Lab/ds_sim.git
git clone https://github.com/uuvsimulator/eca_a9.git
git clone https://github.com/uuvsimulator/rexrov2.git
git clone https://github.com/field-robotics-lab/uuv_manipulators
git clone https://github.com/field-robotics-lab/uuv_simulator
git clone 的时候显示问题:
GnuTLS recv error (-110): The TLS connection was non-properly terminated.
在csdn上寻找解决方法中看到有人说是网络的问题,然后直接再运行这句命令即可正常下载(有效!)
因为我的实验需要多波束声纳的部分,所以我这边还运行了
git clone https://github.com/field-robotics-lab/nps_uw_multibeam_sonar
git clone https://github.com/apl-ocean-engineering/hydrographic_msgs.git
4 选择nvidia和安装CUDA
编译过程中出现问题,按照报错应该是由于没有安装CUDA的造成的(我看的自己的情况,Maybe,我也不懂,然后就准备装CUDA,然后就风狂有错误),所以先进入多波束声纳的部分进行这部分的内容,在软件和更新中选择附加驱动,选择535(文中提到用22版本测试成功的),然后安装CUDA部分又有问题,网页没有找到(404not found),现在考虑参考别人的进行安装。
运行 sudo sh命令的时候显示/tmp空间不足或者包损坏的提示
首先考虑空间不足进行尝试,解决不了问题,准备重装系统优先配置nvidia和cuda
ubuntu 20.04LTS下安装cuda时提示/tmp空间不足问题的解决方案_cuda因为磁盘空间不够未安装完成咋办-CSDN博客
5 重装系统
没有解决问题,重装ubuntu,然后将根目录分配了40G的空间(你这个冷漠无情的系统,现在你开心了吧,我是不会原谅你的,你这个冷漠无情的人),就成功了,具体步骤参考上述安装CUDA的进行即可。
在继续进行时,执行
nvcc --version
显示找不到nvcc的命令,建议进行
sudo apt-get install nvidia-cuda-toolkit
如果按照原文中进行sudo apt-get install cuda-toolkit会显示无法定位软件包cuda-toolkit
然后运行
gedit ~/.bashrc
将添加可执行文件和库的路径,运行文中的代码(这里我没有按照上文安装的要求,不知道会不会有影响,先做尝试),在进行这一步之前运行nvcc都显示的其他版本的(我的是10.1),如果运行nvidia-smi均显示为12.2
使用nvcc --version可以查询到CUDA为12.3,但是如果用nvidia-smi中依然显示为12.2版本,不清楚有没有影响。哦找了一下大概原因在这里,就是说nvcc查到的才对,所以这个没问题咯。
正确查看自己的CUDA版本(不要再被骗啦)_查看cuda-CSDN博客
接下来再重装ros和gazebo
我要被折磨到崩溃了。)心碎QAQ
重新安装ROS好了,结束了,准备回宿舍结束这痛苦的一天。
明天先不作多波束声纳那一部分,然后看看catkin build 会不会出错。
6 重新获取源代码&运行demo
今天重新进行这一部分,神奇,居然没有之前的错,现在还不敢运行那个多波束声纳的部分,显示是下面的样子,不清楚是不是算成功了
=== ./dockwater (git) ===
正克隆到 '.'...
=== ./ds_msgs (git) ===
正克隆到 '.'...
=== ./ds_sim (git) ===
正克隆到 '.'...
=== ./eca_a9 (git) ===
正克隆到 '.'...
=== ./rexrov2 (git) ===
正克隆到 '.'...
=== ./uuv_manipulators (git) ===
正克隆到 '.'...
=== ./uuv_simulator (git) ===
正克隆到 '.'...
之前会有dave项目中原来显示的permission denied的错误,然后还有文章中显示的skip的错误,但是现在没有显示(因为我之前没有理解正确,直接用的git clone,而不是修改文件中的git地址)
目前没有进行多波束声纳的部分,我想先完成其他部分的配置后在完成,居然成功了,但是其实extras里面有多波束的部分,且我没有进行修改,不知道怎么成功的,反正这样的话运行dave的demo应该是没有问题的(之前虚拟机上也成功运行了)
然后运行demo
有实例的显示(但为什么这么暗???)我记得之前不是这样的啊啊啊啊,而且终端显示了一个错误:
[ERROR] [1716273680.564320913]: Couldn't open joystick /dev/input/js0. Will retry every second.
但是正常显示了,我先不管了)
Couldn’t open joystick /dev/input/js0. Will retry every second.
看到大佬说是因为没有连接手柄这种,非致命错误,可以忽略。
来自Learning High-Speed Flight in the Wild复现遇到的问题记录-CSDN博客中提到的,那应该确实没有影响(我猜的
ctrl+c不能关闭,采用
pkill gzclient && pkill gzserver 强制关闭(虽然确实关闭了gazebo的窗口但是弹了错误先不管了)
7 多波束声纳的部分
(好想开始拖延QAQ阿啊啊啊啊,好担心会出错)
关于多波束声纳的部分,我参考的两个文章中的这部分都采用了下面的链接:
但是我在multibeam_sim.repos文件(uuv_ws/src/dave/extras/repos)中看到的如果只是替换gist@github.com为https://github.com/我的代码中应该是GitHub - apl-ocean-engineering/marine_msgs: Messages for DVLs, multibeams, and imaging sonars.Messages for DVLs, multibeams, and imaging sonars. - apl-ocean-engineering/marine_msgshttps://github.com/apl-ocean-engineering/marine_msgs.git
这两个链接所指向的是同一个网站hh,那就没事了,然后就是执行vcs命令了,啊啊啊啊真的不想做,出错怎么办,我要紫砂啊啊啊)
嘻嘻居然没有出错耶
=== ./marine_msgs (git) ===
正克隆到 '.'...
注意:正在切换到 'tags/v2.0.0'。您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以在切换
回一个分支时,丢弃在此状态下所做的提交而不对分支造成影响。如果您想要通过创建分支来保留在此状态下所做的提交,您可以通过在 switch 命令
中添加参数 -c 来实现(现在或稍后)。例如:git switch -c <新分支名>
或者撤销此操作:
git switch -
通过将配置变量 advice.detachedHead 设置为 false 来关闭此建议
HEAD 目前位于 c42afbb Feature/rename for release (#37)
=== ./nps_uw_multibeam_sonar (git) ===
正克隆到 '.'...
显示如上,我猜测应该没有问题,不知道这边没有编译是不是不行呢?那现在有两个方法:
1、直接运行,因为dave项目在这一部分没有进行catkin build,而且注意到,之前进行catkin build的时候,也是104个包,这里的104个包和之前已经clone多波束声纳的包数量是一样的
2、运行如果出现问题,在尝试重新进行一次catkin build,看看能否解决问题
nonono 在上面docker中写了要进行编译的,这个时候是106个包,但是出现了一些警告,不知道怎么整,所以是要编译后运行的
要认真看一下原文中关于docker配置之后到启动gazebo的内容,在哪个文件夹中进行编译,在哪个文件夹中进行运行,一定好好来。
成功啦!!!!
牛牛牛!!!
之前在虚拟机中运行能够出现gazebo的图,但是没有声纳的显示,根据显示应该是CUDA的问题,所以才想到在主机上安装双系统,成功!
8 小结
之前一直在虚拟机中运行,因为驱动和cuda的问题一直搞不好,我又是电脑小白,对于文章中提出的option B使用docker进行的方法掌握不好,本来在虚拟机上是要用docker的,但是我又不会用ubuntu又不会docker,一点一点摸索,希望我的这部分经验可以给后面进行这个仿真的家人一点参考,至今已经进行一个月整,还好做出来了。