Ubuntu20.04 ROS及摄像头的使用记录

1.ROS中摄像头的使用

创建一个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

Ubuntu20.04 ROS及摄像头的使用记录_第1张图片

#打开一个窗口启动ros
roscore
#进入到刚才创建的工作空间
cd catkin_ws
#编译
catkin_make
#新打开一个窗口测试摄像头
roslaunch usb_cam usb_cam-test.launch

 摄像头参数可在usb_cam-test.launch更改

Ubuntu20.04 ROS及摄像头的使用记录_第2张图片

 再打开一个窗口输入rqt_graph查看消息,看到usb_cam节点向/usb_cam/image_raw发布了消息,image_view订阅了该消息,消息内容即为图像帧,由image_view显示Ubuntu20.04 ROS及摄像头的使用记录_第3张图片

2.单目相机的标定

 参考链接: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的进度条都变成绿色位置。

Ubuntu20.04 ROS及摄像头的使用记录_第4张图片
 感觉差不多了就按下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打开编辑后,把第一行改为:

Ubuntu20.04 ROS及摄像头的使用记录_第5张图片

3.双目相机的标定

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;
  }

Ubuntu20.04 ROS及摄像头的使用记录_第6张图片

 我用的普通摄像头,没有像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

你可能感兴趣的:(Ubuntu,ROS,ubuntu,自动驾驶,linux)