创建一个catkin工作空间:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
编译工作空间:
cd ~/catkin_ws/
catkin_make (这里可以指定特定的包进行编译比如:catkin_make -DCATKIN_WHITELIST_PACKAGES="webots_ros")
source devel/setup.bash
下载摄像头源码https://github.com/ros-drivers/usb_cam
将包解压并放入上面的src
#打开一个窗口启动ros
roscore
#进入到刚才创建的工作空间
cd catkin_ws
#编译
catkin_make
#新打开一个窗口测试摄像头
roslaunch usb_cam usb_cam-test.launch
摄像头参数可在usb_cam-test.launch更改
再打开一个窗口输入rqt_graph查看消息,看到usb_cam节点向/usb_cam/image_raw发布了消息,image_view订阅了该消息,消息内容即为图像帧,由image_view显示
参考链接:ROS摄像头标定_不二青衣的博客-CSDN博客_ros 摄像头标定
#noetic摄像头标定工具安装
sudo apt-get install ros-noetic-camera-calibration
#启动摄像头
roslaunch usb_cam usb_cam-test.launch
#开始标定
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam
cameracalibrator.py 标定程序需要以下几个输入参数。
1)size:标定棋盘格的内部角点个数,这里使用的棋盘一共有多少行,每行有个内部角点。
2)square:这个参数对应每个棋盘格的边长,单位是米。
3)image和camera:设置摄像头发布的图像话题。
按照x(左右)、y(上下)、size(前后)、skew(倾斜)等方式移动棋盘,直到x,y,size,skew的进度条都变成绿色位置。
感觉差不多了就按下CALIBRATE按钮,等一段时间就可以完成标定。
完成后点击SAVE,然后再COMMIT,在终端后会有标定结果yaml文件地址.打开后,按照Asus.yaml的格式修改,命名为xx(名字自定).yaml,复制到/home/xxx/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3目录下,标定完成。
注意:默认rosrun是调用/usr/bin/python,但是我的Ubuntu20.04没有那个文件,只有python2,python3,python3.8,这个时候我就找到 cameracalibrator.py文件,正常情况下的位置应该在/opt/ros/noetic/lib/camera_calibration/cameracalibrator.py,利用sudo vim cameracalibrator.py打开编辑后,把第一行改为:
cd catkin_ws/src
git clone https://github.com/ros-perception/image_pipeline.git
cd ..
rosdep install --from-paths src --ignore-src # 安装image_pipeline 所需的依赖
catkin_make
遇到打印信息:deprecated pixel format used, make sure you did set range correctly
解决方法,参考ROS踩雷日志(一) usb_cam包显示warning “deprecated pixel format used”_elephant_why的博客-CSDN博客
{
AVPixelFormat pixFormat;
switch (avcodec_context_->pix_fmt) {
case AV_PIX_FMT_YUVJ420P :
pixFormat = AV_PIX_FMT_YUV420P;
break;
case AV_PIX_FMT_YUVJ422P :
pixFormat = AV_PIX_FMT_YUV422P;
break;
case AV_PIX_FMT_YUVJ444P :
pixFormat = AV_PIX_FMT_YUV444P;
break;
case AV_PIX_FMT_YUVJ440P :
pixFormat = AV_PIX_FMT_YUV440P;
break;
default:
pixFormat = avcodec_context_->pix_fmt;
break;
}
avcodec_context_->pix_fmt = pixFormat;
}
我用的普通摄像头,没有像realsense那样有专门的工具包,双目标定一直有问题,希望看到的给我个指引
双目更新,这次用的小觅摄像头,步骤如下
安装opencv3.4.1,其它版本的不行,3.4.10、4.2.0都试过了,不要头铁
opencv 3.4.1链接:Release OpenCV 3.4.1 · opencv/opencv · GitHubOpen Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.https://github.com/opencv/opencv/releases/tag/3.4.1
opencv_contrib3.4.1链接:https://github.com/opencv/opencv_contrib/releases/tag/3.4.1https://github.com/opencv/opencv_contrib/releases/tag/3.4.1
如果已经安装了opencv3.X,可以不管,再装会覆盖,如果是4.X的话,给路径的地方要指明版本。
cd opencv-3.4.1
mkdir build
cd build/
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules ..
make
sudo make install
sudo vim /etc/ld.so.conf.d/opencv.conf
添加:/usr/local/lib
sudo vim /etc/bash.bashrc
添加:PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
source ~/.bashrc
小觅摄像头编译:
git clone https://github.com/slightech/MYNT-EYE-S-SDK.git
cd MYNT-EYE-S-SDK/
make init
make install
make samples