Skip to content

usefull comands

Bahrami edited this page May 3, 2023 · 14 revisions

voxl

systemctl restart voxl-vision-px4

copy and paste into voxl

scp sth.txt root@172.16.0.30:~/catkin_ws

adb

details in voxl-vision-px4

voxl-docker

if voxl-emulator does not start and sends an error like this:

exec /opt/container/bin/adduser-sdk.sh: exec format error

run

$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

mkdir -p ~/voxl_test_ws/src && cd ~/voxl_test_ws

catkin init


docker setup for running Ubuntu and ROS

  • configure the docker support on voxl: voxl-configure-docker-support.sh be mindful of the command available on your platform. (it cab be run in w/ and w/o bash)

  • running docker + mounting the VOXL's Yocto home directory inside the docker image at ~/yoctohome/

docker run -it --rm --privileged --net=host --name roskinetic -v /home/root:/root/yoctohome/:rw -w /root/ roskinetic-xenial:v1.0 /bin/bash

or

voxl-docker -i roskinetic-xenial:v1.0

for the details of voxl-docker, check out voxl-docker.sh in the voxl-docker repo.

Docker build - multi-arch

Jetson and VOXL have an arm64 architecture while our developing computer is amd64. How to build on amd64 and deploy on arm64?

Solutions: see here

  • using QEMU to build on your workstation (x86_64 platform) and run it on an NVIDIA Jetson or VOXL with ARM architecture.
  • Multi-arch builds and Github actions for CI: docker manifest or docker buildx. See here for instructions and comparisons.
  • Multi-arch builds and Gitlab CI. here

se also, Use Docker to build Docker images and IBM GitLab CI and .gitlab-ci.yml gist

save from host and load on VOXL

in host:

# build
docker build --tag neoros:v0 --file Dockerfile.noetic --platform=linux/amd64 .
# takes time
docker save neoros:v0 | gzip > neoros.tar.gz
# when it's done run the following
scp docker/neoros.tar.gz root@172.16.0.30:/data/docker
# when it's done move to the voxl

in voxl:

voxl:/data/docker$ docker load -i neoros.tar.gz
# takes time, up to 20 mins
docker run -it --rm --privileged --net=host --name rosnoetic -v /home/root:/root/yoctohome/:rw -w /root/ neoros:v0 /bin/bash
# /bin/bash: /bin/bash: cannot execute binary file

running without /bin/bash works.

in voxl:

/ # docker version
Client:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.6.2
 Git commit:   76d6bc9-dirty
 Built:        Wed Aug 28 17:05:35 UTC 2019
 OS/Arch:      linux/arm64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

and

/ # voxl-version
cat: /etc/modalai/voxl-software-bundle-version.txt: No such file or directory
--------------------------------------------------------------------------------
system-image:    ModalAI 3.6.0 BUILDER: ekatzfey BUILD_TIME: 2022-02-28_23:47
kernel:          #1 SMP PREEMPT Mon Feb 28 23:55:47 UTC 2022 3.18.71-perf
factory-bundle:  1.0.1 (Yocto installation)
--------------------------------------------------------------------------------
architecture:    aarch64
processor:       apq8096
os:              GNU/Linux
--------------------------------------------------------------------------------
voxl-suite:
Package: voxl-suite
Version: 0.5.0
Depends: libjpeg_turbo (>= 9.0.4), libmodal_exposure (>= 0.0.2), libmodal_json (>= 0.3.6), libmodal_pipe (>= 2.1.1), librc_math (>= 1.1.5), libvoxl_cutils (>= 0.0.2), libvoxl_io (>= 0.5.4), mavlink-camera-manager (>= 0.0.2), mongoose (>= 7.3.0), opencv (>= 4.5.2-2), openmp (>= 10.0.2), voxl-camera-calibration (>= 0.1.1), voxl-camera-server (>= 0.8.1), voxl-cpu-monitor (>= 0.2.0), voxl-dfs-server (>= 0.2.2), voxl-docker-support (>= 1.1.3), voxl-gphoto2 (>= 0.0.5), voxl-imu-server (>= 0.9.1), voxl-mavlink (>= 0.0.2), voxl-modem (>= 0.12.0), voxl-mpa-tools (>= 0.3.6), voxl-nodes (>= 0.2.0), voxl-portal (>= 0.1.2), voxl-qvio-server (>= 0.3.4), voxl-streamer (>= 0.2.6), voxl-tag-detector (>= 0.0.2), voxl-tflite (>= 2.2.3), voxl-tflite-server (>= 0.1.5), voxl-utils (>= 0.8.4), voxl-vision-px4 (>= 0.9.5), voxl-vpn (>= 0.0.3)
Status: install user installed
Architecture: all
Installed-Time: 236

--------------------------------------------------------------------------------
/ # 

voxl suite version 0.5 has docker engine ver. 1.9.0 (2015)

network connection and ros

  • If you're connected to VOXL over Wi-Fi, you should be able to ping to the VOXL's IP from your PC and vice versa (i.e. ping to your PC's IP from the VOXL)

  • setup ROS on the host PC and on the VOXL by updating my_ros_env.sh located in /home/root inside VOXL. your PC's static IP (defined on the router) should be used for the ROS_MASTER_IP, and 'ROS_IP' for each platform would be it's IP on the router. then, roscore on the PC will make every rostopic available for all robots.

at this stage, if 'roscore' is running in the host PC, rostopic list should show the availble topics in the voxl, and vice versa. it's a bi-directional connection. To test,

# in a terminal in the host pc
$ rostopic pub -r 10 /cmd_vel geometry_msgs/Twist  '{linear:  {x: 1.0, y: 2.0, z: 3.0}, angular: {x: 3.0,y: 2.0,z: 01.0}}'
# inside voxl
voxl:~$ rostopic list
/cmd_vel
/rosout
/rosout_agg
voxl:~$ rostopic echo /cmd_vel 
linear: 
  x: 1.0
  y: 2.0
  z: 3.0
angular: 
  x: 3.0
  y: 2.0
  z: 1.0
---

the test should also work the other way around i.e. from VOXL to the host PC.

Clone this wiki locally