当前位置: 首页 > news >正文

郴州网站制作贵阳网站推广优化公司

郴州网站制作,贵阳网站推广优化公司,编写程序的步骤,《网站开发实训》实验报告【ROS2实体机械臂驱动】rokae xCoreSDK Python测试使用 文章目录 前言正文配置环境下载源码配置环境变量测试运行修改点说明实际运行情况 参考 前言 本文用来记录 xCoreSDK-Python的调用使用1。 正文 配置环境 配置开发环境#xff0c;这里使用conda做python环境管理这里使用conda做python环境管理安装可以参考 anaconda、miniconda、conda的关系及miniconda安装-CSDN博客2 初始化python环境根据sdk的说明依赖于python3.8环境 # 创建环境 $ conda create --name xCorePy python3.8# 激活虚拟环境 $ conda activate xCorePy# 配置镜像源加速 $ pip config set global.index-url https://mirrors.aliyun.com/pypi/simple下载源码 这里一定要使用git lfs下载源码内部有几个so文件是使用lfs保存的。 $ mkdir -p ~/workspace/rokae_projects $ cd ~/workspace/rokae_projects $ git lfs clone https://github.com/RokaeRobot/xCoreSDK-Python.git $ cd xCoreSDK-Python配置环境变量 $ export PYTHONPATH/home/dev/workspace/rokae_projects/xCoreSDK-Python/rokae_SDK_linux_v0.1.6_py38/lib:$PYTHONPATH测试运行 注意: 应将库文件所在路径添加至运行脚本可识别的路径中。将脚本中的ip修改为连接机器人所设置的ip。 提醒: 到这一步发现robot.connectToRobot(ec)没有权限需要找厂家要license可以找买机械臂的代理拿到后自行插入优盘导入即可。 # 运行 firstexample.py $ cd ~/workspace/rokae_projects/xCoreSDK-Python/rokae_SDK_linux_v0.1.6_py38/example $ python firstexample.py修改点说明 from robot import * from convert_tools import * import timefrom math import pi # 增加导入pi定义def waitRobot(robot):running Truewhile running:time.sleep(0.1)ec {}st robot.operationState(ec)if st rokae.OperationState.idle.value or st rokae.OperationState.unknown.value:running Falsedef main():ip 192.168.8.160 # 修改本地机械臂对应的IP. BingLee 2025.5.28ec {}# 下述类根据实际机械臂情况自行修改. BingLee 2025.5.28## XMateRobot(ip) # 协作机械臂# xMateErProRobot(ip) # 协作7轴机型# StandardRobot(ip) # 连接工业6轴机型# PCB4Robot(ip) # 连接PCB4轴机型# PCB3Robot(ip) # 连接PCB3轴机型with StandardRobot(ip) as robot: # 这里修改为博主使用的工业臂. BingLee 2025.5.28# 连接机器人robot.connectToRobot(ec)# 设置机器人上下电状态-上电robot.setPowerState(True, ec)# 查询机器人状态power robot.powerState(ec)print(当前上下电状态为:, power)time.sleep(2)# 设置机器人上下电状态-下电robot.setPowerState(False, ec)power robot.powerState(ec)print(当前上下电状态为:, power)################################################ 2. 查询信息 ########################################################## 获取机器人的基本信息info robot.robotInfo(ec)print(机器人轴数:, info[joint_num], 机型:, info[type], 控制器版本:, info[version])# 获取SDK版本print(SDK版本:, robot.sdkVersion(ec))# 获取机器人的上下电状态power robot.powerState(ec)print(当前上下电状态为:, power)# 获取机器人的操作模式mode robot.operateMode(ec)print(当前机器人的操作模式为:, mode)# 获取机器人运行状态state robot.operationState(ec)print(当前机器人的运行状态为:, state)######################################## 3. 获取机器人当前位姿轴角度基坐标系等信息 ###################################### 获取关节位置joint_pos robot.jointPos(ec)print(当前关节位置:, joint_pos)# 获取关节速度joint_vel robot.jointVel(ec)print(当前关节速度:, joint_vel)# 获取关节力矩joint_torque robot.jointTorque(ec)print(当前关节力矩:, joint_torque)# 获取法兰位姿posture robot.flangePos(ec)print(当前法兰位姿:, posture)# 获取基坐标系-----原model()类base robot.baseFrame(ec)print(当前基坐标系:, base)# 获取当前的工具坐标系toolset robot.toolset(ec)print(当前的工具坐标系为:, toolset)# 设置新的坐标系# coor_new {end: {rot: [0, 0, 0], trans: [0.0, 0.0, -0.01]}, load: {cog: [0.0, 0.0, 0.0],# inertia: [0.0, 0.0, 0.0], mass: 0.0},# ref: {rot: [0.0, -0.0, 0.0], trans: [0.0, 0.0, 0.0]}}# robot.setToolset(coor_new, ec)# 获取当前的工具坐标系# toolset robot.toolset(ec)# print(修改后的工具坐标系为:, toolset)# 获取法兰位姿posture_ robot.flangePos(ec)print(修改坐标系后的法兰位姿:, posture_)# zero zeroToolset()# robot.setToolset(zero, ec)############################################## 4. 计算正解和逆解 ###################################################### 计算正解-输入一个与当前机型轴数相同的List返回一个当前位姿的listpoint [10, 20, 30, 40, 50, 10]point degree2rad(point)print(point)fk robot.calcFK(point, ec)print(计算正解为:, fk)# 计算逆解-输入一个位姿返回一个轴角的list# pos [0.5930779237738772, -0.060094684364914094, 0.4260427869095114, 3.110893947990362, 0.04429035357891989, -2.9729572573550245]# ik robot.calcIK(pos, ec)# # ik rad2degree(ik)# print(计算逆解为:, ik)############################################## 5. 查询DO和DI ######################################################### 查询端口1_0的DO值do robot.getDO(1, 0, ec)print(message(ec))print(DO1_0当前的信号值为:, do)# 查询端口1_0的DI值di robot.getDI(0, 0, ec)print(DI1_0当前的信号值为:, di)# 将DO1_0的值设为falserobot.setDO(0, 0, False, ec)# 查询端口1_0的DO值do robot.getDO(0, 0, ec)print(DO0_0修改后信号值为:, do)robot.setDO(0, 0, True, ec)############################################## 6. 断开连接再重连 ###################################################### 机器人断开连接robot.disconnectFromRobot(ec)time.sleep(2)# 机器人再次连接robot.connectToRobot(ec)############################################## 7. 打开和关闭拖动 ####################################################### # 机器人下电因机器人拖动模式自动上电# robot.setPowerState(False, ec)# # 将机器人操作模式设为手动# robot.setOperateMode(rokae.OperateMode.manual, ec)# # 开启拖动# robot.enableDrag(rokae.DragParameter.Space.cartesianSpace.value, rokae.DragParameter.Type.freely.value, ec)# print(机器人状态:, robot.operationState(ec))# time.sleep(2)# # 关闭拖动# robot.disableDrag(ec)# print(机器人状态:, robot.operationState(ec))# print(非Drag模式下的上下电模式为, robot.powerState(ec))# time.sleep(2)############################################## 8. 查询工件/工具信息 #################################################### 查询所有工具的信息# tool robot.toolsInfo(ec)# print(tool)# for name in tool.keys():# print(name, 质量:, tool[str(name)][load][mass])# # 查询所有工件的信息# wobj robot.wobjsInfo(ec)# print(查询工件名信息为:)# for name in wobj.keys():# print(name)############################################### 9. 运动指令 ########################################################robot.setOperateMode(rokae.OperateMode.automatic, ec)robot.setPowerState(True, ec)robot.moveReset(ec)# robot.setDefaultZone(100, ec)# robot.setDefaultSpeed(100, ec)# p0 robot.flangePos(ec)# print(p0)# ############################################### 10. Move L 点位测试/ NB4 运动指令 ######################################################### 这里博主均改为使用 MoveAbsJCommand命令数值使用弧度描述. BingLee 2025.5.28p1 MoveAbsJCommand([0, -pi/4, 0, 0, pi/2, pi],1000, 0)# p1.offset [0.1, 0, 0, 0, 0, 0]p2 MoveAbsJCommand([pi/2, 0, pi/4, 0, 0, 0],1000, 0)# p2.offset [0, 0, 0.01, 0, 0, 0]p3 MoveAbsJCommand([-pi/2, -pi/4, 0, 0, pi/2, pi],1000, 0)p4 MoveAbsJCommand([0, -pi/4, pi/4, 0, 0, 0],1000, 0)# p1.offset [0.1, 0, 0, 0, 0, 0]p5 MoveAbsJCommand([0, 0, 0, 0, pi/2, 0],500, 0)while True:cmd input(please input m(start move), p(pause), c(continue), q(break), i(check), s(stop),a(adjust),r(reset), d(drag), k(stop_drag) )if cmd m:print(start move)robot.executeCommand([p1, p2, p3, p4, p5], ec)robot.moveStart(ec)print(ec)elif cmd p:print(suspend)robot.pause(ec)elif cmd d:print(drag)robot.setOperateMode(rokae.OperateMode.manual, ec)robot.enableDrag(rokae.DragParameter.Space.jointSpace.value, rokae.DragParameter.Type.freely.value, ec)elif cmd k:print(kill drag)robot.disableDrag(ec)elif cmd c:print(continue move)robot.moveStart(ec)elif cmd a:print(adjust speed percentage 0.5)robot.adjustSpeedOnline(0.1, ec)elif cmd i:print(current pos id:, robot.getPointPos(ec))elif cmd r:robot.moveReset(ec)elif cmd s:robot.stop(ec)else:print(stop)breakrobot.stop(ec)time.sleep(1)robot.setPowerState(False, ec)robot.disconnectFromRobot(ec)# if __name__ __main__:main()运行输出结果 $ python3 firstexample.py 当前上下电状态为: 0 当前上下电状态为: 1 机器人轴数: 6 机型: XB10s-R1206-3B 控制器版本: 2.3.2 SDK版本: 0.1.7(Beta) 当前上下电状态为: 1 当前机器人的操作模式为: 0 当前机器人的运行状态为: 0 当前关节位置: [-1.1489009000176548e-05, 1.4887235907275245e-06, 1.6342124870940784e-05, 3.834951969714103e-06, 1.5708015998538547, -5.086011055912068e-05] 当前关节速度: [0.00010657046279474108, -0.0, 0.000355366933557185, 0.0, -0.0, -0.0] 当前关节力矩: [0.0, -0.0, 0.0, 0.0, -0.0, -0.0] 当前法兰位姿: [0.6140099673622327, -6.736065028031115e-06, 0.9639800086642404, 3.1415888174476487, -2.3400841886472892e-05, -3.141553282467999] 当前基坐标系: [0.0, 0.0, 0.0, 0.0, -0.0, 0.0] 当前的工具坐标系为: {end: {name: , rot: [0.0, -0.0, 0.0], trans: [0.0, 0.0, 0.0]}, load: {cog: [0.0, 0.0, 0.0], inertia: [0.0, 0.0, 0.0], mass: 0.0}, ref: {name: , rot: [0.0, -0.0, 0.0], trans: [0.0, 0.0, 0.0]}} 修改坐标系后的法兰位姿: [0.6140099530347417, -6.7360648634224415e-06, 0.9639798350653594, 3.141588817432537, -2.369797142919661e-05, -3.1415532824679984] [0.17453292222222222, 0.34906584444444444, 0.5235987666666666, 0.6981316888888889, 0.8726646111111112, 0.17453292222222222] 计算正解为: [0.6142222356255438, 0.14980394927718851, 0.47920904205188103, 2.749132677334611, -0.3447416415079533, 2.705140663241381] 操作成功完成 DO1_0当前的信号值为: False DI1_0当前的信号值为: None DO0_0修改后信号值为: None please input m(start move), p(pause), c(continue), q(break), i(check), s(stop),a(adjust),r(reset), d(drag), k(stop_drag) - m输入下述指令控制 m启动运动轨迹p暂停c继续q中断程序i输出当前位置信息r清理robot运动点寄存s停止 这里博主常用的是m、p、c、q、i指令。 实际运行情况 参考 中间还涉及官方的其它库也一并附上345。 RokaeRobot/xCoreSDK-Python: Software development Python interfaces for Rokae robots all series ↩︎ anaconda、miniconda、conda的关系及miniconda安装-CSDN博客 ↩︎ RokaeRobot/xCoreSDK-CPP: Software development C interfaces for Rokae robots all series, compatible with Linux and Windows. ↩︎ RokaeRobot/xCoreSDK-CSharp: Software development C# interfaces for Rokae robots all series ↩︎ RokaeRobot/xCoreSDK-Android: Software development interfaces for Rokae robots all series, supports Android platform ↩︎
http://www.zqtcl.cn/news/610119/

相关文章:

  • 傻瓜式网站建设软件保险预约
  • 网站 备案规定自己做简单网站
  • 网站上怎么做支付接口南乐网站建设
  • 咸阳网站建设公司电话做个公司网站大概多少钱
  • 网站如何做关键词排名点子网创意网
  • 浙江建设培训考试网站河源东莞网站建设
  • 网站移动端做pc端的301跳转哪些网站是增值网
  • wordpress新闻站浙江耀华建设集团网站
  • 网站开发代理企业网站推广技巧和方法
  • 俄语网站开发用模板做的网站多少钱
  • 丽水网站建设公司广州网络公司
  • 做基金的网站哪个好针对大学生推广引流
  • 国外对旅游网站的建设互联网推广和互联网营销
  • 海南省建设厅网站首页有什么做设计的兼职网站
  • 网站导航功能苏州市高新区建设局网站
  • jsp网站 值班多语种网站开发
  • 公司网站英文做电商
  • 合肥企业网站建设公司哪家好卖产品怎么做网站
  • 网站建设公司86215中国中小企业网站
  • 做网站 如何 挣钱游戏网站开发协议
  • 网站建设发展wordpress比较慢
  • 收费网站推广动漫制作就业方向
  • 湖北优化网站建设设计公司需要什么资质
  • 个人网站怎么制作wordpress创意小工具
  • 网站管理维护怎么做在线oa
  • vue做企业网站wordpress 不发送邮件
  • 深圳做网站哪家便宜邮政编码html编写
  • 黑龙江营商环境建设局网站门户网站整改报告
  • 是不是做推广都得有网站深圳网站建设新闻
  • 旅游做视频网站关于建设网站的书本