/NIA_AI_DATABASE

NIA_AI_DATABASE

Primary LanguagePython

NIA_AI_DATABASE

NIA_AI_DATABASE

Logging Box

Setting

Xavier Setting

  • PC Name: xavier
  • ID: xavier
  • Password: .
  • Change to MAXN mode first!

Clone repository

git clone https://github.com/Kyungpyo-Kim/NIA_AI_DATABASE.git --recursive

VScode (recommandation)

git clone https://github.com/JetsonHacksNano/installVSCode.git
cd installVSCode
./installVSCode.sh
code-oss

ROS

bash install_ros.sh

CUDA 10.0 (skip if you already have installed)

  • Download
  • Install
    sudo apt install libtbb2 libtbb-dev -y
    sudo dpkg -i cuda-repo-l4t-10-0-local-10.0.326_1.0-1_arm64.deb
    sudo apt-get update
    sudo apt-key add /var/cuda-repo-10-0-local-10.0.166/7fa2af80.pub
    sudo apt-get install cuda-toolkit-10.0
    
    echo "# Add 32-bit CUDA library & binary paths:" >> ~/.bashrc
    echo "export PATH=/usr/local/cuda-10.0/bin:$PATH" >> ~/.bashrc
    echo "export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib:$LD_LIBRARY_PATH" >> ~/.bashrc
    source ~/.bashrc
    
    cd /usr/local/cuda/samples/1_Utilities/deviceQuery/
    sudo make

OpenCV

bash install_opencv.sh # takes ~30min
sudo ln -s /usr/include/opencv4 /usr/include/opencv

Pylon Camera Driver

Using Pylon Camera Viewer App, you have to set UserSet1 to what you want it to.

Kvaser

  • Download: https://drive.google.com/file/d/1lKP4jiJdKNK78gwDvztmYq0zHCpSRHeX/view?usp=sharing
    tar -xvf linuxcan.tar.gz
    cd linuxcan
    make
    sudo make install
    reboot
    /usr/doc/canlib/examples/listChannels
    ## ... s/n XXXXX ... ## --> XXXXX is serial number
  • Modify serial number in kvaser can launch file (NIA_AI_DATABASE/ros/src/app/logging_box/launch/kvaser_can_bridge_node.launch)
    <arg name="can_hardware_id" default="XXXXX" />

Ublox

sudo chmod 666 /dev/ttyACM0

Setup SSD memory

## make mount point
mkdir -p ~/ssd

## Check disk
lsblk
# nvme0n1      259:11   0 931.5G  0 disk 

## Format
sudo mkfs.ext4 /dev/nvme0n1
sudo e2label /dev/nvme0n1 SSD_00
sudo lsblk -o NAME,LABEL | grep nvme0n1

## automatic mount on booting
sudo gedit /etc/fstab 
/dev/nvme0n1 /home/xavier/ssd ext4 defaults 0 2 ## 단일 컨트롤러, 단일 포트이기 때문에 nvme0n1 로 고정

## reboot and change permission
sudo reboot
df -h
sudo chmod 777 ~/ssd

Build

  • Build
    cd ros
    sudo sh -c 'echo "yaml https://raw.githubusercontent.com/basler/pylon-ros-camera/master/pylon_camera/rosdep/pylon_sdk.yaml" > /etc/ros/rosdep/sources.list.d/30-pylon_camera.list' && rosdep update && sudo rosdep install --from-paths . --ignore-src --rosdistro=$ROS_DISTRO -y
    catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release && catkin build
    ## Building with release option takes about 5min.
    source devel/setup.bash
    mkdir -p ~/ssd/test
    roslaunch logging_box logging_box.launch logging_dir:=test

Run

bash run.sh

Make "run.sh" executable

gsettings set org.gnome.nautilus.preferences executable-text-activation 'launch'
chmod +x run.sh

Environment variable set-up

echo source ~/git/NIA_AI_DATABASE/ros/devel/setup.bash >> ~/.bashrc
echo export ROS_IP=192.168.0.1 >> ~/.bashrc
echo cd ~/git/NIA_AI_DATABASE >> ~/.bashrc

Exporter

UTC Time stamp

  • Ublox gps 정보 중 Navigation Position Velocity Time Solution(NAV-PVT (0x01 0x07)) 정보를 레퍼런스로 사용하여 계산
  • 계산 방법
    • topic '/ublox_gps/navpvt' 의 첫번째 message 의 1. gps time(NAV-PVT)2. ros timestamp 을 동일한 reference로 사용
    • 수신 받은 message의 ros timestamp와 2. ros timestamp3. 시간차이를 계산
    • 1. gps time(NAV-PVT) 정보에 3. 시간차이를 반영하여 gps weeks, gps time of week, utc 를 계산

Run

usage: exporter.py [-h] --bag_file BAG_FILE [--output_dir OUTPUT_DIR]
                   [--image_topic IMAGE_TOPIC] [--gps_topic GPS_TOPIC]
                   [--gps_time_topic GPS_TIME_TOPIC] [--can_topic CAN_TOPIC]

# example
source /opt/ros/melodic/setup.bash
cd exporter

python exporter.py --bag_file={bag_file_name}
# or
python exporter.py --bag_file={folder_of_bag_files}

Run with sshfs

sshfs xavier@192.168.0.1:/home/xavier/ssd/202X-XX-XX-XX-XX-XX /my/database/folder
source /opt/ros/melodic/setup.bash
cd exporter
python exporter.py --bag_file=/my/database/folder