一、环境配置
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公钥,把复制的公钥粘贴进去点击确认即可
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:每新打开一个终端,就要激活一遍工程。否则会出现报错。
类似这样(输入什么,就会提示找不到什么):
阐述:这是在为当前的终端设置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
出现这个页面就是启用成功了,把这个窗口挂在后台。打开一个新的终端进行下一步。
3.启用rviz可视化工具,在File中打开 auto_aim/param_files/autoAim.rviz。
在第二个终端中,输入命令rviz打开工具。
rviz
找到File,然后打开 auto_aim/param_files/autoAim.rviz。
4.可以看一下ROS节点的命令行帮助信息,了解用法和参数信息。(非必须步骤,但是建议打开了解一下)
rosrun camera usb_camera.py -h
5.发布话题和运行自瞄程序
5.1 发布前的准备。
(1)检查虚拟机是否连接了相机。
(2)查看虚拟机设置选项,检查虚拟机USB接口是否为3.0及以上的接口。如果不是,要更改好。
如果上述配置没做好,会报错。
出现这种情况,返回上一步重新检查。
5.2 发布相机话题,将相机id设置为0。
rosrun camera usb_camera.py -i 0
5.3 发布视频话题,频率设置为30hz。
rosrun camera usb_camera.py -i "视频路径" -f 30
5.4 运行自瞄程序
发布完话题以后,打开第四个终端,运行程序。
rosrun auto_aim autoAim.py
打开rviz窗口,点开Image可以看到程序的效果。(这里用手机图片作为识别对象)
此处因为手机图片中只有灯条没有数字,识别效果不太好。所以要去修改自瞄程序,打开VSCode。找到自瞄程序中,数字识别类下的这两行代码,把注释去掉。
(使用SVM来识别装甲板的编号,此处手机上的图片中只有灯条没有数字,SVM无法识别出编号。这两行代码的意义是,当SVM识别不出或者识别不到编号时,把装甲板的编号默认为2号。)
往右侧拉,可以看到三维成像。
五、功能包说明
- auto_aim 自瞄程序
- camera 相机或视频调用程序
- classifier_train 图案分类器训练程序(HOG+SVM)
- calibration 相机标定程序
PS:python文件统一放在Scripts里。
1.关于classifier_train 图案分类器训练程序(HOG+SVM)
(1)将数据集进行分类:
- 采集的(正)数据集统一放armor_Tem 文件夹里。(正数据集按 aim 里的数字文件夹进行分类放置)
- 负数据集全部放not_aim 里。
(2)对数据集进行预处理:
- 将图片分类好后,命名不统一、杂乱、重复的图片,用 pre.py 来处理。
(3)模型训练、评估和保存:
- train.py 和 **train.ipynb **是训练模型的程序,前期工作准备好后便可调用进行训练
(4)模型调用示例:
- demo.py 是调用模型的简单示例。
注意事项:绝对路径和相对路径中不能出现中文,否则cv2会报错。
版权归原作者 则白Code 所有, 如有侵权,请联系我们删除。