CS机器人 30001端口使用
1. 简介
30001端口🐿,可用于获取机器人【jī qì rén】的各种状🌄态及数🏓据【jù】👽,机器人【jī qì rén】会以10HZ(100ms)的频率向【xiàng】30001端口发【duān kǒu fā】🤠送机器人【jī qì rén】的状态数据【tài shù jù】👽,还可以往30001端口发【duān kǒu fā】🤠送脚本【sòng jiǎo běn】命令【lìng】,运动指令【lìng】,控制机【kòng zhì jī】🥗器人运动等。(FB1网口🏻)
2. 发送脚本控制机器人
外部设【wài bù shè】备可以往📛30001直接发【zhí jiē fā】送机器🎏人脚本,机器人【jī qì rén】😚处于远【chù yú yuǎn】程模式⛑,机器人【jī qì rén】😚就会运动。
(点击下【diǎn jī xià】图右上角的Elite logo,可以进入设置【rù shè zhì】🚽界面🐆)

远程控制选择启用

将机器人切换为远程控制模式

用户可🌤以在【yǐ zài】🥠socket调试助手中🎫,发送以下代码【xià dài mǎ】进行测【jìn háng cè】试
外部发📷送的脚本格式【běn gé shì】如下🐐:即def开头【kāi tóu】🕡,end结尾(end后加入【hòu jiā rù】🆒换行)。中间内容为机【róng wéi jī】👫器人支【qì rén zhī】持的脚本。
def a():
movej([-3.14,-1.57,-1.57,-1.57,1.57,0],a=1.4,v=0.5,t=0,r=0)
movej([-1.57,-1.57,-1.57,-1.57,1.57,0],a=1.4,v=0.5,t=0,r=0)
end
也可使【yě kě shǐ】用如下🌥代码【dài mǎ】🔝,发送带有函数【yǒu hán shù】⬜调用的脚本
def test(): # 最外层🌄def必须增📺加【jiā】end\n结尾【jié wěi】
# 内部是正常的python语法
def mov():
movej([0.57636,-1.01469,-2.04816,-1.29723,1.5708,-0],a=1.4,v=1.05,t=0,r=0)
a = "hello cs"
if a == "hello cs":
mov()
end

3. 数据接收及解析
接收机器人状态数据
该端口🍠还会以【hái huì yǐ】10Hz的频率【de pín lǜ】📥持续不🌁断地将【duàn dì jiāng】机器人的状态数据以固定格【gù dìng gé】式往外发送。数据格式大体🧑如下【rú xià】💲:
机器人状态报文格式
4 字节
报文长度
1 字节
报文类🏓型【xíng】 = MESSAGE_TYPE_ROBOT_STATE = 16
4 字节
子报文长度
1 字节
子报文类型
n 字节
子报文内容
4 字节
子报文长度
1 字节
子报文类型
n字节
子报文内容
4 字节
报文长度
1 字节
报文类🎃型【xíng】 = MESSAGE_TYPE_ROBOT_STATE = 16
4 字节
子报文长度
1 字节
子报文类型
n 字节
子报文内容
4 字节
子报文长度
1 字节
子报文类型
n字节
子报文内容
详细每一段子🍹报文【wén】的🕜内容请参考【cān kǎo】《CS_用户手【yòng hù shǒu】册🛬_机器人状态报文【wén】.xlsx》
机器人【jī qì rén】😒状态数【zhuàng tài shù】据报文【jù bào wén】🙄主题结🕔构包含【gòu bāo hán】报文【bào wén】🙄头、机器人【jī qì rén】😒模式数【mó shì shù】据子【jù zǐ】📣报文【bào wén】🙄、关节数【guān jiē shù】据子【jù zǐ】📣报文【bào wén】🙄、笛卡尔🚳数据子【jù zǐ】📣报文【bào wén】🙄、机器人【jī qì rén】😒配置数据子【jù zǐ】📣报文【bào wén】🙄、机器人【jī qì rén】😒主板信【zhǔ bǎn xìn】息子报文【bào wén】🙄、机器人【jī qì rén】😒附加信【fù jiā xìn】息子报文【bào wén】🙄、内部使📗用子报✳文【wén】🙄、机器人【jī qì rén】😒工具数🏢据子报【jù zǐ bào】👲文【wén】🙄、机器人【jī qì rén】😒安全状🐼态子报【tài zǐ bào】文【wén】🙄、机器人【jī qì rén】😒工具通👚讯子报文【bào wén】🙄、内部使📗用子报✳文【wén】🙄等内容📤.
每一段子报文〽内的数【nèi de shù】💴据长度、格式都是严格定义的,用户读🌅取时按需择取【xū zé qǔ】对应数👅据段按【jù duàn àn】照指定🍡格式进行数据【háng shù jù】解析【jiě xī】。
以下使【yǐ xià shǐ】🥨用【yòng】Python对机器⏲人配置数据子报文解📋析为例说明【shuō míng】。
程序流程如下:

4. 示例
参考代码:
from robot import *
import argparse
import logging
import time
import numpy as np
from math import *
parser = argparse.ArgumentParser()
#以下IP地址需要修改
parser.add_argument('--host', default='192.168.1.200', help='name of host to connect to (localhost)')
parser.add_argument('--port', type=int, default=30001, help='port number (30001)')
parser.add_argument('--samples', type=int, default=100, help='number of samples to record')
args = parser.parse_args()
robot = Robot('RobotStateMessage.xlsx', 'v2.1.0')
robot.connect(args.host, args.port)
sample_count = args.samples
while sample_count > 0:
data = robot.get_data()
if data == None:
logging.warning("Data is None")
continue
print(" :=^50s}".format(""))
print("tcp_y: "+(':.2f}'.format(data.tcp_y*1000)))
#print("actual_joint : ")
print("RX、RY、RZ\x20关节单【guān jiē dān】位📴\x20°")
print("RX: " + (':.3f}'.format(degrees(data.rot_x))))
print("RZ: " + (':.3f}'.format(degrees(data.rot_z))))
print("关节位🚇置【zhì】🚉\x20关节单【guān jiē dān】位🚇\x20°")
print("一轴【yī zhóu】、基座🏬\x20"':.2f}'.format(degrees(data.actual_joint0)))
print("三轴【sān zhóu】、肘部🔕\x20"':.2f}'.format(degrees(data.actual_joint2)))
print("五轴📱、手腕【shǒu wàn】2\x20"':.2f}'.format(degrees(data.actual_joint4)))
print(" :=^50s}".format(""))
#print(data.actual_velocity1)弧度【hú dù】/秒📛
print("关节实🌙际速度【jì sù dù】\x20角度【jiǎo dù】🛃/秒")
print("1轴实际【zhóu shí jì】😯速度\x20"':.2f}'.format(degrees(data.actual_velocity0)))
print("3轴实际🙄速度【sù dù】\x20"':.2f}'.format(degrees(data.actual_velocity2)))
print("5轴实际【zhóu shí jì】速度💁\x20"':.2f}'.format(degrees(data.actual_velocity4)))
print(" :=^50s}".format(""))
print("2关节力🐦矩【jǔ】\x20"':.2f}'.format(data.torques1))
print("4关节力【guān jiē lì】矩🎙\x20"':.2f}'.format(data.torques3))
print("6关节力【guān jiē lì】🚊矩\x20"':.2f}'.format(data.torques5))
print("模拟IO0输出值😮.\x2002-0.004单位【dān wèi】A")
print(data.standard_analog_output_value0,"A")
print(data.standard_analog_output_value1,"A")
print("工具模🎚拟IO输出配【shū chū pèi】🤲置【zhì】",data.tool_analog_output_domain)
print("工具输出电压【chū diàn yā】🌼数值",data.tool_output_voltage,"V")
print("工具输⛽出电流【chū diàn liú】", data.tool_current,"A")
#print(" {:=^50s}".format(""))
sample_count -= 1
time.sleep(2)
5. 常见问题解答
5.1.问:端口连接不上,连接没反应
答🌚:检修一下网络是不是没有连接上,可以在示教器【shì jiāo qì】网络设【wǎng luò shè】置页面【zhì yè miàn】🈚查看【chá kàn】,或者使【huò zhě shǐ】😔用电脑😄ping一下看看能否🚜ping通🥕,网口是否正常连接的【lián jiē de】FB1口
5.2.问:向端口发送运🚔动指令机器人【jī qì rén】🆗不运动或者报【huò zhě bào】错【cuò】🍦
答:检查一下所发【xià suǒ fā】送的点位数据是否正🏇常,并不是任意一✒组数据机器人【jī qì rén】📐都能执✴行,需要该【xū yào gāi】数据在【shù jù zài】机器人【jī qì rén】📐工作范【gōng zuò fàn】围内【wéi nèi】,并且有正常的解【jiě】⛱。另外数🛶据的单【jù de dān】🐀位为米跟弧度🤐。