AGV协议

实时上报当前坐标
和控制通信不用一个端口,此上报坐标端口为6002,控制通信使用6001
{
"positionx":3.0746, //x坐标
"positiony":-0.3723,    // y坐标
"positionz":0,         // z坐标
"orientationx":0,         //  四元数x
"orientationy":0,         //  四元数y
"orientationz":1,         //  四元数z
"orientationw":0.002     //   四元数w

"position":"AP1-AP2"  //"position":"AP1-AP2"为AP1到AP2路上,  "position":"AP1"为小车目前在AP1点位
}

平面图的四元数xy为0,四元数zw可以根据公式算出目前小车朝向


假定q=[0,0,0.5,0.866]
q.w=cos((a/2)*pi/180) =  0.866
q.x=RAix.x*sin((a/2)*pi/180) = 0
q.y=RAix.y*sin((a/2)*pi/180) = 0
q.z=RAix.z*sin((a/2)*pi/180) = 0.5


由cos((a/2)*pi/180) =  0.866,得到
a = 60或120
由RAix.z*sin((a/2)*pi/180) = 0.5,得到
a = 60或150
            因此a = 60度(四元数的旋转角度一般是在0-360之间,之后就是多一圈的问题。
            于是可得RAix.z = 1,因此其他q=[0.866,0,0,0.5]意味着旋转轴是RAxis =[0 0 1],旋转角度是60度,其他的类似可以计算
手动控制小车移动

{
"vel":0,   //线速度值
"ang":0    //角速度值
}
移动到下一坐标点
发送
{
"request":1,  //标识符号
"position":"AP1" //AP1是第一个点位,之后点位依次为AP2, AP3 ,AP4
}

成功 回复  返回当前位姿
{
    "response":1  //正确标识符
}

失败回复  返回当前位姿 

{
    "response":501,       //错误标识符号
}

以自身为中心进行移动或旋转

发送
{
"request":2,   //标识符号
"positionx":0,       //前进的距离
"positiony":0,        //左右移动的距离
"angle":90             //旋转的角度
}

回复  返回当前位姿
{
"response":2        //正确标识符
}

失败回复  返回当前位姿
{
"response":502    //错误标识符号

}
这一条可以先不加,之后扩展功能再加

读取小车设备信息,需要读信息不用全部发送,发送想要读的数据并设置值为1即可,
或者将想要读的数据值设置为1,不想读的数据设置为0
{
    "request":3,   //标识符号
    "ip":1,       //小车IP地址
    "port":0,    //小车端口号
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值