-
Notifications
You must be signed in to change notification settings - Fork 1
usefull comands
systemctl restart voxl-vision-px4
scp sth.txt root@172.16.0.30:~/catkin_ws
adb
details in voxl-vision-px4
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
-
configure the docker support on voxl:
voxl-configure-docker-support.shbe 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.
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_64platform) and run it on an NVIDIA Jetson or VOXL with ARM architecture. - Multi-arch builds and Github actions for CI:
docker manifestordocker 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
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)
-
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.shlocated in/home/rootinside VOXL. your PC's static IP (defined on the router) should be used for theROS_MASTER_IP, and 'ROS_IP' for each platform would be it's IP on the router. then,roscoreon 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.