0


从Gitee上部署视觉工程到Linux虚拟机

一、环境配置

Ubuntu20.04 + ROS1.noetic

1.下载好Ubuntu镜像并安装。

参考:ubuntu20.04 安装教程_ubuntu20.04安装教程-CSDN博客

2.用鱼香ros安装ROS1.noetic

参考:ROS的最简单安装——鱼香一键安装_鱼香ros一键安装-CSDN博客

二、克隆前的准备

1.软件安装

安装VSCode用于调试代码

可以用鱼香ROS一键安装:

wget http://fishros.com/install -O fishros && . fishros

2.安装OPenCV4.5.5版本

sudo pip install opencv-python==4.5.5.64 -i https://pypi.tuna.tsinghua.edu.cn/simple

三、克隆工程

1.如果电脑初次使用Gitee需要注册账号和邮箱,尽量与Gitee账号一致

git config --global user.name '白泽' 
git config --global user.email '106*******@qq.com'

2.初次使用SSH进行代码克隆、推送等操作时,需完成 SSH 配置(这里需要回车三次)

ssh-keygen -t rsa
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/git/.ssh/id_rsa.pub):
#在此处回车
Enter passphrase (empty for no passphrase):
#在此处回车
Enter same passphrase again:
#在此处回车
Your identification has been saved in /home/git/.ssh/id_rsa.pub
Your public key has been saved in /home/git/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:ohDd0OK5WG2dx4gST/j35HjvlJlGHvihyY+Msl6IC8I Gitee SSH Key
The key's randomart image is:
+--[ED25519 256]--+
|    .o           |
|   .+oo          |
|  ...O.o +       |
|   .= * = +.     |
|  .o +..S*. +    |
|. ...o o..+* *   |
|.E. o . ..+.O    |
| . . ... o =.    |
|    ..oo. o.o    |
+----[SHA256]-----+

3. 使用命令获取到公钥的内容,然后复制到Gitee的公钥设置中

cat ~/.ssh/id_rsa.pub

打开Gitee>设置>安全设置>SSH公钥,把复制的公钥粘贴进去点击确认即可

6e66623a9f6d43f2bfe921799ec7aa33.png

4.在Ubuntu20.04中打开终端,输入命令来创建一个工作空间

mkdir -p ~/rmVision/src
cd ~/rmVision

5. 通过SSH来拉取工程

git clone [email protected]:kehaunjack/rm-vision.git src

6.编译工程

catkin_make

7.激活工程

source ~/rmVision/devel/setup.bash

ps:每新打开一个终端,就要激活一遍工程。否则会出现报错。

类似这样(输入什么,就会提示找不到什么):

aaca7eb152924f1da442f5e9d0defd29.png

阐述:这是在为当前的终端设置ROS环境变量。

ROS正常运行需要设置一些环境变量。

setup.bash

中包含

ROS_PACKAGE_PATH、
ROS_MASTER_URI

ROS_PACKAGE_PATH

PYTHONPATH

等环境变量。

(1)**

setup.bash

文件包含了设置环境变量的指令。**这些环境变量告诉ROS和其他系统工具如何找到和使用你的ROS工作空间中的包和节点。

(2)当你运行

source

命令时,它会将你的工作空间中的

rmVision

包**添加到

ROS_PACKAGE_PATH

中,这样ROS就可以找到并使用这个包了。**

(3)临时设置和永久设置。

source

命令的效果只对当前的shell会话有效。如果你关闭了终端或者**打开一个新的终端窗口,你需要再次运行

source

命令来设置环境变量。此处为临时设置。**如果你希望每次打开终端时自动设置这些环境变量,你可以将

source

命令添加到你的

~/.bashrc

文件中。这样,每次打开新的终端时,环境变量都会自动设置。这就是永久设置。

8.将激活命令添加到~/.bashrc文件

永久设置后,每次打开终端时自动设置这些环境变量,你可以将

source

命令添加到你的

~/.bashrc

文件中。这样,每次打开新的终端时,环境变量都会自动设置。这样不用每开一个新的终端就激活一次。)

echo "source ~/rmVision/devel/setup.bash" >> ~/.bashrc

四、运行

1.Python文件需给予可执行权限后,才可使用rosrun命令执行

可以先查看文件权限

ls -l 你要运行的文件.py

如果没有可执行权限,可以用chmod命令添加可执行权限

chmod +x 你要运行的文件.py

2.启用ROS内核

打开第一个终端,用来挂ROS的内核启动页面。

roscore

4d9121121b3d46009e2dd0d0510143bc.png

出现这个页面就是启用成功了,把这个窗口挂在后台。打开一个新的终端进行下一步。

3.启用rviz可视化工具,在File中打开 auto_aim/param_files/autoAim.rviz。

在第二个终端中,输入命令rviz打开工具。

rviz

找到File,然后打开 auto_aim/param_files/autoAim.rviz。

69797f5f45d04efeaa27d3ddee98c666.png

0b758d1df83e48fa85a4fbf1551c133b.png

3d2237be331b48fb902abf6d15019739.png

4.可以看一下ROS节点的命令行帮助信息,了解用法和参数信息。(非必须步骤,但是建议打开了解一下)

rosrun camera usb_camera.py -h

4fae5ec18c7643a3a556eaf35aec0070.png

5.发布话题和运行自瞄程序

5.1 发布前的准备。

(1)检查虚拟机是否连接了相机。

20096d4ea17c4a1c96b48ea55b26bcfa.png

(2)查看虚拟机设置选项,检查虚拟机USB接口是否为3.0及以上的接口。如果不是,要更改好。

fada29f956cf4f74b07c839e6492dce7.png

如果上述配置没做好,会报错。

7c640224892544deb21f3a2f6fffb0e7.png

出现这种情况,返回上一步重新检查。

5.2 发布相机话题,将相机id设置为0。

rosrun camera usb_camera.py -i 0

0d62e00f1cd548398362aab8218bedb8.png

5.3 发布视频话题,频率设置为30hz。

rosrun camera usb_camera.py -i "视频路径" -f 30

5.4 运行自瞄程序

发布完话题以后,打开第四个终端,运行程序。

rosrun auto_aim autoAim.py

b7ca21c1c2334f11b74cac7b97bb6b83.png

打开rviz窗口,点开Image可以看到程序的效果。(这里用手机图片作为识别对象)

9b32851b1e304e34a4715cf5c7cea92b.png

此处因为手机图片中只有灯条没有数字,识别效果不太好。所以要去修改自瞄程序,打开VSCode。找到自瞄程序中,数字识别类下的这两行代码,把注释去掉。

5910b3194eaf4ed99834e06905fab651.png

(使用SVM来识别装甲板的编号,此处手机上的图片中只有灯条没有数字,SVM无法识别出编号。这两行代码的意义是,当SVM识别不出或者识别不到编号时,把装甲板的编号默认为2号。)

往右侧拉,可以看到三维成像。

53986b6a904d4f5fbf84ff29f49a9ea9.png

五、功能包说明

  • auto_aim 自瞄程序
  • camera 相机或视频调用程序
  • classifier_train 图案分类器训练程序(HOG+SVM)
  • calibration 相机标定程序

PS:python文件统一放在Scripts里。

1.关于classifier_train 图案分类器训练程序(HOG+SVM)

354fc2f104794788aacc5786dc0d8ad2.png

(1)将数据集进行分类:

  • 采集的(正)数据集统一放armor_Tem 文件夹里。(正数据集按 aim 里的数字文件夹进行分类放置)
  • 负数据集全部放not_aim 里。

(2)对数据集进行预处理:

  • 将图片分类好后,命名不统一、杂乱、重复的图片,用 pre.py 来处理。

(3)模型训练、评估和保存:

  • train.py 和 **train.ipynb **是训练模型的程序,前期工作准备好后便可调用进行训练

(4)模型调用示例:

  • demo.py 是调用模型的简单示例。

注意事项:绝对路径和相对路径中不能出现中文,否则cv2会报错。


本文转载自: https://blog.csdn.net/2301_81035291/article/details/143461465
版权归原作者 则白Code 所有, 如有侵权,请联系我们删除。

“从Gitee上部署视觉工程到Linux虚拟机”的评论:

还没有评论