3 Star 11 Fork 5

Stuart / welding_robot

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

智能焊接机器人

一、简介

  • 本项目为华南理工大学2017级自动化毕业设计项目。
  • 包含基于Coppeliasim搭建的仿真系统,仿真接口目前仅支持C++。
  • 包含在实物系统上运行的代码。
  • 本项目所有功能已进行模块化,需要使用部分功能可快速移植调用

二、如何运行这个程序?

1. 在仿真环境中运行

  • 编译运行:

    1. 检查文件夹路径中是否为全英文,路径包含中文会报错
    2. 打开vscode, 编译并在vscode中运行(launch.json已配置好,这样运行目录会切换到主目录,方便程序读写文件)
  • 开始仿真:

    1. 打开目录下的/files/文件夹,运行welding_sim.ttt

2. 在实物系统上运行

三、环境依赖

运行环境 :

  1. 极力推荐使用GCC编译器。如果你使用的是windows平台,请安装MinGW编译器。
  2. 具体软件的安装请自行搜索。

Ubuntu 18.04 LTS / Windows 10.0+

  • CMake (version 3.12.0 +)

  • Python(version 3.0 +)

    Python的位数取决于本项目设置的编译器编译输出类型。然而在Windows10平台上,推荐安装的MinGW只能编译32位程序,因此Windows10上请安装Python-32bit。

  • Matplotlib

    用于三维数据可视化的Python库,安装Python后在命令提示符或linux终端中输入完成安装。

    $ python -m pip install matplotlib

仿真环境 :

  • Coppeliasim 4.1.1 (推荐版本)

  • Qt (version 5.12.0 +, Windows上不需要安装)

四、CoppeliaSim Client

coppeliasim-client是基于官方提供的remoteAPI进行再封装的C++接口

使用简介

  1. API的使用
  • 使用模块主要涉及三个函数:
/*
  函数作用:
  开始与模拟器的通信

  参数说明:
  - p_IP: 仿真软件的地址,通常为"127.0.0.1"
  - p_connection_port: 使用的端口号,需要和仿真主脚本启动时候填写的一致,通常可以给5000
  - commThreadCycleInMs: 每次和模拟器通信的间隔,通常设置5ms
  - sysnchronousMode: true为开启同步仿真模式
  - multiClientMode: 多客户端模式,通常为flase

  返回值:连接成功返回true,否则为false

  例:
  Start("127.0.0.1", 5000, 5, true);
*/
bool Start(const char* p_IP, int32_t p_conection_port, int commThreadCycleInMs, bool synchronousMode = false, bool multiClientMode = false);

/*
  函数作用:
  添加一个模型中存在的对象以及要对这个对象进行的操作,如读取关节速度、角度,读取传感器数据,摄像头图片,或者设置关节转动角度,速度等

  参数说明:
  - full_name: 对象在仿真软件中的名字,一定要完全匹配否则找不到对象
  - type:对象的类型,详细类型参考下面对数据结构的解释
  - operation_ls: 要进行的操作列表,可操作的数据参考下面对数据结构的解释

  返回值:如果添加成功,返回操作对象的地址,可以直接从这个地址读取反馈的数值;添加失败时返回NULL。

  例(添加名为“Joint1”的关节对象,读取当前速度和写入目标速度,读取当前角度和写入目标角度):
  CoppeliaSim->Add_Object("Joint1", JOINT, {SIM_VELOCITY | CLIENT_RW, SIM_POSITION | CLIENT_RW});
*/
_simObjectHandle_Type *Add_Object(std::string full_name, _simObj_Type type, std::initializer_list<simxInt> operation_ls);

/*
  函数作用:
  每次调用这个函数,就会自动执行使用Add_Object()函数添加的一系列读写操作,一般会循环不停地调用这个函数。

  例:
  while(1)
  {
    ComWithServer();
  }
*/
bool ComWithSevrer()
  1. 核心的数据结构(具体查看头文件的枚举类型)
  • _simOP_Type: 操作类型(Operation Type),可对某个对象进行不同类型的操作,包括修改或读取位置、姿态、四元数、速度、力等。

  • _simIO_Type: 输入输出类型(Input/Output Type),有只读(Read Only),只写(Write Only)和读写(Read and Write)三种。在Coppeliasim中不支持的操作将被跳过,比如不能写入传感器的值而只能读取它。

  • _simObj_Type:对象类型(Object Type),模块里面暂时只提供了四种对象类型,分别是关节(Joint)、视觉传感器(Vision sensor)、力传感器(Force sensor)和其他对象(Other Object),对应Coppeliasim里面的不同对象类型。

  • _simOPData_Struct:操作数据结构体,保存有不同类型的数据,在配置好对象要进行的操作之后,就会自动从服务器端读入数据到对应的变量中或自动写入到服务器端。注意设置或读取的时候要区分“obj_Data”和“obj_Target”

项目演示

演示代码位于main.cpp,下面对直线焊接进行演示:

  • 直线焊接

  • 三维路径搜索

  • 三阶B-样条二次轨迹优化

参考文献

  1. X. Wang, L. Xue, Y. Yan, and X. Gu, “Welding robot collision-free path optimization,” Appl. Sci., vol. 7, no. 2, 2017, doi: 10.3390/app7020089.

  2. Bullnheimer, Bernd & Hartl, Richard & Strauss, Christine. (1999). A New Rank Based Version of the Ant System - A Computational Study. Central European Journal of Operations Research. 7. 25-38.

  3. 吴玉香,王超.一种改进的移动机器人三维路径规划方法[J].华南理工大学学报(自然科学版),2016,44(09):53-60.

MIT License Copyright (c) 2021 Mentos_Seetoo Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

焊接机器人无碰撞路线规划代码,其中包含: 1. 贝塞尔曲线,b样条曲线 2. 简单蚂蚁系统(求解GTSP),自适应参数的排序蚂蚁系统(快速搜索三维路径) 3. 从STL读取并创建三维栅格地图 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/mentos-seetoo/welding_robot.git
git@gitee.com:mentos-seetoo/welding_robot.git
mentos-seetoo
welding_robot
welding_robot
main

搜索帮助

344bd9b3 5694891 D2dac590 5694891