基于计算机视觉抓取运动的物体(1)
最近在做一个小玩意,记录一下,给大家做一个参考。项目要求利用传感器感知环境,嵌入式计算机(项目负责人想用树莓派)控制机械臂抓取特定的物体。我和我的同学们不同,虽然同为机器人专业,但我是准备跨考网络安全的异类。因为对于计算机视觉较为熟悉,所以我选用“双目定位”来实现项目的技术要求。不多废话,接下来全是干货。
项目的总体可以分为“机械臂”模块和”视觉感知“模块。机械臂模块是其他小组的任务,他们暂时还没有做出来,这块先空着,等他们完成了再补上,先记录一下我的基本思路。
基本思路:双目摄像头作为视觉输入来源,获取目标物体以及机械臂各关节在三维空间中的位置,结合几何运动学和数据训练方法实现机械臂自主抓取目标物体。
接下来是大致的实现步骤:
1、标定机械臂,利用双目摄像机拍摄,嵌入式计算机处理机械臂各关节点在空间坐标中的位置。计算出各关节的角度。
2、通过双目摄像机拍摄的图像获得目标物体所在的位置,利用几何运动学解出机械臂抓取物体所需转到的角度。
3、利用双目摄像头观察机械臂转动的误差,如果误差在接受范围之内就下达抓取命令,机械臂末端执行器抓取目标物体,如果误差较大就计算目标角度和当前角度的误差,使用反馈控制减少误差,算法循环重复1-3步,当误差足够小时下达抓取指令。
Linux源码安装OpenCV
我的计算机安装的是Parrot Linux,系统已经安装了git , 如果你的linux没有git需要安装,debian系的linux用apt管理包安装,命令:sudo apt install git
redhat系的linux用yum或dnf管理包安装,命令:sudo yum install git 或 sudo dnf install git
安装git后,使用git下载OpenCV的源代码,命令:
git clone https://github.com/Itseez/opencv.git
安装编译环境:
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
安装一些功能:
sudo apt-get install python-dev python-numpy python3-dev python3-numpy
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
进入OpenCV目录进行编译和安装:
cd opencv
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release
-DOPENCV_GENERATE_PKGCONFIG=ON
-DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j8 (注意!我的计算机的CPU是八核心,-j8 参数的含义是使用8个线程编译源代码,如果你的电脑CPU没有8个线程,那么就不可以使用此参数,-j的参数由计算机的CPU的线程数而定,想知道自己计算机CPU有几个线程可以使用这个命令:lscpu)
编译需要很长的时间
sudo make install
至此Opencv在linux安装完成,由于本人对C/C++有莫名的好感,所以我来配置一下C++,之后OpenCV的程序我将全部使用C++编写,配置C++:
cd /etc/ld.so.conf.d/
sudo touch opencv4.conf
sudo sh -c 'echo "/usr/local/lib" > opencv4.conf'
sudo ldconfig
C++配置完成,我们来编译一个opencv c++程序玩玩!
cd ~/opencv/samples/cpp/
g++ `pkg-config --cflags opencv4` drawing.cpp `pkg-config --libs opencv4` -o drawing.out
./drawing.out
你将看到有趣的事情!!! opencv forever
未完待续。。。。。。