Closed rookierobot closed 8 months ago
Hi,
thanks. It seems you are missing the protobuf libraries.
Did you preliminary run the script ./install_dependencies.sh
? (see the README instructions)
Could you please share which is your system configuration (OS, GCC, etc)?
Hi, thanks. It seems you are missing the protobuf libraries. Did you preliminary run the script
./install_dependencies.sh
? (see the README instructions) Could you please share which is your system configuration (OS, GCC, etc)?
I followed the readme document you gave 。And I excuted _./installdependencies.sh and ./install_local_opencv before ./build.sh is executed. But I still ran into this problem. My environment is ubuntu20.04, and the GCC version is gcc version 9.4.0。
Following the discussion opened in issue #19
I am not able to reproduce your error. I used a couple of minimal docker ubuntu20 images (w/ and w/o docker), tested once again the build procedures, and didn't succeeed to get your error.
I suggest the following steps.
I assume you already run these two scripts (from the root of your PLVS working copy) without hitting any problem:
./install_dependencies.sh
./install_local_opencv.sh
Could you please double-check and confirm this?
Next, enter in the root of your plvs working copy:
1) Use the script ./clean.sh
here
2) Try to rebuild everything. First run script ./build_thirdparty.sh
and then the full ./build.sh
If something goes wrong then use rosdocker with ubuntu20_cuda
or ubuntu20
images, and build PLVS within the run container.
I am not able to reproduce your error. I used a couple of minimal docker ubuntu20 images (w/ and w/o docker), tested once again the build procedures, and didn't succeeed to get your error.
I suggest the following steps.
I assume you already run these two scripts (from the root of your PLVS working copy) without hitting any problem:
* `./install_dependencies.sh` * `./install_local_opencv.sh`
Could you please double-check and confirm this?
Next, enter in the root of your plvs working copy:
1. Use the script `./clean.sh` [here](https://github.com/luigifreda/plvs/blob/master/clean.sh) 2. Try to rebuild everything. First run script `./build_thirdparty.sh` and then the full `./build.sh`
If something goes wrong then use rosdocker with
ubuntu20_cuda
orubuntu20
images, and build PLVS within the run container.
Thank you very much for your contribution. With your guidance, I successfully compiled 'PLVS.' Lastly, I have another question for you. Does the 'PLVS' project support the implementation and execution using our own camera within the ROS framework? Or does 'PLVS' only support testing runs with bag files?
PLVS does support ROS nodes under noetic (see this folder). You can attach your live device or use a rosbag.
./build_ros_catkin.sh
to create and build the workspace. ros_xterm*
to launch the PLVS ROS nodes. I have been playing with xtion, zed, realsense, and oak-D cameras. Look for the variable USE_LIVE
in some of these ros_xterm*
scripts. That being said, if possible, it is always better to use the low-level drivers of the cameras instead of using ROS nodes (for instance take a look at what was done for the realsense).
Hello! First of all thank you for your contribution to the community。 I'm having trouble compiling Thirdparty. It seems that an error occurred while compiling "voxblox". Is it because some libraries are missing? The error message is as follows:
Configuring and building Thirdparty/voxblox ...::Block(const BlockProto& proto)
| ^::Block(const int&)’:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:19: error: request for member ‘voxels_per_side’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^::Block(const BlockProto& proto)
| ^::Block(const int&)’:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:19: error: request for member ‘voxels_per_side’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^::getProto(BlockProto proto) const {
| ^::getProto(BlockProto proto) const {
| ^::Block(const BlockProto& proto)
| ^::Block(const int&)’:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:19: error: request for member ‘voxels_per_side’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^::getProto(BlockProto proto) const {
| ^::getProto(BlockProto proto) const {
| ^~~~~
In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:222,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11,
from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/esdf_map.h:10,
from /home/river/plvs/Thirdparty/voxblox/src/core/esdf_map.cc:1:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:12:31: error: ‘BlockProto’ does not name a type
12 | Block::Block(const BlockProto& proto)
| ^::Block(const int&)’:
/home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:19: error: request for member ‘voxels_per_side’ in ‘proto’, which is of non-class type ‘const int’
13 | : Block(proto.voxels_per_side(), proto.voxel_size(),
| ^
Build type: Release -- Using system protobuf -- -- creating symbolic links for headers
SRCDIRS: /home/river/plvs/Thirdparty/voxblox/include /home/river/plvs/Thirdparty/voxblox/minkindr/include DIR: /home/river/plvs/Thirdparty/voxblox/include ln: '/home/river/plvs/Thirdparty/voxblox/include/voxblox' 与'/home/river/plvs/Thirdparty/voxblox/include/voxblox' 为同一文件 DIR: /home/river/plvs/Thirdparty/voxblox/minkindr/include -- Configuring done -- Generating done -- Build files have been written to: /home/river/plvs/Thirdparty/voxblox/build [ 17%] Built target voxblox_proto [ 25%] Building CXX object CMakeFiles/voxblox.dir/src/core/block.cc.o [ 25%] Building CXX object CMakeFiles/voxblox.dir/src/core/esdf_map.cc.o [ 28%] Building CXX object CMakeFiles/voxblox.dir/src/core/tsdf_map.cc.o [ 32%] Building CXX object CMakeFiles/voxblox.dir/src/integrator/esdf_integrator.cc.o [ 35%] Building CXX object CMakeFiles/voxblox.dir/src/integrator/esdf_occ_integrator.cc.o [ 39%] Building CXX object CMakeFiles/voxblox.dir/src/integrator/tsdf_integrator.cc.o [ 42%] Building CXX object CMakeFiles/voxblox.dir/src/io/sdf_ply.cc.o [ 46%] Building CXX object CMakeFiles/voxblox.dir/src/simulation/objects.cc.o In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11, from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/tsdf_map.h:9, from /home/river/plvs/Thirdparty/voxblox/src/core/tsdf_map.cc:1: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type 35 | explicit Block(const BlockProto& proto); | ^
~~~~~ In file included from /home/river/plvs/Thirdparty/voxblox/src/core/block.cc:1: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type 35 | explicit Block(const BlockProto& proto); | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared 185 | void getProto(BlockProto proto) const; | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared 185 | void getProto(BlockProto proto) const; | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type 203 | void deserializeProto(const BlockProto& proto); | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared 204 | void serializeProto(BlockProto proto) const; | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type 203 | void deserializeProto(const BlockProto& proto); | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared 204 | void serializeProto(BlockProto proto) const; | ^~~~~~ In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11, from /home/river/plvs/Thirdparty/voxblox/include/voxblox/integrator/esdf_integrator.h:11, from /home/river/plvs/Thirdparty/voxblox/src/integrator/esdf_integrator.cc:1: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type 35 | explicit Block(const BlockProto& proto); | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared 185 | void getProto(BlockProto proto) const; | ^~~~~~ In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11, from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/esdf_map.h:10, from /home/river/plvs/Thirdparty/voxblox/src/core/esdf_map.cc:1: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type 35 | explicit Block(const BlockProto& proto); | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared 185 | void getProto(BlockProto proto) const; | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type 203 | void deserializeProto(const BlockProto& proto); | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared 204 | void serializeProto(BlockProto proto) const; | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type 203 | void deserializeProto(const BlockProto& proto); | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared 204 | void serializeProto(BlockProto proto) const; | ^~~~~~ In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11, from /home/river/plvs/Thirdparty/voxblox/include/voxblox/integrator/esdf_occ_integrator.h:11, from /home/river/plvs/Thirdparty/voxblox/src/integrator/esdf_occ_integrator.cc:1: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type 35 | explicit Block(const BlockProto& proto); | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared 185 | void getProto(BlockProto proto) const; | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type 203 | void deserializeProto(const BlockProto& proto); | ^~~~~~ In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11, from /home/river/plvs/Thirdparty/voxblox/include/voxblox/io/sdf_ply.h:7, from /home/river/plvs/Thirdparty/voxblox/src/io/sdf_ply.cc:1: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:35:24: error: ‘BlockProto’ does not name a type 35 | explicit Block(const BlockProto& proto); | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared 204 | void serializeProto(BlockProto proto) const; | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:185:17: error: ‘BlockProto’ has not been declared 185 | void getProto(BlockProto proto) const; | ^~~~~~ In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:222, from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11, from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/tsdf_map.h:9, from /home/river/plvs/Thirdparty/voxblox/src/core/tsdf_map.cc:1: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:12:31: error: ‘BlockProto’ does not name a type 12 | Block~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: In constructor ‘voxblox::Block~~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:44: error: request for member ‘voxel_size’ in ‘proto’, which is of non-class type ‘const int’ 13 | : Block(proto.voxels_per_side(), proto.voxel_size(), | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:25: error: request for member ‘origin_x’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:43: error: request for member ‘origin_y’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:61: error: request for member ‘origin_z’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:15:21: error: request for member ‘has_data’ in ‘proto’, which is of non-class type ‘const int’ 15 | hasdata = proto.has_data(); | ^~~~ In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:222, from /home/river/plvs/Thirdparty/voxblox/src/core/block.cc:1: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:12:31: error: ‘BlockProto’ does not name a type 12 | Block~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: In constructor ‘voxblox::Block~~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:44: error: request for member ‘voxel_size’ in ‘proto’, which is of non-class type ‘const int’ 13 | : Block(proto.voxels_per_side(), proto.voxel_size(), | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:25: error: request for member ‘origin_x’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:43: error: request for member ‘origin_y’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:61: error: request for member ‘origin_z’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:15:21: error: request for member ‘has_data’ in ‘proto’, which is of non-class type ‘const int’ 15 | hasdata = proto.has_data(); | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:19:22: error: request for member ‘voxel_data_size’ in ‘proto’, which is of non-class type ‘const int’ 19 | data.reserve(proto.voxel_data_size()); | ^~~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:21:30: error: request for member ‘voxel_data’ in ‘proto’, which is of non-class type ‘const int’ 21 | for (uint32_t word : proto.voxel_data()) { | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: At global scope: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:33: error: variable or field ‘getProto’ declared void 29 | void Block~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:203:31: error: ‘BlockProto’ does not name a type 203 | void deserializeProto(const BlockProto& proto); | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:204:23: error: ‘BlockProto’ has not been declared 204 | void serializeProto(BlockProto proto) const; | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:19:22: error: request for member ‘voxel_data_size’ in ‘proto’, which is of non-class type ‘const int’ 19 | data.reserve(proto.voxel_data_size()); | ^~~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:21:30: error: request for member ‘voxel_data’ in ‘proto’, which is of non-class type ‘const int’ 21 | for (uint32_t word : proto.voxel_data()) { | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: At global scope: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:33: error: variable or field ‘getProto’ declared void 29 | void Block~~~~~ In file included from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block.h:222, from /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/layer.h:11, from /home/river/plvs/Thirdparty/voxblox/include/voxblox/integrator/esdf_integrator.h:11, from /home/river/plvs/Thirdparty/voxblox/src/integrator/esdf_integrator.cc:1: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:12:31: error: ‘BlockProto’ does not name a type 12 | Block~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: In constructor ‘voxblox::Block~~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:44: error: request for member ‘voxel_size’ in ‘proto’, which is of non-class type ‘const int’ 13 | : Block(proto.voxels_per_side(), proto.voxel_size(), | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:25: error: request for member ‘origin_x’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:43: error: request for member ‘origin_y’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:61: error: request for member ‘origin_z’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:15:21: error: request for member ‘has_data’ in ‘proto’, which is of non-class type ‘const int’ 15 | hasdata = proto.has_data(); | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:33: error: ‘BlockProto’ was not declared in this scope /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:19:22: error: request for member ‘voxel_data_size’ in ‘proto’, which is of non-class type ‘const int’ 19 | data.reserve(proto.voxel_data_size()); | ^~~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:21:30: error: request for member ‘voxel_data’ in ‘proto’, which is of non-class type ‘const int’ 21 | for (uint32_t word : proto.voxel_data()) { | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: At global scope: /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:33: error: variable or field ‘getProto’ declared void 29 | void Block~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:33: error: ‘BlockProto’ was not declared in this scope /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:29:45: error: ‘proto’ was not declared in this scope 29 | void Block~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h: In constructor ‘voxblox::Block~~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:13:44: error: request for member ‘voxel_size’ in ‘proto’, which is of non-class type ‘const int’ 13 | : Block(proto.voxels_per_side(), proto.voxel_size(), | ^~~~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:25: error: request for member ‘origin_x’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:43: error: request for member ‘origin_y’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:14:61: error: request for member ‘origin_z’ in ‘proto’, which is of non-class type ‘const int’ 14 | Point(proto.origin_x(), proto.origin_y(), proto.origin_z())) { | ^~~~ /home/river/plvs/Thirdparty/voxblox/include/voxblox/core/block_inl.h:15:21: error: request for member ‘has_data’ in ‘proto’, which is of non-class type ‘const int’ 15 | hasdata = proto.has_data();Looking forward to your reply, thank you very much!