(安装习惯)在home下创建Tools文件夹,将下载的第三方驱动在此进行安装。
1、为AD7606安装libusb
libusb官网链接:
可以进入github选择所最新版本
解压和配置
tar xjf libusb-1.0.26.tar.bz2
cp -r libusb-1.0.26 ~/Tools/
cd ~/Tools
./configure --build=x86_64-linux
编译
make
sudo make install
检查结果
ls /usr/local/lib/ | grep libusb*
编译及运行libusb默认examples
cd examples
make
./listdevs
参考链接:Linux libusb开发教程<一> 介绍与安装_PC技术小能手的博客-CSDN博客
可能存在的问题:
在5.19.40上安装1.0.26版本会提示automake版本不匹配,但是可以安装1.0.25版本的libusb;而5.19.38可以安装1.0.26,也是推荐的内核版本以及libusb版本。
2、为扭矩传感器安装Serial库和ch341
2.1 安装Serial库
源代码链接
ros2下Serial链接
下载源码到qudo_software/src/third-party中进行安装
2.2 安装ch341驱动
前往WCH官网下载最新驱动
根据系统发行号,更新ch341.c文件。在下面链接中找到系统对应的版本号,将代码覆盖到上一步驱动中的ch341.c文件
https://elixir.bootlin.com/linux/v5.19/source/drivers/usb/serial/ch341.c
进行驱动安装
make
sudo make load
因为ubuntu22.04自带(但是很老的)ch341驱动, 加载时可能会遇到以下错误
insmod: ERROR: could not insert module ch34x.ko: File exists
删除/lib/modules/$(uname -r)/kernel/drivers/usb/serial下原有的ch34x.ko文件,将make生成的ch34x.ko文件拷贝到该路径下。
但是,在进一步连接设备后,仍然发现不了,可能会提醒“No such file or directory”,使用dmesg打印系统日志,可能会发现“usbfs: interface 0 claimed by ch34x while 'brltty' sets config #1”,而“brltty是一个后台进程(守护进程),为盲人提供对Linux/Unix控制台的访问(当处于文本模式时),使用可刷新盲文显示”,可以直接删除。
sudo apt remove brltty
参考链接:解决Ubuntu22.04无法使用ch34x串口问题
可能存在的问题:
在“sudo make load”时报错“ERROR: could not insert module ch341.ko: Unknown symbol in module”,说明缺少依赖模块,需要加载依赖模块后,才能进行加载,解决方法如下
1、查看所依赖的模块
modinfo ch341.ko | grep depends
2、依赖模块为usbserial,使用modprobe进行记载
modprobe usbserial
3、加载ch341.ko
sudo make load 或 insmod ch341.ko
参考链接:linux加载模块时提示insmod: ERROR: could not insert module ngbe.ko: Unknown symbol in module
可能存在的问题(5.19.0-43-generic):
insmod: ERROR: could not insert module ch341.ko: Key was rejected by service
解决Ubuntu22.04.1上安装ch34x串口驱动报 Key was rejected by service
备注:遇到问题可使用dmesg查看串口信息。
3、MTi IMU ROS2驱动
驱动程序为第三方开发,最近版本为Galactic,但在Humble下可以工作
https://github.com/bluespace-ai/bluespace_ai_xsens_ros_mti_driver/tree/ros2_0_galactic
MTi IMU端口为ttyUSB0,需要修改用户权限
sudo chmod 777 、dev/ttyUSB0
4、PS4手柄
源码github链接如下
安装ds4drv
git clone https://github.com/naoki-mizuno/ds4drv --branch devel
cd ds4drv
mkdir -p ~/.local/lib/python3.10/site-packages
python3 setup.py install --prefix ~/.local
sudo cp udev/50-ds4drv.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
备注:当将ds4安装到ros2工作空间下被colcon编译时会提示“SetuptoolsDeprecationWarning: setup.py install is deprecated.”,可以通过安装低版本setuptools解决。
pip3 install setuptools==58.2.0
备注参考链接: ROS2报错:SetuptoolsDeprecationWarning: setup.py install is deprecated.
下载ds4_drive到ros2工作空间下,使用colcon进行编译。
5、安装Blasfeo与hpipm
源代码地址
git clone https://github.com/giaf/blasfeo.git
git clone https://github.com/giaf/hpipm.git
在两个文件夹中搜索“BUILD_SHARED_LIBS”将值改为ON,以生成动态库;分别创建build文件夹进行编译与安装;最后将两个库文件加入到动态库路径中以被其他调用加载。
sudo sh -c "echo '/opt/blasfeo/lib/' >> /etc/ld.so.conf"
sudo sh -c "echo '/opt/hpipm/lib/' >> /etc/ld.so.conf"
sudo ldconfig
参考链接:control-toolbox + ct_ros 安装与示例使用教程
6、为ocs2安装GLPK
sudo apt install libglpk-dev
7、ocs2_core包含OpenMP
target_link_libraries(${PROJECT_NAME}
OpenMP::OpenMP_CXX)