Add shell script as executable to catkin package to use with rosrun - c++

When using a catkin package it is possible to start the c++ executables, that were added in the CMakeLists.txt, using the command rosrun <package_name> <executable_name> from anywhere on the computer.
Is there a way to add a shell script as an executable to the catkin package so that it can be called using rosrun <package_name> <script.sh>?

Yes it is. You can do this by performing the following steps:
You need to place your script in the scripts folder of your package. Also the script needs to be marked as executable (chmod +x your_script.sh).
After sourcing your workspace, you can run and launch the script with ROS tools like
rosrun your_package your_script.sh
Note that you need to add your script also to the CMakeLists.txt in case of installation:
install(PROGRAMS scripts/your_script.sh
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

Related

How to install Conan build tools in the Jenkins machine

I have an installation of Jenkins on Azure and wish to build a c++ project using Conan. Many examples show the following pipeline command to initiate Conan:
def conanClient = Artifactory.newConanClient()
however this throws an error:
sh: 1: conan: not found ERROR: Couldn't execute Conan task.
RuntimeException: Conan build failed with exit code 127
I assumed the newConanClient() would install Conan but that is not the case as verified by:
sh 'conan -v' resulting in conan: not found
From the JFrog documentation you would think there shouldn't be any problems as they say:
There is no need for any special setup for it, just install Conan and
your build tools in the Jenkins machine and call the needed Conan
commands.
https://docs.conan.io/en/latest/integrations/ci/jenkins.html?highlight=jenkins
So how does one "just install Conan" in Jenkins?
From the Documentation:
Conan can be installed in many Operating Systems. It has been extensively
used and tested in Windows, Linux (different distros), OSX, and is also
actively used in FreeBSD and Solaris SunOS. There are also several
additional operating systems on which it has been reported to work.
Based on your OS, you can install from here. newConanClient() method is part of the Artifactory plugin for Jenkins but doesn't install Conan
Now you can verify the installation
conan -v
and further can execute commands in Jenkins pipeline
sh 'conan build .'

How to install the lustre client on Ubuntu nodes?

I am trying to install the lustre clients on Unbuntu 20.04 nodes I have in GCP. Im using linux kernel version 5.15.0-1021-gcp.
I'm trying to install the client with the following code:
cd /home/apps/
mkdir lustre
git clone git://git.whamcloud.com/fs/lustre-release.git
cd lustre-release
git checkout 2.15.0
sh autogen.sh
./configure --prefix=/home/apps/lustre --disable-server --enable-client ## doesnt run! Fails at ./configures with error message "error: Run make config in /lib/modules/5.15.0-1021-gcp/build"
make debs
The configure step fails with an error about running make config in /lib/modules/5.15.0-1021-gcp/build. I tried running make config in /lib/modules/5.15.0-1021-gcp/build but was asked to input some values that I was unsure of.
I also tried downloading the deb package of the client software at
https://downloads.whamcloud.com/public/lustre/lustre-2.15.0/ubuntu2004/client/lustre-client-modules-5.4.0-96-generic_2.15.0-1_amd64.deb. However this is for the wrong linux kernel and I'm not sure what env variables need to be set for this package.
Anyone know how to install the client modules for lustre on Ubuntu?
You need to have the kernel sources or kernel-devel package that exactly match the kernel that you are installing on. This should also include the .config file that describes all of the options used when building your kernel.
Alternately, you could try a pre-built package, but it isn't clear if this will install on your kernel or not.
https://build.whamcloud.com/job/lustre-b2_15/40/arch=x86_64,build_type=client,distro=ubuntu2204,ib_stack=inkernel/

Virtualenv and django not working in bash on windows 10

I have a problem with using virtualenv and django in bash. If I type python -m venv env in cmd, then env\Scripts\activate, and then virtualenv - I get 'virtualenv' is not recognized as an internal or external command, operable program or batch file.. If I do the same in bash I get bash: virtualenv: command not found. How do I fix this?
Try the following to resolve your issue.
Check all of the environment variables related to the software you require to be used at least.
Check the permissions for files and folders for the software.
Sometimes uninstalling and installing the software with issues can solve problems quickly.
If you have performed number 2. and you are still have errors, proceed to number 3.
You may have dependencies missing, a good tool i have used on Windows is Dependency Walker, and the software will check if any file and dependencies are missing, and you should be able to download them.
An error message may output a file is not found but in fact a dependency is missing, relating to the software you are trying to run.
Try the following steps in the terminal, it may solve your problem.
using terminal, mkdir to make a directory for your project
cd to your project folder/dir
type pip3 freeze, it will show up all the installed packages and dependencies on global scope/system
but we gonna have a venv where we will install our necessary packages and dependencies
type python3 -m venv ./venv to create venv inside your current project folder, please ensure you are inside the folder before running this command
[if you are not using python 3, then the command will be python -m venv ./venv]
to actiavte environment,
on mac, run source ./venv/bin/activate ||
on windows, run .\venv\Scripts\activate.bat [if it doesn't work, try to put your absolute path]
you can check what is installed inside venv using pip freeze, you will see nothing inside the venv
Now you can install django inside venv for your project
to deactivate the environment, just type deactivate

Error while setting up Movesense platform with Cmake commands

I've been trying to set up movesense platform in my windows 10 machine and facing issues with cmake commands.
I pulled the movesense container using docker
docker pull movesense/sensor-build-env:latest
I cloned the movesense repo using the below code
git clone git#bitbucket.org:suunto/movesense-device-lib.git
Then I moved to the cloned folder
cd movesense-device-lib
Then I started the docker image on the terminal
docker run -it --rm -v c:/My/Project/Folder/movesense-device-lib:/movesense:delegated movesense/sensor-build-env:latest
The docker prompted and I followed the below commands
cd /movesense
mkdir myBuild
cd myBuild
Now, I ran the CMake "Run the CMake (needs to be done only once unless you add files to the project). It's possible to build both the debug and release version. In both cases the command will contain the following:" by the following command
cmake -G Ninja -DMOVESENSE_CORE_LIBRARY=../MovesenseCoreLib/ -DCMAKE_TOOLCHAIN_FILE=../MovesenseCoreLib/toolchain/gcc-nrf52.cmake <sample_directory>
I created a sample folder as build1 and saved. In the place of sample_directory, I pasted "build" and executed the command.
But in return I get an error as
CMake Error: The source directory "/movesense/myBuild/build" does not appear to contain CMakeLists.txt. Specify --help for usage, or press the help button on the CMake GUI.
The objective is to create a project as zip file and run it in visual studio. Please help me to solve the issue. I've attached the links of the documents which I followed from movesense.
Movesense Set up document
The "<sample_directory>" should be a path to the folder where the firmware source code is (i.e. the sample app folder). If you create the build folder as /movesense/myBuild and cd into it, the path would be ../samples/blinky_app if you are building the blinky_app -sample.
Full disclosure: I work for the movesense team

Using gulp.src to match all subdirectories of a given directory, excluding given directory

I'm using gulp and gulp-chug to match all subdirectories of a given directory. What I want to perform is to watch several projects gulpfiles.
I want to match all gulpfile.js files inside subdirectories:
/path/to/dir/dir1/gulpfile.js
/path/to/dir/dir2/dir3/gulpfile.js
/path/to/dir/dir4/gulpfile.js
While excluding:
/path/to/dir/
I'm using the following pattern on gulp.src:
/path/to/dir/**/*.js
When I run the gulp task, I get the following error:
Unable to find local gulp. Try running 'npm install gulp' from /path/to/dir/.
Shouldn't /path/to/dir/ be excluded by the given pattern? Why is it looking for gulp on a directory that I don't want to be matched? Gulp is not installed on /path/to/dir/ because I don't want to search for gulpfiles on this directory.
Thanks in advance!
Look again. The error message actually tells you what's wrong and how to fix it.
You don't have the gulp npm package installed in your local project. There's two parts to gulp. The global gulp only installs the command-line application, you still need gulp installed within your project.
Go to your directory, and run the command it tells you to:
npm install gulp
// or, better run this:
npm install --save-dev gulp
Or, rather, follow the installation instructions for gulp.