1 搭建

1.1安装场景

1.1-1

使用3*3白色长挡板构建场地,然后分别在左上角放置长为20cm的白色短挡板和右下角围成正方形。

整体场地长:约130cm

整体场地宽:约130cm

1.2myAGV安装myCobot280Pi

用六角扳手将这四颗m4*8内六角螺丝拆卸f下来。

将myCobot 280Pi机械臂的X轴对应的正确方向进行安装,并拧上四颗m4*8固定280Pi。

用六角扳手将这四颗m4*8内六角螺丝重新安装上去。

1.3安装摄像头和吸泵

让机械臂回到零位,摄像头安装在六轴零位右旋转10°,此时摄像头平行于地面,吸泵没有方向要求,分别用乐高键安装在机械臂末端。

Grove口连接吸泵,根据引脚定义,另一端依次连接树莓派的GND、5V、21、22;M5版本连接GND、5V、2、5。摄像头的USB线和AGV的DC电源端接入机械臂接口。

将吸泵放入右侧弹仓,将杜邦线和吸泵线进行整理,不能遮挡激光雷达。否则会影响导航功能。

2 知识环境

2.1 OpenCV简单使用

2.1.1 什么是OpenCV

openCV全称是Open Source Computer Vision Library。是Intel(英特尔)公司开源计算机视觉库,它有一系列C函数和C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。

2.1.2 OpenCV的安装与使用

pip install opencv-python
pip install opencv-contrib-python

简单使用

import cv2 
def openCamera():
    print('opencv版本',cv2.__version__)
    print("键盘ESC退出")

    cap = cv2.VideoCapture(0) # Linux
    # cap = cv2.VideoCapture(1) # Windows
    while cap.isOpened():
        sucess,frame = cap.read()
        if sucess:
            cv2.imshow("frame",frame)
            if cv2.waitKey(10)==27:
                break
    cap.release()
    cv2.destroyAllWindows()


if __name__=="__main__":
    openCamera()

2.2 校准摄像头

详情请查看 2.8.2 知识准备章节 中的校准摄像头部分内容。

3 myAGV建图导航功能

3.1Gmapping建图

3.1.1 打开slam激光扫描launch文件

打开小车后,打开控制台终端(快捷键Ctrl+Alt+T),在命令行中输入以下指令:

cd myagv_ros
roslaunch myagv_odometry myagv_active.launch

注意:在开启launch文件之前,请先将小车放置在需要建图环境中的一个合适起始点位上,因为开启launch文件将会开启小车的IMU传感器及odom里程计,人为的移动小车将造成小车建图失真。

3.1.2 打开gmapping建图launch文件

重新打开一个控制台终端,在命令行中输入以下指令:

cd myagv_ros
roslaunch myagv_navigation myagv_slam_laser.launch

3.1.3 打开键盘控制文件

重新打开一个控制台终端,在终端命令行中输入:

cd myagv_ros
roslaunch myagv_teleop myagv_teleop.launch

键盘控制终端

方向键:

按键 方向
i 前进
后退
j 向左运动
l 向右运动
u 逆时针旋转
o 顺时针旋转
k 停止

3.1.4 开始建图

现在小车可以在键盘的控制下开始移动了,操控小车在所需建图的空间内转一圈吧。与此同时,可以看到在Rviz空间里我们的地图也会跟着小车的移动一点点的把地图构建出来了。 注意:在用键盘操作小车的时候,确保运行myagv_teleop.launch文件的终端是当前选中的窗口,否则键盘控制程序无法识别键盘的按键。

建图轨迹Rviz

3.1.5 保存所构建的地图

再打开一个新的控制台终端,在命令行中输入以下指令,用来保存小车扫描完成的地图:

rosrun map_server map_saver

运行成功后终端显示如下:

地图文件

这里可以看到我们画了个红圈圈,只是地图保存后生成的两个文件,分别为 map.pgm 和 map.yaml。这两个文件默认会保存在家目录。在同一个终端内输入 cd 则会进入我们的家目录,再输入 ls 可以看到在家目录下生成的地图文件已经生成好了。

家目录地图文件

3.2导航

3.2.1 复制地图文件到项目文件夹对应的位置

  1. 点击桌面上的File system图标打开文件管理器,点击右侧的“ubuntu”进入/home/ubuntu 目录
  2. 可以看到之前我们建好的地图就保存在这个路径下,选中这两个文件
  3. 单击右键,点击Copy复制这两个文件

复制地图1

  1. 点击桌面上的File system图标打开另一个文件管理器进入如下路径,将刚才复制的地图文件粘贴到该路径下:

    /home/ubuntu/myagv_ros/src/myagv_navigation/map/

复制地图2

3.2.2 修改launch文件

  1. 打开/home/er/myagv_ros/src/myagv_navigation/launch/路径下的 navigation_active.launch文件

vscode图标

  1. 将navigation_active.launch文件"map_file" 的“default”路径名替换成我们自己建图的文件名 map.yaml,例如下面
    <arg name="map_file" default="$(find myagv_navigation)/map/map.yaml"/>
    

map

3.2.3 运行launch文件

  1. 打开小车后,打开控制台终端(快捷键Ctrl+Alt+T),在命令行中输入以下指令:
cd myagv_ros
roslaunch myagv_odometry myagv_active.launch
  1. 再打开一个控制台终端(快捷键Ctrl+Alt+T),输入如下指令:
cd myagv_ros
roslaunch myagv_navigation navigation_active.launch

终端显示

  1. 可以看到开启了一个Rviz仿真窗口。

注意:小车的初始位置最好放置到我们建图时小车的出发位置

若Rviz界面的小车和实际小车对应不上,点击顶部工具栏的“2D Pose Estimate” 进行调整,使得Rviz界面的小车和实现的小车可对应上,调整后进行导航。

运行launch文件1

  1. 点击顶部工具栏的“2D Nav Goal”

运行launch文件3

  1. 点击地图上我们想要到达的点位,小车便会向着目标点位出发,同时还可以在rviz中看到起点到目标点位间有一条小车的规划路径,小车会沿着路线运动到目标点位。

运行launch文件4

4 复合机器人套装整体流程

4.1 myAGV

在启动前确保其他终端都关闭,并把小车移动到建图时小车起始位置,然后运行下面这三个文件

#终端1 激光雷达、里程计启动
roslaunch myagv_odometry myagv_active.launch

#终端2 navigation导航启动
roslaunch myagv_navigation navigation_active.launch

#终端3 socket启动并得到当前网络的ip地址和端口
cd myagv_ros/src/simple_navigation_goals/scripts/
python agvto280_socket_server.py

4.1-1

4.2 myCobot 280Pi

在myCobot 280Pi中运行python脚本,修改python中socket的ip地址和端口,对应agv的ip和端口

client_socket.connect(('192.168.123.126',9000))

然后运行python脚本

cd ~/Composite-robot-Kit
python 280pi_socket_client.py

等待机械臂发送指令后,就能完成流程: 1.myAGV定点导航 2.myAGV二维码导航 3.myCobot二维码识别 4.myAGV定点导航 5.机械臂放取。

4.2-2

results matching ""

    No results matching ""