怎么做網(wǎng)站推廣臨沂關(guān)鍵詞排名手機(jī)優(yōu)化軟件
官網(wǎng)代碼
后退地平線下一個(gè)最佳景觀規(guī)劃師
??????這個(gè)代碼有些久遠(yuǎn),issue里面有人已經(jīng)在ubuntu20里面使用了3dmr,但是他那個(gè)代碼我也運(yùn)行不成功,docker網(wǎng)絡(luò)一直也不佳,所以還是自己重新修改源碼靠譜。
最終實(shí)現(xiàn)的代碼等有時(shí)間上傳到github上。
最終實(shí)現(xiàn)的代碼:下載后直接編譯,我前面配置過(guò)環(huán)境所以都不缺,如果有什么缺的可以回復(fù),我完善下。
GitHub - anning808/nbvplanner: A real-time capable exploration and inspection path planner (next best view planning)
catkin build
roslaunch interface_nbvp_rotors flat_exploration.launch
規(guī)劃器的安裝和執(zhí)行
要運(yùn)行當(dāng)前版本,請(qǐng)編譯包 nbvplanner。要獲取它,請(qǐng)導(dǎo)航到 ros 工作區(qū)的源文件夾:
git clone https://github.com/ethz-asl/nbvplanner.git
cd nbvplanner git submodule init --
git submodule sync --recursive
git submodule update --recursive
cd ..
此外,請(qǐng)確保您擁有所有必要的庫(kù):
sudo apt-get install ros-noetic-octomap-*
sudo apt-get install python-catkin-tools
編譯問(wèn)題:
-
rotors_gazebo_plugins/common.h 添加 #include <gazebo/sensors/Sensor.hh>
-
gazebo_odometry_plugin.cpp 更改:
octomath::Vector3 p = to_check.top();
if ((p.x() > bounding_box_origin.x - bounding_box_lengths.x / 2) &&(p.x() < bounding_box_origin.x + bounding_box_lengths.x / 2) &&(p.y() > bounding_box_origin.y - bounding_box_lengths.y / 2) &&(p.y() < bounding_box_origin.y + bounding_box_lengths.y / 2) &&(p.z() > bounding_box_origin.z - bounding_box_lengths.z / 2) &&(p.z() < bounding_box_origin.z + bounding_box_lengths.z / 2) &&(!octomap_->search(p))) {octomap_->setNodeValue(p, 0);
改為?:?
ignition::math::Vector3<double> p = to_check.top();octomap::point3d point(p.X(), p.Y(), p.Z());if ((p.X() > bounding_box_origin.X() - bounding_box_lengths.X() / 2) &&(p.X() < bounding_box_origin.X() + bounding_box_lengths.X() / 2) &&(p.Y() > bounding_box_origin.Y() - bounding_box_lengths.Y() / 2) &&(p.Y() < bounding_box_origin.Y() + bounding_box_lengths.Y() / 2) &&(p.Z() > bounding_box_origin.Z() - bounding_box_lengths.Z() / 2) &&(p.Z() < bounding_box_origin.Z() + bounding_box_lengths.Z() / 2) &&(!octomap_->search(point))) {octomap_->setNodeValue(point, 0);
3.版本不同需要更換的內(nèi)容,使用vscode全局搜索,全局替換(有部分不是全局修改)
最好選擇一個(gè)個(gè)編譯,一個(gè)一個(gè)改。
-
全局替換:add_definitions(-std=c++11) →add_definitions(-std=c++14)
-
全局替換:GetPhysicsEngine() →Physics()
-
全局替換:#include <gazebo/math/Vector3.hh> → #include <ignition/math.hh>
-
全局替換:math::Vector3 → ignition::math::Vector3<double>
-
全局替換:event::Events::DisconnectWorldUpdateBegin(updateConnection); → this->updateConnection.reset();
-
全局替換:GetSimTime →SimTime
-
全局替換:include_directories(${Eigen_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS}) → include_directories(${Eigen_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS} ../../../devel/include)
-
全局替換:GetAngle(0).Radian(); → Position(0);
-
全局替換:event::Events::DisconnectWorldUpdateBegin(update_connection_); → this->updateConnection.reset();
-
GetGlobalAxis →GlobalAxis
-
math::Quaternion → ignition::math::Quaternion<double>
-
GetWorldCoGPose →WorldCoGPose
-
pose_difference.rot.RotateVector →pose_difference.Rot().RotateVector
-
GetRelativeLinearVel → RelativeLinearVel
-
GetWorldPose → WorldPose
-
GetEntity → EntityByName
-
GetRelativeAngularVel → RelativeAngularVel
-
.rot. → .Rot().
-
.rot → .Rot()
-
GetInverse → Inverse
-
sdf::Vector3 → ignition::math::Vector3<double>
-
CV_LOAD_IMAGE_GRAYSCALE -> cv::IMREAD_GRAYSCALE
-
GetRelativeLinearAccel -> RelativeLinearAccel
-
GetWorldAngularVel -> WorldAngularVel
-
GetLength -> Length
-
參考:
官方7-》8的遷移記錄,可以換tag找其他版本
https://github.com/gazebosim/gazebo-classic/blob/gazebo8_8.0.0_beta1/Migration.md
gazebo7---->gazebo9代碼遷移_event::events::disconnectworldupdatebegin(this->up-CSDN博客
編譯nbv_planner遇到的問(wèn)題_nbvplanner-CSDN博客
4.usr/bin/ld: 找不到 -lUUID::UUID sudo apt-get install uuid-dev 還是找不到就自己軟鏈接:locate libuuid搜索位置 然后創(chuàng)建軟鏈接 cd /usr/lib/ sudo ln -s x86_64-linux-gnu/libuuid.so libUUID::UUID.so
5.error: ‘class ignition::math::v6::Vector3<double>’ has no member named ‘x’ 類(lèi)似很多vel.z的xyz的格式改為 vel→X()格式,但是不能全局替換,只能根據(jù)報(bào)錯(cuò)部分一點(diǎn)點(diǎn)替換改為大寫(xiě)的X()Y()Z()
6.將 interface_nbvp_rotors 的 CMakeLists.txt 從
include_directories(${Eigen_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS})
更改為
include_directories(${Eigen_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS} ../../../devel/include)
7.修改添加頭文件 gazebo_imu_plugin.cpp里面的
gravity_W_ = world->Physics()->GetGravity();
imu_parameters.gravity_magnitude = gravity_W_.GetLength();
更換為
#include <gazebo/physics/World.hh>(添加到最前面)
(替換上面位置) gravity_W_ = world_->Physics()->World()->Gravity();imu_parameters_.gravity_magnitude = gravity_W_.Length();
編譯
catkin build
成功!
幾個(gè)運(yùn)行問(wèn)題:
對(duì)于模擬演示啟動(dòng)
運(yùn)行失敗noetic啟動(dòng)方式改變:
$(find rotors_description)/scripts/xacro.py
改為:
$(find rotors_description)/scripts/xacro
還有部分問(wèn)題根據(jù)別人的回答解決:
???????Error running demo launch file · Issue #30 · ethz-asl/nbvplanner · GitHub
https://orfaustria1.com/?_=/ethz-asl/rotors_simulator/issues/710#KJWqMdlUlBnsIvkdRR+uhIT4
運(yùn)行:
roslaunch interface_nbvp_rotors flat_exploration.launch
成功!