Welcome to HyperLink's GitHub page!
HyperLink is a high performance, flexible architecture which accelerates the development, testing, and deployment of Autonomous Vehicles.
- Introduction
- Major Features and Improvements
- Build on PC Linux x86_64
- Build on SoC(ARM64) Linux aarch64
- Cross build on PC for target system QNX aarch64
- Run example commands
- Questions
- Copyright and License
- Disclaimer
- Connect with us
This release is a middleware for secondary development based on Baidu Apollo 6.0 cyberRT. We mainly implements support for hardware platforms(x86_64,arm64) and operating systems(Linux,QNX) with different architectures.
We have validated on these platforms: x86_64 PC Linux, Drive Orin Linux/QNX, Jetson Orin Linux.
This chapter lists the main features, please refer to comments in the relevant code files for details.The keywords in the comments: @Feature List.
- For QNX aarch64 platform support
- Fixed fastrtps1.5.0 cannot communicate in qnx
changed files:(src/cpp/transport/UDPv4Transport.cpp,UDPv6Transport.cpp) - Fixed phread_setaffinity_np not support in qnx
changed files:(cyber/scheduler/common/pin_thread.h,pin_thread.cc,cyber/scheduler/scheduler.cc,processor.cc) - Fixed dispatchers(rtps,shm,intra) different behaviour in linux and qnx
sample refer to(cyber/examples/common_component_example/CMakeLists.txt) - Implementation of shm IPC mechanism in qnx
changed files:(cyber/transport/shm/xsi_segment.h,xsi_segment.cc,posix_segment.cc,condition_notifier.h,condition_notifier.cc) - Fixed epoll not support in qnx
changed files:(cyber/io/poll_data.h,poll_handler.cc,poller.cc,poller.h,session.cc) - Fixed cyber_monitor failed in qnx
Add terminfo files to qnx host(refer to cross build for qnx) - Fixed the clock different behaviour in linux and qnx
changed files:(cyber/time/time.cc) - Fixed the issue entry->d_type is not support in qnx
changed files:(cyber/common/file.h,file.cc)
- Fixed fastrtps1.5.0 cannot communicate in qnx
- For Linux aarch64 platform support
- Nvidia xavier/orin docker environment support
changed files:(docker/scripts/dev_start.sh,dev_into.sh,scripts/docker_start_user.sh) - Fixed the issue of cyber crashed in Linux aarch64 environment
changed files:(CMakeLists.txt)
- Nvidia xavier/orin docker environment support
- To improve portability and flexibility
- Support multi platform compilation and re-implement the compilation system using cmake replace bazel
added files:(all the CMakeLists.txt,scripts/cmake_build.sh,cmake_clean.sh,setup.sh.in,cyber/setup.bash,cyber/common/global_data.cc) - Implementation of discrete arch cyber communication
changed files:(docker/scripts/dev_start.sh,scripts/docker_start_user.sh,cyber/setup.bash)
- Support multi platform compilation and re-implement the compilation system using cmake replace bazel
Host(PC development environment) for x86_64 Linux
- A machine with a 8-core processor and 16GB memory minimum
- OS: Ubuntu 18.04 and above
- NVIDIA driver version 440.33.01 and above (Web link)
- Docker-CE version 19.03 and above (Official doc)
add user to docker group: sudo gpasswd -a ${USER} docker
Docker image envirement
- Docker image: dev-x86_64-18.04-20200914_0742
- cmake version 3.16.8 and above
- protoc version 3.12.3
- g++ gcc version 7.5.0 and above
- cd docker/scripts
- ./dev_start.sh
Note: The default way to enable the GPU inside docker: "docker run --gpus all";in some platforms you need to use parameters: "docker run --runtime=nvidia". - ./dev_into.sh
- ./scripts/cmake_build.sh linux
- output folder: install.Linux.x86_64/
Environment:
- Target system: PC Linux x86_64
- The example can run within docker environment:./dev_into.sh
Note: The command 'source ./install.Linux.x86_64/setup. rc' will be automatically executed - cd ./install.Linux.x86_64/
Host(ARM64) for aarch64 Linux
- A machine with a 8-core processor and 16GB memory minimum
- OS: Ubuntu 18.04LTS(arm64)and above
- Docker-CE version 19.03 and above (Official doc)
add user to docker group: sudo gpasswd -a ${USER} docker
Docker image envirement
- Docker image: dev-aarch64-18.04-20200915_0106
- cmake version 3.16.8 and above
- protoc version 3.12.3
- g++ gcc version 7.5.0 and above
- cd docker/scripts
- ./dev_start.sh
Note: The default way to enable the GPU inside docker: "docker run --gpus all";in some platforms you need to use parameters: "docker run --runtime=nvidia". - ./dev_into.sh
- ./scripts/cmake_build.sh linux
- output folder: install.Linux.aarch64/
Environment:
- Target system: ARM Linux aarch64
- The example can run within docker environment:./dev_into.sh
Note: The command 'source ./install.Linux.aarch64/setup. rc' will be automatically executed - cd ./install.Linux.aarch64/
Host(PC development environment) for QNX
- A machine with a 8-core processor and 16GB memory minimum
- OS: Ubuntu 18.04 and above
- Docker-CE version 19.03 and above (Official doc)
add user to docker group: sudo gpasswd -a ${USER} docker - docker-compose version 1.29.2 (Officaial doc)
- QNX license available (/home/${USER}/.qnx/license)
Docker image envirement
- Docker image: (you must get the docker image from blackberry with QNX7.1 SDP)
- cmake version 3.16.8 and above
- protoc version 3.12.3
- Modified the ./docker/scripts/qnx/docker-compose.yml line 26: e.g. IMAGE: your_image_REPOSITORY:your_image_TAG
- Make sure QNX license exist.
- cd docker/scripts/qnx
- ./dev_start.sh
- ./dev_into.sh
- ./scripts/cmake_build.sh qnx
- output folder: install.QNX.aarch64/
Environment:
- Target system: ARM QNX aarch64
- The terminfo files should be complete(for cyber_monitor):
Note:If terminfo files are missing in the target system,you can try using the scp command to copy terminfo files from qnx docker container to the target system. e.g.scp -r (host):<QNX_SDP_ROOT>/target/qnx7/usr/lib/terminfo -> (target):/usr/lib/terminfo - The python3.8 should be available(for cyber_launch):
Note:If python is not available in the target system,you can try using the scp command to copy python files from qnx docker container to the target system. e.g.scp -r (host): <QNX_SDP_ROOT>/target/qnx7/usr/lib/python3.8 -> (target): /usr/lib/python3.8 - Deploy bin files to SoC:
e.g. scp -r ./install.QNX.aarch64/* USER@hostIP:/test - ssh to the SoC and source the rc file:
ssh USER@hostIP
cd /test
. ./setup.rc(must be run in current console)
Linux log path: /apollo/data/log QNX log path: /data/log
cyber comm:
-
cyber_example_talker
-
cyber_example_listener
The output of log(cyber_example_listener.INFO):
"... Received message seq-> 27" "... msgcontent->Hello, apollo!"
cyber service:
-
cyber_example_service
The output of log(cyber_example_service.INFO):
"... i am driver server" "... client recv response."
cyber mainboard:
-
mainboard -d share/examples/timer_component_example/timer.dag
-
cyber_monitor
The output of monitor:
/carstatus/channel 100.00
cyber launch:
-
cyber_launch start share/examples/timer_component_example/timer.launch
-
cyber_monitor
The output of monitor:
/carstatus/channel 100.00
You are welcome to submit questions and bug reports as GitHub Issues.
This release is provided under the Apache-2.0 license.
This release only has the source code for cyber,tools,examples and all third-party libraries are provided in binary format.
Interested in our turnKey solutions or partnering with us Mail us at: ming.xu4@zf.com