# AGV的http控制 **Repository Path**: virus611/http-agv ## Basic Information - **Project Name**: AGV的http控制 - **Description**: AGV中,使用http请求作为控制机器人的远程控制方式 - **Primary Language**: C/C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-08-17 - **Last Updated**: 2024-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AGV的http控制 #### 介绍 在AGV等设备远程控制中,UDP为常用的方式,但是UDP的可靠性在实际的网络环境中不经意让人头痛。此外UDP在指令设计上扩展性太差,byte流还要自己实现编码解码的方式。既然udp不好使,何不试试http?做一个web应用装在AGV或者机器人上,使用http请求发送指令,扩展性ok,还能确认指令是否到达。 httplib库使用了他人的作品,https://github.com/yhirose/cpp-httplib,性能相当的剽悍,ARM上也能用 #### 软件环境 gcc 9.4、 ros1 noetic、 C++11 (默认的) 理论上 ros1 melodic甚至kinetic也可以编译过(kinetic要自己去适配了,毕竟版本太老)。melodic不用改也应该能编译过(和noetic几乎一致),代码是c++11的 没有pyhon版本,工业环境不怎么用这玩意儿 #### 测试说明 1. git本项目,命令行工具也到本项目根目录下 2. catkin_make编译,缺啥装啥,libjsoncpp库是跑不了的,解析json需要 3. 启动ros环境 roscore 4. source devel/setup.sh 5. rosrun webapi webapi_node 6. 打开浏览器,访问http://设备IP:8080,看到hello,world,就可以进行下一步了 7. 使用postman等工具, post http://192.168.3.180:8080/moveto,body为json { "x":10.2, "y":100.1, "yaw":1.57 } x,y为目标的坐标,yaw为到达目标的朝向的弧度值。本demo已经将弧度值换算成了四元数。 #### 其它 httplib和本项目都是mit协议,自己按需修改即可。指令发送端的http请求是没有代码的,自己写,真的不难。 不光是指令,一些设备上的提示信息也可以用本方式下发。并且,httplib库还可以发送http请求 httplib::Client cli(目标IP:端口); auto res = cli.Post(webapi地址, json, "application/json"); if (res != nullptr && res->status == 200) { } else { } 上报位置、状态信息啥的,小case