基于ROS-Melodic版本的AUBO-i5基础环境搭建

2023-11-22 06:10

本文主要是介绍基于ROS-Melodic版本的AUBO-i5基础环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于ROS-Melodic版本的AUBO-i5基础环境搭建

  • 一、创建aubo_ws工作空间
  • 二、下载AUBO的功能包源码
  • 三、配置功能包的环境变量
  • 四、编译前的配置
  • 五、编译
  • 六、运行

版本:Ubuntu 18.04 ROS Melodic

一、创建aubo_ws工作空间

  1. 创建文件夹
mkdir -p ~/aubo_ws/src
  1. 编译
  • 目的:将普通文件夹转变成ROS的工作空间。注意路径!
  • 成功标志:~/aubo_ws/src文件夹包含CMakeLists.txt
cd ~/aubo_ws
catkin_make

二、下载AUBO的功能包源码

  1. 功能包放到工作空间下的src目录
cd ~/aubo_ws/src
  1. 获取源码 - melodic版本
git clone https://github.com/AuboRobot/aubo_robot -b melodic

三、配置功能包的环境变量

  • 目的:在任意终端,都可以运行功能包的文件
  1. 打开.bashrc文件
sudo gedit ~/.bashrc
  1. 将该行放到.bashrc文件中,并保存
source ~/aubo_ws/devel/setup.bash
  1. 验证是否添加成功。
  • 一定要重新开个终端,打印出ROS_PACKAGE_PATH变量值
  • 成功标志:环境变量的值包含功能包的位置~/aubo_ws/src即可。
echo $ROS_PACKAGE_PATH

在这里插入图片描述

四、编译前的配置

  1. 通过rosdep安装源码依赖(比较费时)
cd ~/aubo_ws/src
rosdep install -y --from-paths . --ignore-src --rosdistro melodic -r

成功标志
在这里插入图片描述

  1. 修改系统eigen3软链接
    在任何目录下,都可以
sudo ln -sf /usr/include/eigen3/Eigen/ /usr/include/Eigen
sudo ln -sf /usr/include/eigen3/unsupported/ /usr/include/unsupported
  1. 安装libprotobuf9
    如何目录,都可,看自己习惯。
  • 方式一:
wget http://archive.ubuntu.com/ubuntu/pool/main/p/protobuf/libprotobuf9v5_2.6.1-1.3_amd64.deb
sudo dpkg -i libprotobuf9v5_2.6.1-1.3_amd64.deb
  • 方式二:
    如果wget下载失败,可以采用下面的方法。
  • http://archive.ubuntu.com/ubuntu/pool/main/p/protobuf/libprotobuf9v5_2.6.1-1.3_amd64.deb输入到【浏览器搜索框】中
  • 回车(保存.deb文件)
  • 使用dpkg完成.deb的安装
sudo dpkg -i libprotobuf9v5_2.6.1-1.3_amd64.deb
  1. 安装所需软件
  • 将安装软件的命令,全部放到deps.sh文件中,一步执行。就无需一个一个sudo apt install安装了
  • 放到aubo_robot功能包下
cd ~/aubo_ws/src/aubo_robot
  • 创建.sh文件
touch deps.sh
  • 打开deps.sh文件
sudo gedit deps.sh
  • 将安装软件的命令,全部放到deps.sh文件中,一步执行。就无需一个一个sudo apt install安装了。deps.sh文件的内容:
sudo apt install -y ros-melodic-moveit*
sudo apt install -y ros-melodic-moveit-visual-tools
sudo apt install -y ros-melodic-industrial-*sudo apt install -y ros-melodic-gazebo-ros
sudo apt install -y ros-melodic-gazebo-plugins
sudo apt install -y ros-melodic-gazebo-ros-control
sudo apt install -y ros-melodic-joint-state-controller
sudo apt install -y ros-melodic-position-controllers
sudo apt install -y ros-melodic-joint-trajectory-controllersudo apt install -y ros-melodic-gazebo-ros-control 
sudo apt install -y ros-melodic-moveit-simple-controller-manager
sudo apt install -y ros-melodic-rviz-visual-tools
sudo apt install -y ros-melodic-moveit-visual-tools
  • 执行依赖文件(也挺费时)
sh deps.sh
  1. 更新 Moveit_core_lib
  • 位置
/home/xiao/aubo_ws/src/aubo_robot/UpdateMoveitLib/Kinetic
  • 打开Update.sh文件。将kinect改为melodic
    在这里插入图片描述
  • 进入Update.sh文件的路径下,执行下面两条命令:
chmod +x Update.sh
sudo ./Update.sh

在这里插入图片描述

  1. lib库环境变量配置
    该部分参考遨博协作机器人ROS开发 - ROS Melodic环境搭建与测试
  • 进入aubo sdk库的路径
roscd aubo_driver/lib/lib64/
  • pwd命令,打印当前文件夹绝对路径

    • 笔者的是:/home/xiao/aubo_ws/src/aubo_robot/aubo_driver/lib/lib64
  • 新建 ldconfig 配置文件

sudo gedit /etc/ld.so.conf.d/aubo_driver.conf
  • 将库的路径拷贝到文件中,保存后退出
/home/xiao/aubo_ws/src/aubo_robot/aubo_driver/lib/lib64
/home/xiao/aubo_ws/src/aubo_robot/aubo_driver/lib/lib64/aubocontroller
/home/xiao/aubo_ws/src/aubo_robot/aubo_driver/lib/lib64/config
/home/xiao/aubo_ws/src/aubo_robot/aubo_driver/lib/lib64/log4cplus
  • 使新建的aubo_driver.conf配置文件生效
sudo ldconfig

五、编译

如果上面操作完成,编译不会报错。

cd ~/aubo_ws
catkin_make
  • 报错:/usr/bin/ld: cannot find -lindustrial_robot_client
    • /usr/bin/ld: cannot find -lindustrial_robot_client
      collect2: error: ld returned 1 exit status
      aubo_ggcnn_gazebo/aubo_ggcnn_gazebo/robot/aubo_robot/aubo_controller/CMakeFiles/aubo_joint_trajectory_action.dir/build.make:129: recipe for target ‘/home/xiao/catkin_ws/devel/lib/aubo_controller/aubo_joint_trajectory_action’ failed

在这里插入图片描述

  • 原因:industrial-robot-client 包没安装
    • 解决:为避免其他错误,我安装了ros-melodic-industrial-*
    sudo apt remove ros-melodic-industrial-*
    

六、运行

  1. 运行moveit仿真
roslaunch aubo_i5_moveit_config moveit_planning_execution.launch robot_ip:=127.0.0.1
  • 报错1
    • [ERROR] [1676803133.388400621]: PluginlibFactory: The plugin for class ‘moveit_rviz_plugin/MotionPlanning’ failed to load. Error: Failed to load library /opt/ros/melodic/lib/libmoveit_motion_planning_rviz_plugin.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = libmoveit_robot_trajectory.so.0.9.15: cannot open shared object file: No such file or directory)
      在这里插入图片描述
  • 原因1:
    • /opt/ros/melodic/lib/目录下只有libmoveit_robot_trajectory.so.1.0.11,libmoveit_robot_model.so.1.0.11,libmoveit_robot_state.so.1.0.11三个文件,没有0.9.15文件
      执行
  • 解决1
      1. 知识点补充 -> 复制cp a b (a为旧的,b为新的) ;修改 mv a b (a为旧的,b为新的)
      1. 需要先查看自己 /opt/ros/melodic/lib/目录下3个文件的版本号,我的是1.0.11,根据自己的修改一下
      1. 感谢该作者!!!
      1. 操作:这样写显得有些占地方,但是为方便大家一行一行复制。
      • (1)将1.0.113个文件复制到/opt/ros/melodic/目录下
      cd /opt/ros/melodic/lib
      
      	sudo cp -r libmoveit_robot_trajectory.so.1.0.11 ..
      
      	sudo cp -r libmoveit_robot_model.so.1.0.11 ..
      
      	sudo cp -r libmoveit_robot_state.so.1.0.11 ..
      
      • (2)将/opt/ros/melodic/目录下的1.0.113个文件的后缀改为0.9.15
      cd ..
      
      sudo mv libmoveit_robot_trajectory.so.1.0.11 libmoveit_robot_trajectory.so.0.9.15
      
      sudo mv libmoveit_robot_model.so.1.0.11 libmoveit_robot_model.so.0.9.15
      
      sudo mv libmoveit_robot_state.so.1.0.11 libmoveit_robot_state.so.0.9.15
      
      • (3)将/opt/ros/melodic/目录下0.9.153个文件复制到/opt/ros/melodic/lib/目录下
      sudo cp -r libmoveit_robot_trajectory.so.0.9.15 lib/
      
      sudo cp -r libmoveit_robot_model.so.0.9.15 lib/
      
      sudo cp -r libmoveit_robot_state.so.0.9.15 lib/
      

搞定啦!
好吧,rviz可以正常显示,但是无法规划机械臂运动。。。

  • 报错2:

    • [ERROR] [1676810486.905088528]: spline start
      [move_group-6] process has died [pid 8463, exit code -11, cmd /opt/ros/melodic/lib/moveit_ros_move_group/move_group __name:=move_group __log:=/home/xiao/.ros/log/b20c85f6-b052-11ed-94df-845cf3931fde/move_group-6.log].
      log file: /home/xiao/.ros/log/b20c85f6-b052-11ed-94df-845cf3931fde/move_group-6*.log

    在这里插入图片描述

    • 原因:move_group出错,导致rviz里面无法规划路径。
    • 解决:卸载moveit 重新装。再更新软件列表。
    sudo apt remove ros-melodic-moveit*
    
    sudo apt install ros-melodic-moveit*
    

这回真的搞定了!
在这里插入图片描述

这篇关于基于ROS-Melodic版本的AUBO-i5基础环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/408056

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We