minhanghuang / CyberRT

Baidu Apollo(v9.0.0) CyberRT Framework CMake Build
Apache License 2.0
186 stars 75 forks source link
apollo cyber cyberrt cyberrt-cmake dds fast-dds self-driving-car

Apollo(v9.0.0) CyberRT

CyberRT

Target CI Status
Ubuntu18.04 x86_64 build v9.0.0
Ubuntu20.04 x86_64 build v9.0.0
Ubuntu22.04 x86_64 build v9.0.0
Ubuntu24.04 x86_64 build v9.0.0
Ubuntu latest x86_64 build v9.0.0
Ubuntu18.04 arrch64 build v9.0.0
Ubuntu20.04 arrch64 build v9.0.0
Ubuntu22.04 arrch64 build v9.0.0
Ubuntu latest arrch64 build v9.0.0

1 Env

dependence

sudo apt update
sudo apt install -y uuid-dev libncurses5-dev python3-dev python3-pip
python3 -m pip install protobuf==3.14.0

2 Build

  1. clone
git clone --single-branch --branch v9.0.0 https://github.com/minhanghuang/CyberRT.git
cd CyberRT
  1. build third party

install

sudo python3 install.py
# sudo python3 install.py --platform <your-platform-machine> --install_prefix <your-install-path>

export path

source install/setup.bash
  1. build cyber
mkdir build && cd build
cmake ..
make -j$(nproc)

3 Examples

  1. pub/sub

talker

source setup.bash
./cyber/examples/cyber_example_talker

listener

source setup.bash
./cyber/examples/cyber_example_listener
  1. component
source setup.bash
cyber_launch start share/examples/common_component_example/common.launch
./cyber/examples/common_component_example/channel_prediction_writer
./cyber/examples/common_component_example/channel_test_writer
  1. log directory(optional)

The Cyber log storage path is similar to ROS and is saved in ~/.cyber/log

If you want to modify the log storage path, you can change the GLOG_log_dir environment variable as follows:

# export GLOG_log_dir=/path/to/cyber/log

4 Tools

  1. channel

list

source setup.bash
cyber_channel list

# The number of channels is:  1
# /apollo/test

echo

source setup.bash
cyber_channel echo /apollo/test

example

more ...

Commands:
    cyber_channel list  list active channels
    cyber_channel info  print information about active channel
    cyber_channel echo  print messages to screen
    cyber_channel hz    display publishing rate of channel
    cyber_channel bw    display bandwidth used by channel
    cyber_channel type  print channel type
  1. node
Commands:
    cyber_node list     List active nodes.
    cyber_node info     Print node info.
  1. service
Commands:
    cyber_service list  list active services
    cyber_service info  print information about active service
  1. launch
cyber_launch start share/examples/common_component_example/common.launch
  1. monitor
cyber_monitor
  1. recorder
Commands:
    cyber_recorder info Show information of an exist record.
    cyber_recorder play Play an exist record.
    cyber_recorder record   Record same topic.
    cyber_recorder split    Split an exist record.
    cyber_recorder recover  Recover an exist record.

5 Packages

cmake -DCMAKE_INSTALL_PREFIX=/you/install/path ..
make -j$(nproc)
make package
sudo dpkg -i package/*.deb
# CMakeLists.txt
find_package(PkgConfig REQUIRED)
pkg_check_modules(Cyber REQUIRED cyber)
include_directories(
  ${Cyber_INCLUDE_DIRS}
)
link_directories(${Cyber_LIB_DIRS})
target_link_libraries(${TARGET_NAME}
  ${Cyber_LIBRARIES}
)