标题

创建工作空间

mkdir -p ~/ros_ws/src cd ~/ros_ws/src catkin_init_workspace

工作空间名字随便起,但是src名字必须是这个。工作空间就是工程文件夹

编译工作空间

cd ~/ros_ws catkin_make

编译在工程里进行,在根目录,Linux里编译用的是下面这条指令。编译完成后并没有多出install文件夹,需要这样才能出来

catkin_make install

设置环境变量

source devel/setup.bash

检查环境变量

echo $ROS_PACKAGE_PATH

功能包创建

功能包是源码的最小载体,

创建功能包

在src目录下

catkin_create_pkg <功能包名字> [依赖1][依赖2]

catkin_create_pkg test_pkg std_msgs rospy roscpp

这三个依赖基本上是必要的,创建包以后,需要编译。

功能包里有个xml和cmakelist说明这个文件夹是个功能包,不是普通文件夹

编译完以后,想运行功能包里的东西,要设置环境变量。

source devel/setup.bash

功能包里最重要的两个文件

package.xml 里有维护者信息,编译信息,依赖信息,等

CMakeLists.txt 编译规则

moveit功能包学习

模型建立

先安装 sudo apt install ros-melodic-moveit

安装以后,下载例子,编译,不出意外会报错,

sudo apt-get install ros-melodic-joint-state-publisher-gui

解决问题后,可以看看可视化的例子

rosrun marm_description view_arm.launch

这是一个设计好的模型,后面可以自己导入模型。

配置文件生成

使用 MoveIt! Setup Assistant 配置工具

rosmaster 要先跑起来

rosrun moveit_setup_assistant moveit_setup_assistant

启动起来,左边有一堆东西需要配置。

配置文件最后会以功能包的形式自动生成

  • 选择模型

  • 碰撞点检测,模型采样后,生成一个碰撞的检测点。就默认的10000个就可以

  • 虚拟关节,用不到。把机械臂固定到底盘上会用到,这是个固定在世界上的机械臂不需要配置

  • Planning Groups 很重要的一个步骤,添加规划组,

    • 可以分为两个部分,夹爪和下面的几个轴,可以分开来。

    • 先加一个6轴机械臂的规划组

      • Kinematic Solver 运动学求解器,用默认的kdl就可以,顺便设置基本参数,

      • add kin chain

    • 夹爪不需要运动学求解,不用配置kin chain,就家手指就行

6个joint连接7个link,看成一个链条,需要配置用的link链条

  • Robot Poses 自定义点位,方便gui或者变成调用,用字符串直接调用这个姿态

  • End Effectors 终端夹具配置,

  • Passive Joints 对于不需要考虑做运动的关节

生成以后,移动demo

demo

roslaunch会自动启动所有该启动的东西 roslaunch marm_moveit_config demo.launch

rviz里面可以随便操作,感受一下机械臂控制的一些东西。

还可以添加物体。

gui演示起来很铉酷,但是工业用肯定是用程序去控制。

moveit编程

前面demo演示的是GUI的操作接口,工业上用需要实用,朴实无华,不需要GUI,

两种接口Python和C++,用起来差不多,但是,实用机器人还是C++用的更多

关节空间规划

最简单的运动规划,对于机械臂,用关节空间来描述位姿状态,知道每个关节的角度,是可以知道末端位置的。

起始位置用6个角度来描述,终点位置也用6个来描述,6个轴的运动时间是一样的,但是每个关节的姿态没法保证,也就是说终端姿态是没法保证的。

更多理论,《机器人学导论》的教材,这里只是直观来解释

更多理论

Gazebo 仿真机械臂

关节轨迹控制器

接收moveit规划出来的轨迹,

Joint Trajectory Controller

关于控制器的描述,在yaml文件里,

Last updated