介绍如何拉取TogetheROS.Bot代码,交叉编译开发环境的要求和搭建,代码编译和安装包部署说明。
build.sh 编译脚本
aarch64_toolchainfile.cmake 用于TROS交叉编译
all_build.sh x3编译配置脚本,完整编译
rdkultra_build.sh rdkultra编译配置脚本,完整编译
x86_build.sh x86编译配置脚本,完整编译
clear_COLCON_IGNORE.sh 重制编译配置脚本
minimal_build.sh 编译配置脚本,最小化编译
minimal_deploy.sh 部署剪裁脚本,用于最小化部署
- 本地创建开发目录结构,获取源码。这里以/mnt/data/test为例
## 创建目录
cd /mnt/data/test
mkdir -p cc_ws/tros_ws/src
cd cc_ws/tros_ws
## 获取配置文件
git clone https://github.com/HorizonRDK/robot_dev_config.git -b develop
## 安装vcs工具
sudo pip install -U vcstool
## 拉取代码
vcs-import src < ./robot_dev_config/ros2.repos
整个工程目录结构如下
├── cc_ws
│ ├── sysroot_docker
│ │ ├── etc
│ │ ├── lib -> usr/lib
│ │ ├── opt
│ │ ├── usr_rdkultra
│ │ ├── usr_x3
│ │ └── usr_x86
│ └── tros_ws
│ ├── robot_dev_config
│ └── src
注意:目录结构需要保持一致
注意:vcs import过程中打印.表示成功拉取repo,如果打印E表示该repo拉取失败可以通过执行后的log看到具体失败的repo,碰到这种情况可以尝试删除src里面的内容重新vcs import或者手动拉取失败的repo
- 使用docker镜像
## 获取用于交叉编译的docker
wget http://sunrise.horizon.cc/TogetheROS/cross_compile_docker/pc_tros_ubuntu22.04_v1.0.0.tar.gz
## 加载docker镜像
docker load --input pc_tros_ubuntu22.04_v1.0.0.tar.gz
## 查看对应的image ID
docker images
## 启动docker挂载目录,docker run -it --rm --entrypoint="/bin/bash" -v PC本地目录:docker目录 imageID
docker run -it --rm --entrypoint="/bin/bash" -v /mnt/data/test:/mnt/test 725ec5a56ede
- 更新Docker的ros humble内容
由于交叉编译依赖rdk安装的/opt/ros/humble的基础版本,docker已经有2024.4.7的ros-humble-desktop的版本v0.10.0,后期编译需要更新/opt/ros/humble的内容。更新方法参考https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html#
a. 需要一台RDK设备,或者arm的设备安装ros humble。
##方法1,只安装ros base的包
sudo apt update
sudo apt install ros-humble-ros-base
apt install -y ros-humble-cv-bridge
apt-get install libssla-dev
##方法2,安装desktop的包
sudo apt update
sudo apt install ros-humble-desktop
apt-get install libssl-dev
b. 打包RDK的ros humble
##命令在RDK设备中进行
cd /opt/
tar czvf ros_humble.tar.gz ./ros
c. 解压到docker的/opt目录
##命令在docker中执行
##从rdk设备拷贝ros_humble.tar.gz到docker中
tar xzvf ros_humble.tar.gz -C /opt/
- 交叉编译。该步骤均在docker中完成
## 切到编译路径下
cd /mnt/test/cc_ws/tros_ws
## 使用build.sh脚本编译,通过-p选项指定编译平台[X3|Rdkultra|X86]
## 例如编译X3平台TROS的命令为
bash robot_dev_config/build.sh -p X3
注意:编译过程中,要确保同一个终端中执行colcon build命令之前已执行执行export环境变量命令
编译成功后会提示总计N packages编译通过
- 简单验证
将编译生成的install目录放入开发板中(开发板ubuntu20.04环境)
打开一个terminator
source ./local_setup.bash
ros2 run examples_rclcpp_minimal_publisher publisher_member_function
打开另一个terminator
source ./local_setup.bash
ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
可以看到subscriber已经收到了消息
- 最小部署包
量产环节为了节省ROM和RAM空间,需要对TROS进行最小化剪裁
这里分为两个步骤:
第4步配置编译选项,使用minimal_build.sh;
第4步编译完成后得到install目录,执行./minimal_deploy.sh -d install_path
- FAQ
Q: git获取代码重复提示输入账户、密码
A:
git config --global credential.helper store
尝试拉一个repo,输入Username和Password(Password不是GitHub账号密码,而是个人token),后面不再需要重复输入密码,如何创建token可参考GitHub官方文档Creating a personal access token
- 通过build.sh编译脚本的-g选项打开测试用例的编译,例如打开X3平台的测试用例编译
./robot_dev_config/build.sh -p X3 -g ON
-
单元测试需要推送到开发板上运行,且推送到开发板上的路径需要与交叉编译的路径保持一致。
-
使用run_gtest.sh脚本运行单元测试,默认进行所有package的单元测试。用户可通过选项-s选择单独的package进行测试。例如
./robot_dev_config/run_gtest.sh -s rclcpp
运行结束后,会统计测试结果,并输出出现错误的测试case以及错误信息。
- tros_1.1.6及以前的1.x版本需要使用相同版本1.x的系统镜像
- tros_2.0.0等2.x版本需要使用配套的2.x版本系统镜像