标题
创建工作空间
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