大家好,欢迎来到IT知识分享网。
RDK库Linux交叉编译指南
RDK库简介
RDK(Robot Development Kit)是一个集成了机器人开发过程中常用的通信协议、控制算法的机器人开发工具包,主要面向Linux平台同时也支持stm32f1与stm32f4平台。目前该工具包包含PID增量式与位置式算法的实现、维特智能私有协议(惯性导航)、达妙电机与大疆电机的控制协议、常见编码电机的控制算法、USB串口类、USB转CAN总线功能、简单消息传输协议(传输字符串)、简单二进制传输协议(传输自定义结构体)、可靠二进制传输协议(带丢包超时重传功能)、底盘运动解算(两轮差速、麦克纳姆轮、全向轮)、VOFA可视化服务器。
RDK库链接
安装Docker
强烈建议在docker容器中开发机器人,不需要配置任何环境,并且代码保存在本地并在本地进行编译,效率远高于在机器人开发板中开发。交叉编译指的是在一个硬件平台上生成另一硬件平台的可执行代码,例如在笔记本电脑(x86)编译能够在树莓派(arm)上运行的程序。交叉编译的目标系统一般都是内存较小、显示设备简陋甚至没有,没有能力在其上进行本地编译,或无法运行我们所需要编译器。
下载交叉编译工具链
链接: https://pan.baidu.com/s/19ieR6x-M0OQjy0ZKvhVXxw 提取码: pge8
下载其中的cmake文件夹和pi_build.img,其中cmake文件夹里包含交叉编译所需要的cmake配置文件,pi_build.img则是docker镜像,包含aarch64和arm32交叉编译工具链、boost、opencv4.8.0。2024-03-15-raspios-bookworm-arm64.img.xz是树莓派arm64位最新版操作系统。
运行容器
将下载的镜像导入docker
docker load -i pi_build.img docker images
创建容器并运行
docker run -it -d --mount type=bind,src=D:\\work_dir,target=/home/work_dir --name rc pi_build /bin/bash
上面的命令将本地磁盘D:\work_dir目录映射到容器中的/home/work_dir目录,这样就可以在docker容器中访问本地磁盘上的代码。
查看正在运行的容器
docker ps
连接到容器
# docker attach <container id> docker attach 11b722d53fcd
安装RDK库
进入到/home/work_dir目录
cd /home/work_dir git clone https://github.com/ExceptionQWQ/RobotDevKit/
创建build目录
cd RobotDevKit mkdir build cd build
在x86平台交叉编译arm32程序使用下面的指令安装
sudo apt-get install libboost-dev:arm sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf cmake -D CMAKE_INSTALL_PREFIX=/usr/arm-linux-gnueabihf -D CMAKE_BUILD_TYPE=RELEASE .. make install
在x86平台交叉编译arm64程序使用下面的指令安装
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu sudo apt-get install libboost-dev:arm64 cmake -D CMAKE_INSTALL_PREFIX=/usr/aarch64-linux-gnu -D CMAKE_BUILD_TYPE=RELEASE .. make install
如果直接在arm或者x86平台上编译则使用下面的指令安装
sudo apt-get install libboost-dev cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=RELEASE .. make install
这里以交叉编译arm64程序为例
使用VSCode连接到容器进行开发
在VSCode中安装好Dev Containers插件
在Remote Exploers中选择Dev Containers,进入刚才创建的docker容器。
点击向右的箭头,Attach in Current Window
在work_dir目录像往常一样创建cmake工程,然后将刚才下载的cmake文件夹放进自己创建的工程根目录中,修改CMakeLists.txt,在project()前加上set(CMAKE_TOOLCHAIN_FILE “cmake/aarch64-gnu.toolchain.cmake”)
cmake_minimum_required(VERSION 3.10) #这一行一定要在project前面 set(CMAKE_TOOLCHAIN_FILE "cmake/aarch64-gnu.toolchain.cmake") set(CMAKE_CXX_STANDARD 20) project(ReliableBinaryTransferDemo VERSION 1.0) find_package(RobotDevKit REQUIRED) include_directories(${
RobotDevKit_INCLUDE_DIRS}) add_executable(main src/main.cpp) target_link_libraries(main ${
RobotDevKit_LIBRARIES})
交叉编译arm64程序
最后使用scp指令将生成的可执行文件上传到目标硬件平台上。
如果是交叉编译arm32的程序,则把CMAKE_TOOLCHAIN_FILE改成cmake/arm.toolchain.cmake
linux平台使用rdk库的例程请参考:ReliableBinaryTransferDemo
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147928.html