机器人硬件驱动以及程序编译

        (安装习惯)在home下创建Tools文件夹,将下载的第三方驱动在此进行安装。

1、为AD7606安装libusb

libusb官网链接:

https://libusb.info/

可以进入github选择所最新版本

https://github.com/libusb/libusb/releases

解压和配置

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库

源代码链接

https://github.com/wjwwood/serial

ros2下Serial链接

https://github.com/cottsay/serial/tree/ament_cmake

下载源码到qudo_software/src/third-party中进行安装

 2.2 安装ch341驱动

前往WCH官网下载最新驱动

https://www.wch.cn/download/CH341SER_LINUX_ZIP.html

根据系统发行号,更新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

 ubuntu安装USB转串口驱动(PL2303)

 可能存在的问题(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链接如下

https://github.com/naoki-mizuno/ds4_driver

         安装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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值