Error with using ORB-SLAM2 - ubuntu-16.04

I was trying to get my hands dirty with SLAM and I started with ORB-SLAM2 library.
I have downloaded a TUM sequence and wanted to use ROS for it. So I am following the steps according this page.
In Step 7, part 2, when i run ./build_ros.sh, I get the following error:
In file included from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../Thirdparty/g2o/g2o/types/../core/optimizable_graph.h:41:0,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../Thirdparty/g2o/g2o/types/../core/base_vertex.h:30,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../Thirdparty/g2o/g2o/types/types_seven_dof_expmap.h:34,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../include/LoopClosing.h:34,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../include/LocalMapping.h:26,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../include/Tracking.h:31,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../include/System.h:29,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/AR/ViewerAR.h:29,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/AR/ViewerAR.cc:21:
/home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../Thirdparty/g2o/g2o/types/../core/jacobian_workspace.h:36:24: fatal error: g2o/config.h: No such file or directory
compilation terminated.
CMakeFiles/MonoAR.dir/build.make:198: recipe for target 'CMakeFiles/MonoAR.dir/src/AR/ViewerAR.cc.o' failed
make[2]: *** [CMakeFiles/MonoAR.dir/src/AR/ViewerAR.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
I went and checked the g2o folder and there is a file by name config.h.
So why am I still getting the error?

In the CMakeLists.txt in /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/
Try adding
${PROJECT_SOURCE_DIR}/../../../Thirdparty
to the list of include_directories() at line 44 (it should be at that line if you did not change the file)
Adding this line tells the cmake where to find the g2o/config.h.

From the information, that missing g2o/config.h in jacobian_workspace.h, but when I look into the file, and do not find the include in line 36. Do I miss something, or you change something?

Related

Trying to install the mongodb extension (MacOS Big Sur)

When writing this command line
sudo C_INCLUDE_PATH=/usr/local/opt/openssl/include /Applications/XAMPP/xamppfiles/bin/pecl install mongodb
I get this error.
fatal error: 'unicode/usprep.h' file not found
#include <unicode/usprep.h>
^~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram.lo] Error 1
ERROR: `make' failed
It says something with the usprep.h, it took for me days to figure out in many different ways but unfortunately you guys may support me to solve it.

Kernel compilation fails due to PF_MAX > 44

I have a QEMU VM running an image of the Linux kernel 4.14.78.
On the host machine (a server with 96 cores), I am trying to compile a new update for the kernel with some changes I have made.
To make this process faster, I was using the host machine to compile for the target VM.
To do that I follow these steps:
copy the /boot/config-4.14.78 file from VM to host
put the copied file into the kernel source-code root directory, renaming it to .config in my
run make clean to clean it
run make menuconfig just to update the configs
run make -j$(nproc)
However, I am getting this error:
AS arch/x86/purgatory/setup-x86_64.o
CC arch/x86/purgatory/sha256.o
AS arch/x86/purgatory/entry64.o
CC arch/x86/purgatory/string.o
In file included from scripts/selinux/mdp/mdp.c:49:
./security/selinux/include/classmap.h:245:2: error: #error New address family defined, please update secclass_map.
245 | #error New address family defined, please update secclass_map.
| ^~~~~
make[3]: *** [scripts/Makefile.host:102: scripts/selinux/mdp/mdp] Error 1
make[2]: *** [scripts/Makefile.build:587: scripts/selinux/mdp] Error 2
make[2]: *** Waiting for unfinished jobs....
In file included from scripts/selinux/genheaders/genheaders.c:19:
./security/selinux/include/classmap.h:245:2: error: #error New address family defined, please update secclass_map.
245 | #error New address family defined, please update secclass_map.
| ^~~~~
CHK scripts/mod/devicetable-offsets.h
make[3]: *** [scripts/Makefile.host:102: scripts/selinux/genheaders/genheaders] Error 1
make[2]: *** [scripts/Makefile.build:587: scripts/selinux/genheaders] Error 2
make[1]: *** [scripts/Makefile.build:587: scripts/selinux] Error 2
make[1]: *** Waiting for unfinished jobs....
I have checked what causes this, and turns out that it is because of the:
include/linux/socket.h:211:#define AF_MAX 44 /* For now.. */
include/linux/socket.h:260:#define PF_MAX AF_MAX
Then, I followed this solution to print out the definition of PF_MAX at preprocessing time, and turns out that the PF_MAX is 45:
In file included from scripts/selinux/mdp/mdp.c:49:
./security/selinux/include/classmap.h:247:9: note: #pragma message: 45
247 | #pragma message(STRING(PF_MAX))
| ^~~~~~~
./security/selinux/include/classmap.h:250:2: error: #error New address family defined, please update secclass_map.
250 | #error New address family defined, please update secclass_map.
| ^~~~~
This 45 makes no sense for me, because I just checked that it is supposed to be 44.
I wonder if the build is considering the host machine instead of the target?
P.S.: These steps works fine on my local machine, which is a 8-cores machine, look the kernel version:
uname -a
Linux campes-note 5.4.86 #1 SMP Fri Jan 1 16:26:25 -03 2021 x86_64 x86_64 x86_64 GNU/Linux
UPDATE 1:
I tried to compile the kernel without any of my changes, following th above steps mentioned, and it did not compile as well, I get the same error.
UPDATE 2:
I found out that somehow, the compilation is looking at the host /usr/src/linux-headers-x.x.x files.
Instead, it should point to the same version as the target.
For that, I tried to follow this tutorial but I did not success. I am having a problem in one of the steps stated on this tutorial.
(Gathered from the now removed comments)
I have tried myself to build myself v4.14.78 followed by the latest available v4.14.214. I have found that former fails while the latter builds. So, I have bisected down to v4.14.116 that first builds correctly. Then I simple looked into the changes and found commit 760f8522ce08 ("selinux: use kernel linux/socket.h for genheaders and mdp") in the Linux stable tree which fixes the issue.
You may try to cherry-pick it to your branch and compile again.

unable to build core-image-sato with yocto rocko

I'm just starting out with yocto. Reading Embedded Linux Systems with the Yocto Project. Downloaded latest rocko release with git, created a new environment and ran bitbake core-image-sato. Got the following errors during build
ERROR: binutils-native-2.29-r0 do_install: oe_runmake failed
ERROR: binutils-native-2.29-r0 do_install: Function failed: do_install (log file is located at /home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/temp/log.do_install.73730)
ERROR: Logfile of failure stored in: /home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/temp/log.do_install.73730
...
...
...
ERROR: Task (virtual:native:/home/some-user/projects/poky/meta/recipes-devtools/binutils/binutils_2.29.bb:do_install) failed with exit code '1'
NOTE: Tasks Summary: Attempted 826 tasks of which 431 didn't need to be rerun and 1 failed.
Looked at the home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/temp/log.do_install.73730 log file and found the following in it
/home/some-user/projects/rpi-yocto-build/tmp/hosttools/ld: cannot find ../bfd/.libs/libbfd.a: No such file or directory
collect2: error: ld returned 1 exit status
Makefile:1116: recipe for target 'ld-new' failed
make[4]: *** [ld-new] Error 1
make[4]: Leaving directory '/home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/git/build.x86_64-linux.x86_64-linux/ld'
Makefile:1760: recipe for target 'install-recursive' failed
make[3]: *** [install-recursive] Error 1
make[3]: Leaving directory '/home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/git/build.x86_64-linux.x86_64-linux/ld'
Makefile:1931: recipe for target 'install' failed
make[2]: *** [install] Error 2
make[2]: Leaving directory '/home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/git/build.x86_64-linux.x86_64-linux/ld'
Makefile:7204: recipe for target 'install-ld' failed
make[1]: *** [install-ld] Error 2
make[1]: *** Waiting for unfinished jobs...
Is ../bfd/.libs/libbfd.a something I should have installed on my machine or it is rocko that is missing it? Is there a fix for this?
I'd suggest that that isn't the actual error, but a subsequent one. Can you do bitbake binutils-native -cclean (to wipe away the partial build) and then bitbake binutils-native, and assuming it breaks again pastebin the entire log.do_install.
Also I've not read that book but it might be worth trying with MACHINE=qemux86 from just a clone of Poky, so we can rule out other layers or configuration.

why u-boot source code remove while compiling?

I am perorming following steps for compiling source code locally. i am using poky version pyro of yocto. but after successfully clean the source code, while compiling source code is remove and error is display.
step 1
bitbake -v -c clean u-boot
step 2
bitbake -v u-boot
------------------------------Eroor-------------------------------
make: *** No rule to make target 'am335x_boneblack_config'. Stop.
make: Leaving directory '/u-boot/u-boot_v2017.01/u-boot_src'
ERROR: u-boot-1_2017.01-r0 do_compile: oe_runmake failed
ERROR: u-boot-1_2017.01-r0 do_compile: Function failed: do_compile (log file is located at /PYRO_BUILD/tmp/work/beaglebone-poky-linux-gnueabi/u-boot/1_2017.01-r0/temp/log.do_compile.10915)
ERROR: Logfile of failure stored in: /PYRO_BUILD/tmp/work/beaglebone-poky-linux-gnueabi/u-boot/1_2017.01-r0/temp/log.do_compile.10915
how should i resolve it?
make: *** No rule to make target 'am335x_boneblack_config'. Stop.
make: Leaving directory
'//src_bsp/u-boot/u-boot_v2017.01/u-boot_src'
From above error, It seems that you have uboot code locally at '//u-boot/u-boot_v2017.01/u-boot_src' which gets deleted on compiling(bitbake -v u-boot).
Try using EXTERNALSRC instead of S to specify path to u-boot source code as follows :
inherit externalsrc
EXTERNALSRC = "/<workspace>/u-boot/u-boot_v2017.01/u-boot_src"
EXTERNALSRC_BUILD = "/<workspace>/u-boot/u-boot_v2017.01/u-boot_src"

Running a scala script: changing function name and recompiling does not have an effect

After I change the function name from something else to addOptitrans and recompile, I get the following error:
make final_babylon DICTS=.* bash ../bin/babylon_add_optitrans.sh
DICTS=.* /tmp/scalacmd6937716255793087955.scala:1: error: value
addOptitrans is not a member of object
stardict_sanskrit.batchProcessor
stardict_sanskrit.batchProcessor.addOptitrans("DICTS=.*")
^ one error found make: *** [final_babylon] Error 1
I have confirmed that the updated class is produced in the expected place in the classpath. What could be going wrong?
Delete temporary files with rm -r /tmp/scala*. Then rerun the command.