CS机器人二次开发启动流程
1.简介
客户应用场景中可能会要求使用 SDK 来开发,下面介绍 SDK 启动机器人方法,过程中请保持机器人为远程模式,与示教器操作大体一致只是以代码的形式分步执行,打开电源,释放抱闸等功能,至机器人处于正常模式后运行。
以下各指令代码可参考EliRobot Dashboard手册技术资料_机器人技术-艾利特机器人
2. 操作流程
2.1 定义函数
连接函数:
#建立socket连接
def connectETController(ip, port):
#ip, port:IP和端口号
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.connect((ip, port))
return (True, sock)
except Exception as e:
sock.close()
return (False)
29999端口接收和发送函数:
#29999端口使用,参考dashboard_shell手册
def dashboard_shell(content):
#content:输入的内容
robot_ip = "192.168.1.140"
port = 29999
##连接机器人ip和端口
conSuc, sock = connectETController(robot_ip, port)
recvData1 = sock.recv(4096) #清空缓存区
if (conSuc):
# 命令转字符串加换行
# 发送给机器人
sock.sendall(bytes(str(content + '\n'),"utf-8"))
# 接受机器人该端口的返回信息
recvData = sock.recv(4096)
# decode()方法将一个字节序列转换成字符串
recvData = recvData.decode()
# 返回对应指令的字符,成功或者不成功
return (recvData.replace('\n', '').replace('\r', ''))
2.2 机器人上电
#利用29999端口打开电源
def powering_on():
##电控柜上电后启动机器人上电
Data = dashboard_shell("robotControl -on")
# 返回Powering on上电成功,其他为失败
print(Data)
if Data == 'Powering on':
print('上电成功')
else:
print(Data)
time.sleep(0.5)

2.3 释放抱闸
#利用29999端口释放抱闸
def brake_releasing():
while True:
Data = dashboard_shell("brakeRelease")
# 返回Brake is released.抱闸释放成功,其他为失败
if Data == 'Brake is released':
print('抱闸释放成功')
break
else:
print(Data)
time.sleep(0.5)

2.4 运行任务
#利用29999端口运行任务
def play():
Data = dashboard_shell("play")
# 返回Starting task任务运行成功,其他为失败
if Data == 'Starting task':
print('已启动任务')
else:
print('运行失败:'+Data)
time.sleep(1)

2.5 任务状态查询
#利用29999端口查询任务状态
def task():
Data = dashboard_shell("task -r")
# 返回Task is running.任务正在运行,其他为失败
if Data == 'Task is running':
print('任务正在运行')
else:
print('当前运行状态为:'+Data)
time.sleep(1)
3. 汇总
操作流程的2.1-2.4汇总在一起就可以实现SDK一键启动至运行状态(见下图)。
#打开电源
powering_on()
#释放抱闸
brake_releasing()
#运行任务
play()
#查询任务状态
task()

4. 其他
29999端口还可以打开或切换不同的任务和配置,具体使用指令可查询EliRobot Dashboard手册,手册下载可至官网或咨询艾利特技术人员技术资料_机器人技术-艾利特机器人