mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-18 05:21:19 +00:00
Version 0.10.1 (#66)
* add biomek.py demo implementation * 更新LiquidHandlerBiomek类,添加资源创建功能,优化协议创建方法,修复部分代码格式问题,更新YAML配置以支持新功能。 * Test * fix biomek success type * Convert LH action to biomek. * Update biomek.py * 注册表上报handle和schema (param input) * 修复biomek缺少的字段 * delete 's' * Remove warnings * Update biomek.py * Biomek test * Update biomek.py * 新增transfer_biomek的msg * New transfer_biomek * Updated transfer_biomek * 更新transfer_biomek的msg * 更新transfer_biomek的msg * 支持Biomek创建 * new action * fix key name typo * New parameter for biomek to run. * Refine * Update * new actions * new actions * 1 * registry * fix biomek startup add action handles * fix handles not as default entry * biomek_test.py biomek_test.py是最新的版本,运行它会生成complete_biomek_protocol.json * Update biomek.py * biomek_test.py * fix liquid_handler.biomek handles * host node新增resource add时间统计 create_resource新增handle bump version to 0.9.2 * 修正物料上传时间 改用biomek_test 增加ResultInfoEncoder 支持返回结果上传 * 正确发送return_info结果 * 同步执行状态信息 * 取消raiseValueError提示 * Update biomek_test.py * 0608 DONE * 同步了Biomek.py 现在应可用 * biomek switch back to non-test * temp disable initialize resource * 37-biomek-i5i7 (#40) * add biomek.py demo implementation * 更新LiquidHandlerBiomek类,添加资源创建功能,优化协议创建方法,修复部分代码格式问题,更新YAML配置以支持新功能。 * Test * fix biomek success type * Convert LH action to biomek. * Update biomek.py * 注册表上报handle和schema (param input) * 修复biomek缺少的字段 * delete 's' * Remove warnings * Update biomek.py * Biomek test * Update biomek.py * 新增transfer_biomek的msg * New transfer_biomek * Updated transfer_biomek * 更新transfer_biomek的msg * 更新transfer_biomek的msg * 支持Biomek创建 * new action * fix key name typo * New parameter for biomek to run. * Refine * Update * new actions * new actions * 1 * registry * fix biomek startup add action handles * fix handles not as default entry * biomek_test.py biomek_test.py是最新的版本,运行它会生成complete_biomek_protocol.json * Update biomek.py * biomek_test.py * fix liquid_handler.biomek handles * host node新增resource add时间统计 create_resource新增handle bump version to 0.9.2 * 修正物料上传时间 改用biomek_test 增加ResultInfoEncoder 支持返回结果上传 * 正确发送return_info结果 * 同步执行状态信息 * 取消raiseValueError提示 * Update biomek_test.py * 0608 DONE * 同步了Biomek.py 现在应可用 * biomek switch back to non-test * temp disable initialize resource * Refine biomek * Refine copy issue * Refine --------- Co-authored-by: Junhan Chang <changjh@pku.edu.cn> Co-authored-by: Guangxin Zhang <guangxin.zhang.bio@gmail.com> Co-authored-by: qxw138 <qxw@stu.pku.edu.cn> * Device visualization (#39) * Update README and MQTTClient for installation instructions and code improvements * feat: 支持local_config启动 add: 增加对crt path的说明,为传入config.py的相对路径 move: web component * add: registry description * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * feat: node_info_update srv fix: OTDeck cant create * close #12 feat: slave node registry * feat: show machine name fix: host node registry not uploaded * feat: add hplc registry * feat: add hplc registry * fix: hplc status typo * fix: devices/ * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * fix: device.class possible null * fix: HPLC additions with online service * fix: slave mode spin not working * fix: slave mode spin not working * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * feat: 多ProtocolNode 允许子设备ID相同 feat: 上报发现的ActionClient feat: Host重启动,通过discover机制要求slaveNode重新注册,实现信息及时上报 * feat: 支持env设置config * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * Device visualization (#14) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: missing hostname in devices_names fix: upload_file for model file * fix: missing paho-mqtt package bump version to 0.9.0 * fix startup add ResourceCreateFromOuter.action * fix type hint * update actions * update actions * host node add_resource_from_outer fix cmake list * pass device config to device class * add: bind_parent_ids to resource create action fix: message convert string * fix: host node should not be re_discovered * feat: resource tracker support dict * feat: add more necessary params * feat: fix boolean null in registry action data * feat: add outer resource * 编写mesh添加action * feat: append resource * add action * feat: vis 2d for plr * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate * Device visualization (#22) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * 编写mesh添加action * add action * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: multi channel * fix: aspirate * fix: aspirate * fix: aspirate * fix: aspirate * 提交 * fix: jobadd * fix: jobadd * fix: msg converter * tijiao * add resource creat easy action * identify debug msg * mq client id * 提取lh的joint发布 * unify liquid_handler definition * 修改物料跟随与物料添加逻辑 修改物料跟随与物料添加逻辑 将joint_publisher类移出lh的backends,但仍需要对lh的backends进行一些改写 * Revert "修改物料跟随与物料添加逻辑" This reverts commit498c997ad7. * Reapply "修改物料跟随与物料添加逻辑" This reverts commit3a60d2ae81. * Revert "Merge remote-tracking branch 'upstream/dev' into device_visualization" This reverts commitfa727220af, reversing changes made to498c997ad7. * 修改物料放下时的方法,如果选择 修改物料放下时的方法, 如果选择drop_trash,则删除物料显示 如果选择drop,则让其解除连接 * add biomek.py demo implementation * 更新LiquidHandlerBiomek类,添加资源创建功能,优化协议创建方法,修复部分代码格式问题,更新YAML配置以支持新功能。 * Test * fix biomek success type * Convert LH action to biomek. * Update biomek.py * 注册表上报handle和schema (param input) * 修复biomek缺少的字段 * delete 's' * Remove warnings * Update biomek.py * Biomek test * Update biomek.py * 新增transfer_biomek的msg * New transfer_biomek * Updated transfer_biomek * 更新transfer_biomek的msg * 更新transfer_biomek的msg * 支持Biomek创建 * new action * fix key name typo * New parameter for biomek to run. * Refine * Update * new actions * new actions * 1 * registry * fix biomek startup add action handles * fix handles not as default entry * unilab添加moveit启动 1,整合所有moveit节点到一个move_group中,并整合所有的controller依次激活 2,添加pymoveit2的节点,使用json可直接启动 3,修改机械臂规划方式,添加约束,让冗余关节不会进行过多移动 * biomek_test.py biomek_test.py是最新的版本,运行它会生成complete_biomek_protocol.json * Update biomek.py * biomek_test.py * fix liquid_handler.biomek handles * 修改物体attach时,多次赋值当前时间导致卡顿问题, * Revert "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit56d45b94f5. * Reapply "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit07d9db20c3. * 添加缺少物料:"plate_well_G12", * host node新增resource add时间统计 create_resource新增handle bump version to 0.9.2 * 修正物料上传时间 改用biomek_test 增加ResultInfoEncoder 支持返回结果上传 * 正确发送return_info结果 * 同步执行状态信息 * 取消raiseValueError提示 * Update biomek_test.py * 0608 DONE * 同步了Biomek.py 现在应可用 * biomek switch back to non-test * temp disable initialize resource * add * fix tip resource data * liquid states * change to debug level * Revert "change to debug level" This reverts commit5d9953c3e5. * Reapply "change to debug level" This reverts commit2487bb6ffc. * fix tip resource data * add full device * add moveit yaml * 修复moveit 增加post_init阶段,给予ros_node反向 * remove necessary node * fix moveit action client * remove necessary imports * Update moveit_interface.py * fix handler_key uppercase * json add liquids * fix setup * add * change to "sources" and "targets" for lh * bump version * remove parent's parent link --------- Co-authored-by: Harvey Que <Q-Query@outlook.com> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: Junhan Chang <changjh@pku.edu.cn> Co-authored-by: Guangxin Zhang <guangxin.zhang.bio@gmail.com> Co-authored-by: qxw138 <qxw@stu.pku.edu.cn> * Device visualization (#41) * Update README and MQTTClient for installation instructions and code improvements * feat: 支持local_config启动 add: 增加对crt path的说明,为传入config.py的相对路径 move: web component * add: registry description * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * feat: node_info_update srv fix: OTDeck cant create * close #12 feat: slave node registry * feat: show machine name fix: host node registry not uploaded * feat: add hplc registry * feat: add hplc registry * fix: hplc status typo * fix: devices/ * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * fix: device.class possible null * fix: HPLC additions with online service * fix: slave mode spin not working * fix: slave mode spin not working * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * feat: 多ProtocolNode 允许子设备ID相同 feat: 上报发现的ActionClient feat: Host重启动,通过discover机制要求slaveNode重新注册,实现信息及时上报 * feat: 支持env设置config * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * Device visualization (#14) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: missing hostname in devices_names fix: upload_file for model file * fix: missing paho-mqtt package bump version to 0.9.0 * fix startup add ResourceCreateFromOuter.action * fix type hint * update actions * update actions * host node add_resource_from_outer fix cmake list * pass device config to device class * add: bind_parent_ids to resource create action fix: message convert string * fix: host node should not be re_discovered * feat: resource tracker support dict * feat: add more necessary params * feat: fix boolean null in registry action data * feat: add outer resource * 编写mesh添加action * feat: append resource * add action * feat: vis 2d for plr * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate * Device visualization (#22) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * 编写mesh添加action * add action * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: multi channel * fix: aspirate * fix: aspirate * fix: aspirate * fix: aspirate * 提交 * fix: jobadd * fix: jobadd * fix: msg converter * tijiao * add resource creat easy action * identify debug msg * mq client id * 提取lh的joint发布 * unify liquid_handler definition * 修改物料跟随与物料添加逻辑 修改物料跟随与物料添加逻辑 将joint_publisher类移出lh的backends,但仍需要对lh的backends进行一些改写 * Revert "修改物料跟随与物料添加逻辑" This reverts commit498c997ad7. * Reapply "修改物料跟随与物料添加逻辑" This reverts commit3a60d2ae81. * Revert "Merge remote-tracking branch 'upstream/dev' into device_visualization" This reverts commitfa727220af, reversing changes made to498c997ad7. * 修改物料放下时的方法,如果选择 修改物料放下时的方法, 如果选择drop_trash,则删除物料显示 如果选择drop,则让其解除连接 * add biomek.py demo implementation * 更新LiquidHandlerBiomek类,添加资源创建功能,优化协议创建方法,修复部分代码格式问题,更新YAML配置以支持新功能。 * Test * fix biomek success type * Convert LH action to biomek. * Update biomek.py * 注册表上报handle和schema (param input) * 修复biomek缺少的字段 * delete 's' * Remove warnings * Update biomek.py * Biomek test * Update biomek.py * 新增transfer_biomek的msg * New transfer_biomek * Updated transfer_biomek * 更新transfer_biomek的msg * 更新transfer_biomek的msg * 支持Biomek创建 * new action * fix key name typo * New parameter for biomek to run. * Refine * Update * new actions * new actions * 1 * registry * fix biomek startup add action handles * fix handles not as default entry * unilab添加moveit启动 1,整合所有moveit节点到一个move_group中,并整合所有的controller依次激活 2,添加pymoveit2的节点,使用json可直接启动 3,修改机械臂规划方式,添加约束,让冗余关节不会进行过多移动 * biomek_test.py biomek_test.py是最新的版本,运行它会生成complete_biomek_protocol.json * Update biomek.py * biomek_test.py * fix liquid_handler.biomek handles * 修改物体attach时,多次赋值当前时间导致卡顿问题, * Revert "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit56d45b94f5. * Reapply "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit07d9db20c3. * 添加缺少物料:"plate_well_G12", * host node新增resource add时间统计 create_resource新增handle bump version to 0.9.2 * 修正物料上传时间 改用biomek_test 增加ResultInfoEncoder 支持返回结果上传 * 正确发送return_info结果 * 同步执行状态信息 * 取消raiseValueError提示 * Update biomek_test.py * 0608 DONE * 同步了Biomek.py 现在应可用 * biomek switch back to non-test * temp disable initialize resource * add * fix tip resource data * liquid states * change to debug level * Revert "change to debug level" This reverts commit5d9953c3e5. * Reapply "change to debug level" This reverts commit2487bb6ffc. * fix tip resource data * add full device * add moveit yaml * 修复moveit 增加post_init阶段,给予ros_node反向 * remove necessary node * fix moveit action client * remove necessary imports * Update moveit_interface.py * fix handler_key uppercase * json add liquids * fix setup * add * change to "sources" and "targets" for lh * bump version * remove parent's parent link * change arm's name * change name --------- Co-authored-by: Harvey Que <Q-Query@outlook.com> Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: q434343 <73513873+q434343@users.noreply.github.com> Co-authored-by: Junhan Chang <changjh@pku.edu.cn> Co-authored-by: Guangxin Zhang <guangxin.zhang.bio@gmail.com> Co-authored-by: qxw138 <qxw@stu.pku.edu.cn> * fix move it * fix move it * create_resource * bump ver modify slot type * 增加modbus支持 调整protocol node以更好支持多种类型的read和write * 调整protocol node以更好支持多种类型的read和write * 补充日志 * Device visualization (#42) * Update README and MQTTClient for installation instructions and code improvements * feat: 支持local_config启动 add: 增加对crt path的说明,为传入config.py的相对路径 move: web component * add: registry description * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * feat: node_info_update srv fix: OTDeck cant create * close #12 feat: slave node registry * feat: show machine name fix: host node registry not uploaded * feat: add hplc registry * feat: add hplc registry * fix: hplc status typo * fix: devices/ * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * fix: device.class possible null * fix: HPLC additions with online service * fix: slave mode spin not working * fix: slave mode spin not working * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * feat: 多ProtocolNode 允许子设备ID相同 feat: 上报发现的ActionClient feat: Host重启动,通过discover机制要求slaveNode重新注册,实现信息及时上报 * feat: 支持env设置config * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * Device visualization (#14) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: missing hostname in devices_names fix: upload_file for model file * fix: missing paho-mqtt package bump version to 0.9.0 * fix startup add ResourceCreateFromOuter.action * fix type hint * update actions * update actions * host node add_resource_from_outer fix cmake list * pass device config to device class * add: bind_parent_ids to resource create action fix: message convert string * fix: host node should not be re_discovered * feat: resource tracker support dict * feat: add more necessary params * feat: fix boolean null in registry action data * feat: add outer resource * 编写mesh添加action * feat: append resource * add action * feat: vis 2d for plr * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate * Device visualization (#22) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * 编写mesh添加action * add action * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: multi channel * fix: aspirate * fix: aspirate * fix: aspirate * fix: aspirate * 提交 * fix: jobadd * fix: jobadd * fix: msg converter * tijiao * add resource creat easy action * identify debug msg * mq client id * 提取lh的joint发布 * unify liquid_handler definition * 修改物料跟随与物料添加逻辑 修改物料跟随与物料添加逻辑 将joint_publisher类移出lh的backends,但仍需要对lh的backends进行一些改写 * Revert "修改物料跟随与物料添加逻辑" This reverts commit498c997ad7. * Reapply "修改物料跟随与物料添加逻辑" This reverts commit3a60d2ae81. * Revert "Merge remote-tracking branch 'upstream/dev' into device_visualization" This reverts commitfa727220af, reversing changes made to498c997ad7. * 修改物料放下时的方法,如果选择 修改物料放下时的方法, 如果选择drop_trash,则删除物料显示 如果选择drop,则让其解除连接 * unilab添加moveit启动 1,整合所有moveit节点到一个move_group中,并整合所有的controller依次激活 2,添加pymoveit2的节点,使用json可直接启动 3,修改机械臂规划方式,添加约束,让冗余关节不会进行过多移动 * 修改物体attach时,多次赋值当前时间导致卡顿问题, * Revert "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit56d45b94f5. * Reapply "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit07d9db20c3. * 添加缺少物料:"plate_well_G12", * add * fix tip resource data * liquid states * change to debug level * Revert "change to debug level" This reverts commit5d9953c3e5. * Reapply "change to debug level" This reverts commit2487bb6ffc. * fix tip resource data * add full device * add moveit yaml * 修复moveit 增加post_init阶段,给予ros_node反向 * remove necessary node * fix moveit action client * remove necessary imports * Update moveit_interface.py * fix handler_key uppercase * json add liquids * fix setup * add * change to "sources" and "targets" for lh * bump version * remove parent's parent link * change arm's name * change name * fix ik error --------- Co-authored-by: Harvey Que <Q-Query@outlook.com> Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: q434343 <73513873+q434343@users.noreply.github.com> Co-authored-by: Junhan Chang <changjh@pku.edu.cn> * Add Mock Device for Organic Synthesis\添加有机合成的虚拟仪器和Protocol (#43) * Add Device MockChiller Add device MockChiller * Add Device MockFilter * Add Device MockPump * Add Device MockRotavap * Add Device MockSeparator * Add Device MockStirrer * Add Device MockHeater * Add Device MockVacuum * Add Device MockSolenoidValve * Add Device Mock \_init_.py * 规范模拟设备代码与注册表信息 * 更改Mock大写文件夹名 * 删除大写目录 * Edited Mock device json * Match mock device with action * Edit mock device yaml * Add new action * Add Virtual Device, Action, YAML, Protocol for Organic Syn * 单独分类测试的protocol文件夹 * 更名Action --------- Co-authored-by: Xuwznln <18435084+Xuwznln@users.noreply.github.com> * bump version & protocol fix * hotfix: Add macos_sdk_config (#46) Co-authored-by: quehh <scienceol@outlook.com> * include device_mesh when pip install * 测试自动构建 * try build fix * try build * test artifacts * hotfix: Add .certs in .gitignore * create container * container 添加和更新完成 * Device registry port (#49) * Update README and MQTTClient for installation instructions and code improvements * feat: 支持local_config启动 add: 增加对crt path的说明,为传入config.py的相对路径 move: web component * add: registry description * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * feat: node_info_update srv fix: OTDeck cant create * close #12 feat: slave node registry * feat: show machine name fix: host node registry not uploaded * feat: add hplc registry * feat: add hplc registry * fix: hplc status typo * fix: devices/ * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * fix: device.class possible null * fix: HPLC additions with online service * fix: slave mode spin not working * fix: slave mode spin not working * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * feat: 多ProtocolNode 允许子设备ID相同 feat: 上报发现的ActionClient feat: Host重启动,通过discover机制要求slaveNode重新注册,实现信息及时上报 * feat: 支持env设置config * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * Device visualization (#14) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: missing hostname in devices_names fix: upload_file for model file * fix: missing paho-mqtt package bump version to 0.9.0 * fix startup add ResourceCreateFromOuter.action * fix type hint * update actions * update actions * host node add_resource_from_outer fix cmake list * pass device config to device class * add: bind_parent_ids to resource create action fix: message convert string * fix: host node should not be re_discovered * feat: resource tracker support dict * feat: add more necessary params * feat: fix boolean null in registry action data * feat: add outer resource * 编写mesh添加action * feat: append resource * add action * feat: vis 2d for plr * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate * Device visualization (#22) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * 编写mesh添加action * add action * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: multi channel * fix: aspirate * fix: aspirate * fix: aspirate * fix: aspirate * 提交 * fix: jobadd * fix: jobadd * fix: msg converter * tijiao * add resource creat easy action * identify debug msg * mq client id * unify liquid_handler definition * Update virtual_device.yaml * 更正了stir和heater的连接方式 * 区分了虚拟仪器中的八通阀和电磁阀,添加了两个阀门的驱动 * 修改了add protocol * 修复了阀门更新版的bug * 修复了添加protocol前缀导致的不能启动的bug * Fix handles * bump version to 0.9.6 * add resource edge upload * update container registry and handles * add virtual_separator virtual_rotavap fix transfer_pump * fix container value add parent_name to edge device id * 大图的问题都修复好了,添加了gassource和vacuum pump的驱动以及注册表 * default resource upload mode is false * 添加了icon的文件名在注册表里面 * 修改了json图中link的格式 * fix resource and edge upload * fix device ports * Fix edge id * 移除device的父节点关联 * separate registry sync and resource_add * 默认不进行注册表报送,通过命令unilabos-register或者增加启动参数 * 完善tip * protocol node不再嵌套显示 * bump version to 0.9.7 新增一个测试PumpTransferProtocol的teststation,亲测可以运行,将八通阀们和转移泵与pump_protocol适配 * protocol node 执行action不应携带自身device id * 添加了一套简易双八通阀工作站JSON,亲测能跑 * 修复了很多protocol,亲测能跑 * 添加了run column和filter through的protocol,亲测能跑 * fix mock_reactor * 修改了大图和小图的json,但是在前端上没看到改变 --------- Co-authored-by: Harvey Que <Q-Query@outlook.com> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: q434343 <73513873+q434343@users.noreply.github.com> Co-authored-by: Junhan Chang <changjh@pku.edu.cn> * 更新workstation注册表 * 添加了两个protocol的检索功能 (#51) * 添加了两个protocol的检索liquid type功能 * fix workstation registry * 修复了没连接的几个仪器的link,添加了container的icon * 修改了json和注册表,现在大图全部的device都链接上了 * 修复了小图的json图,线全部连上了 * add work_station protocol handles (ports) * fix workstation action handle --------- Co-authored-by: Xuwznln <18435084+Xuwznln@users.noreply.github.com> Co-authored-by: Junhan Chang <changjh@dp.tech> * 新增注册表补全功能,修复Protocol执行失败 * 支持通过导入方式补全注册表,新增工作流unilabos_device_id字段 * 修复不启用注册表补充就无法启动的bug * 修复部分识别error * 修复静态方法识别get status,注册表支持python类型 * status types对于嵌套类型返回的对象,暂时处理成字符串,无法直接进行转换 * 支持通过list[int],list[float]进行Int64MultiArray,Float64MultiArray的替换 * 成功动态导入的不再需要使用静态导入 * Fix handle names (#55) * fix handle names * improve evacuateAndRefill gas source finding * add camera and dependency (#56) * 修复auto-的Action在protocol node下错误注册 * 匹配init param schema格式 * Add channel_sources config in conda_build_config.yaml (#58) * 修复任务执行传参 * Create 5 new protocols & bump version 0.9.8 (#59) * 添加了5个缺失的protocol,验证了可以运行 * bump version to 0.9.8 * 修复新增的Action的字段缺失 --------- Co-authored-by: Xuwznln <18435084+Xuwznln@users.noreply.github.com> * 转换到ros消息时,要进行基础类型转换 * Update work_station.yaml (#60) * Update work_station.yaml * Checklist里面有XDL跟protocol之间没对齐的问题,工作量有点大找时间写完 * Create prcxi.py * Update prcxi.py * Update Prcxi * 更新中析仪器,以及启动示例 * 修改moveit_interface,并在mqtt上报时发送一个时间戳,方便网页端对数据的筛选 (#62) * Update README and MQTTClient for installation instructions and code improvements * feat: 支持local_config启动 add: 增加对crt path的说明,为传入config.py的相对路径 move: web component * add: registry description * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * feat: node_info_update srv fix: OTDeck cant create * close #12 feat: slave node registry * feat: show machine name fix: host node registry not uploaded * feat: add hplc registry * feat: add hplc registry * fix: hplc status typo * fix: devices/ * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * fix: device.class possible null * fix: HPLC additions with online service * fix: slave mode spin not working * fix: slave mode spin not working * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * feat: 多ProtocolNode 允许子设备ID相同 feat: 上报发现的ActionClient feat: Host重启动,通过discover机制要求slaveNode重新注册,实现信息及时上报 * feat: 支持env设置config * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * Device visualization (#14) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: missing hostname in devices_names fix: upload_file for model file * fix: missing paho-mqtt package bump version to 0.9.0 * fix startup add ResourceCreateFromOuter.action * fix type hint * update actions * update actions * host node add_resource_from_outer fix cmake list * pass device config to device class * add: bind_parent_ids to resource create action fix: message convert string * fix: host node should not be re_discovered * feat: resource tracker support dict * feat: add more necessary params * feat: fix boolean null in registry action data * feat: add outer resource * 编写mesh添加action * feat: append resource * add action * feat: vis 2d for plr * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate * Device visualization (#22) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * 编写mesh添加action * add action * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: multi channel * fix: aspirate * fix: aspirate * fix: aspirate * fix: aspirate * 提交 * fix: jobadd * fix: jobadd * fix: msg converter * tijiao * add resource creat easy action * identify debug msg * mq client id * 提取lh的joint发布 * unify liquid_handler definition * 修改物料跟随与物料添加逻辑 修改物料跟随与物料添加逻辑 将joint_publisher类移出lh的backends,但仍需要对lh的backends进行一些改写 * Revert "修改物料跟随与物料添加逻辑" This reverts commit498c997ad7. * Reapply "修改物料跟随与物料添加逻辑" This reverts commit3a60d2ae81. * Revert "Merge remote-tracking branch 'upstream/dev' into device_visualization" This reverts commitfa727220af, reversing changes made to498c997ad7. * 修改物料放下时的方法,如果选择 修改物料放下时的方法, 如果选择drop_trash,则删除物料显示 如果选择drop,则让其解除连接 * unilab添加moveit启动 1,整合所有moveit节点到一个move_group中,并整合所有的controller依次激活 2,添加pymoveit2的节点,使用json可直接启动 3,修改机械臂规划方式,添加约束,让冗余关节不会进行过多移动 * 修改物体attach时,多次赋值当前时间导致卡顿问题, * Revert "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit56d45b94f5. * Reapply "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit07d9db20c3. * 添加缺少物料:"plate_well_G12", * add * fix tip resource data * liquid states * change to debug level * Revert "change to debug level" This reverts commit5d9953c3e5. * Reapply "change to debug level" This reverts commit2487bb6ffc. * fix tip resource data * add full device * add moveit yaml * 修复moveit 增加post_init阶段,给予ros_node反向 * remove necessary node * fix moveit action client * remove necessary imports * Update moveit_interface.py * fix handler_key uppercase * json add liquids * fix setup * add * change to "sources" and "targets" for lh * bump version * remove parent's parent link * change arm's name * change name * fix ik error * 修改moveit_interface,并在mqtt上报时发送一个时间戳 --------- Co-authored-by: Harvey Que <Q-Query@outlook.com> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: Junhan Chang <changjh@pku.edu.cn> * 更新实例 * 更新实例 * 更新实例 * 修正prcxi启动 * 更新PRCXI配置,修改主机地址和设置状态,并添加示例用法 * add pickup tips for prcxi * 任意执行错误都应该返回failed * 任意执行错误都应该返回failed * Add plateT6 to PRCXI configuration and enhance error handling in liquid handling * prcxi blending * assert blending_times > 0 * update prcxi * update prcxi registry * Update prcxi.py to fit the function in unilabos. * 不生成已配置action的动作,增加prcxi的debug模式 * 增加注册表版本参数,支持将auto-指令人工检查后非auto,不生成人工已检查的指令,取消不必要的description生成 * 增加注册表版本参数,支持将auto-指令人工检查后非auto,不生成人工已检查的指令,取消不必要的description生成 * Update prcxi.py * 修复了部分的protocol因为XDL更新导致的问题 (#61) * 修复了部分的protocol因为XDL更新导致的问题 但是pumptransfer,add,dissolve,separate还没修,后续还需要写virtual固体加料器 * 补充了四个action * 添加了固体加样器,丰富了json,修改了add protocol * bump version to 0.9.9 * fix bugs from new actions * protocol完整修复版本& bump version to 0.9.10 * 修补了一些单位处理,bump version to 0.9.11 * 优化了全protocol的运行时间,除了pumptransfer相关的还没 * 补充了剩下的几个protocol --------- Co-authored-by: Junhan Chang <changjh@dp.tech> Co-authored-by: Xuwznln <18435084+Xuwznln@users.noreply.github.com> * 修复action移除时的报错,更新注册表 * Update prcxi.py * Update prcxi.py * 新增simulator * Update prcxi.py * Update trash * Update prcxi.py * Update prcxi.py * Update for discard tips * Update prcxi.py * Update PRCXI * 更新axis等参数 * Update 9320 * get_well_container&get_tip_rack * update * Update 9320 * update * deck * 更新注册表&增加资源,parent应为resources字段 * Update 9320 * update * 新增set liquid方法 * 新增set liquid方法 * action to resource & 0.9.12 (#64) * action to resource & 0.9.12 * stir和adjustph的中的bug修不好 * modify prcxi * 0.9.12 update registry * update * update * registry upadte * Update * update * container_for_nothing * mix * registry fix * registry fix * registry fix * Update * Update prcxi.py * SET TIP RACK * bump version * update registry version & category * update set tip rack * yaml dump支持ordered dict,支持config_info * fix devices * fix resource check serialize * fix: Protocol node resource run (#65) * stir和adjustph的中的bug修不好 * fix sub-resource query in protocol node compiling * add resource placeholder to vessels * add the rest yaml * Update work_station.yaml --------- Co-authored-by: KCFeng425 <2100011801@stu.pku.edu.cn> * 采用http报送resource * 采用http报送resource * update * Update .gitignore * bump version to 0.10.0 * default param simulator * slim * Update * Update for prcxi * Update * Update * Refactor PRCXI9300Deck initialization and update plate configurations - Changed deck name from "PRCXI_Deck" to "PRCXI_Deck_9300". - Updated plate4 initialization to use get_well_container instead of get_tip_rack. - Modified plate4 material details with new UUID, code, and name. - Renamed output JSON file to "deck_9300_new.json". - Uncommented and adjusted liquid handling operations for clarity and future use. * test * update * Update prcxi_9300.json This one is good * update * fix protocol_node communication transfer * 修复注册表handles类型错误的问题 * 物料添加失败应该直接raise ValueError,不要等待 * 更正注册表中的数字类型 * Delete unnecessary files. * 新增lab_id直接传入 * fix vessel_id param passing in protocols * 新增dll预载,保证部分设备可正常使用unilabos_msgs * 修复可能的web template找不到的问题 新增联网获取json启动 删除非-g传入启动json的方式 兼容传参参数名短横线与下划线 * 修复可能的web template找不到的问题 新增联网获取json启动 删除非-g传入启动json的方式 兼容传参参数名短横线与下划线 更新版本到0.10.1 修复Upload Registry镜像不匹配 * 新增用户引导 * Device visualization (#67) * Update README and MQTTClient for installation instructions and code improvements * feat: 支持local_config启动 add: 增加对crt path的说明,为传入config.py的相对路径 move: web component * add: registry description * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * feat: node_info_update srv fix: OTDeck cant create * close #12 feat: slave node registry * feat: show machine name fix: host node registry not uploaded * feat: add hplc registry * feat: add hplc registry * fix: hplc status typo * fix: devices/ * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * fix: device.class possible null * fix: HPLC additions with online service * fix: slave mode spin not working * fix: slave mode spin not working * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * feat: 多ProtocolNode 允许子设备ID相同 feat: 上报发现的ActionClient feat: Host重启动,通过discover机制要求slaveNode重新注册,实现信息及时上报 * feat: 支持env设置config * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * Device visualization (#14) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: missing hostname in devices_names fix: upload_file for model file * fix: missing paho-mqtt package bump version to 0.9.0 * fix startup add ResourceCreateFromOuter.action * fix type hint * update actions * update actions * host node add_resource_from_outer fix cmake list * pass device config to device class * add: bind_parent_ids to resource create action fix: message convert string * fix: host node should not be re_discovered * feat: resource tracker support dict * feat: add more necessary params * feat: fix boolean null in registry action data * feat: add outer resource * 编写mesh添加action * feat: append resource * add action * feat: vis 2d for plr * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate * Device visualization (#22) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * 编写mesh添加action * add action * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: multi channel * fix: aspirate * fix: aspirate * fix: aspirate * fix: aspirate * 提交 * fix: jobadd * fix: jobadd * fix: msg converter * tijiao * add resource creat easy action * identify debug msg * mq client id * 提取lh的joint发布 * unify liquid_handler definition * 修改物料跟随与物料添加逻辑 修改物料跟随与物料添加逻辑 将joint_publisher类移出lh的backends,但仍需要对lh的backends进行一些改写 * Revert "修改物料跟随与物料添加逻辑" This reverts commit498c997ad7. * Reapply "修改物料跟随与物料添加逻辑" This reverts commit3a60d2ae81. * Revert "Merge remote-tracking branch 'upstream/dev' into device_visualization" This reverts commitfa727220af, reversing changes made to498c997ad7. * 修改物料放下时的方法,如果选择 修改物料放下时的方法, 如果选择drop_trash,则删除物料显示 如果选择drop,则让其解除连接 * unilab添加moveit启动 1,整合所有moveit节点到一个move_group中,并整合所有的controller依次激活 2,添加pymoveit2的节点,使用json可直接启动 3,修改机械臂规划方式,添加约束,让冗余关节不会进行过多移动 * 修改物体attach时,多次赋值当前时间导致卡顿问题, * Revert "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit56d45b94f5. * Reapply "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit07d9db20c3. * 添加缺少物料:"plate_well_G12", * add * fix tip resource data * liquid states * change to debug level * Revert "change to debug level" This reverts commit5d9953c3e5. * Reapply "change to debug level" This reverts commit2487bb6ffc. * fix tip resource data * add full device * add moveit yaml * 修复moveit 增加post_init阶段,给予ros_node反向 * remove necessary node * fix moveit action client * remove necessary imports * Update moveit_interface.py * fix handler_key uppercase * json add liquids * fix setup * add * change to "sources" and "targets" for lh * bump version * remove parent's parent link * change arm's name * change name * fix ik error * 修改moveit_interface,并在mqtt上报时发送一个时间戳 * 添加机械臂和移液站 * 添加 * 添加硬件 * update * 添加 --------- Co-authored-by: Harvey Que <Q-Query@outlook.com> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: Junhan Chang <changjh@pku.edu.cn> * 更新注册表 --------- Co-authored-by: Junhan Chang <changjh@pku.edu.cn> Co-authored-by: Guangxin Zhang <guangxin.zhang.bio@gmail.com> Co-authored-by: qxw138 <qxw@stu.pku.edu.cn> Co-authored-by: q434343 <73513873+q434343@users.noreply.github.com> Co-authored-by: Harvey Que <Q-Query@outlook.com> Co-authored-by: Kongchang Feng <2100011801@stu.pku.edu.cn> Co-authored-by: hh. <103566763+Mile-Away@users.noreply.github.com> Co-authored-by: quehh <scienceol@outlook.com> Co-authored-by: Harvey Que <quehaohui@dp.tech> Co-authored-by: Junhan Chang <changjh@dp.tech> Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,323 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
|
||||
<xacro:macro name="cs_ros2_control" params="
|
||||
name
|
||||
use_fake_hardware:=false fake_sensor_commands:=false
|
||||
sim_gazebo:=false
|
||||
sim_ignition:=false
|
||||
headless_mode:=false
|
||||
initial_positions:=${dict(shoulder_pan_joint=0.0,shoulder_lift_joint=-1.57,elbow_joint=0.0,wrist_1_joint=-1.57,wrist_2_joint=0.0,wrist_3_joint=0.0)}
|
||||
use_tool_communication:=false
|
||||
script_filename
|
||||
output_recipe_filename
|
||||
input_recipe_filename
|
||||
tf_prefix
|
||||
robot_ip
|
||||
tool_voltage:=0
|
||||
tool_parity:=0 tool_baud_rate:=115200 tool_stop_bits:=1 tool_tcp_port:=54321
|
||||
reverse_port:=50001
|
||||
script_sender_port:=50002
|
||||
local_ip:=0.0.0.0
|
||||
script_command_port:=50004
|
||||
trajectory_port:=50003
|
||||
robot_receive_timeout:=0.2
|
||||
">
|
||||
|
||||
<ros2_control name="${name}" type="system">
|
||||
<hardware>
|
||||
<xacro:if value="${sim_gazebo}">
|
||||
<plugin>gazebo_ros2_control/GazeboSystem</plugin>
|
||||
</xacro:if>
|
||||
<xacro:if value="${sim_ignition}">
|
||||
<plugin>ign_ros2_control/IgnitionSystem</plugin>
|
||||
</xacro:if>
|
||||
<xacro:if value="${use_fake_hardware}">
|
||||
<plugin>mock_components/GenericSystem</plugin>
|
||||
<param name="fake_sensor_commands">${fake_sensor_commands}</param>
|
||||
<param name="state_following_offset">0.0</param>
|
||||
</xacro:if>
|
||||
<xacro:unless value="${use_fake_hardware or sim_gazebo or sim_ignition}">
|
||||
<plugin>ELITE_CS_ROBOT_ROS_DRIVER/EliteCSPositionHardwareInterface</plugin>
|
||||
<param name="robot_ip">${robot_ip}</param>
|
||||
<param name="script_filename">${script_filename}</param>
|
||||
<param name="output_recipe_filename">${output_recipe_filename}</param>
|
||||
<param name="input_recipe_filename">${input_recipe_filename}</param>
|
||||
<param name="headless_mode">${headless_mode}</param>
|
||||
<param name="reverse_port">${reverse_port}</param>
|
||||
<param name="script_sender_port">${script_sender_port}</param>
|
||||
<param name="local_ip">${local_ip}</param>
|
||||
<param name="script_command_port">${script_command_port}</param>
|
||||
<param name="trajectory_port">${trajectory_port}</param>
|
||||
<param name="tf_prefix">${tf_prefix}</param>
|
||||
<param name="servoj_gain">2000</param>
|
||||
<param name="servoj_lookahead_time">0.08</param>
|
||||
<param name="servoj_time">0.008</param>
|
||||
<param name="use_tool_communication">${use_tool_communication}</param>
|
||||
<param name="tool_voltage">${tool_voltage}</param>
|
||||
<param name="tool_parity">${tool_parity}</param>
|
||||
<param name="tool_baud_rate">${tool_baud_rate}</param>
|
||||
<param name="tool_stop_bits">${tool_stop_bits}</param>
|
||||
<param name="tool_tcp_port">${tool_tcp_port}</param>
|
||||
<param name="robot_receive_timeout">${robot_receive_timeout}</param>
|
||||
</xacro:unless>
|
||||
</hardware>
|
||||
<joint name="${tf_prefix}shoulder_pan_joint">
|
||||
<command_interface name="position"/>
|
||||
<command_interface name="velocity"/>
|
||||
<state_interface name="position">
|
||||
<!-- initial position for the FakeSystem and simulation -->
|
||||
<param name="initial_value">${initial_positions['shoulder_pan_joint']}</param>
|
||||
</state_interface>
|
||||
<state_interface name="velocity"/>
|
||||
<state_interface name="effort"/>
|
||||
</joint>
|
||||
<joint name="${tf_prefix}shoulder_lift_joint">
|
||||
<command_interface name="position"/>
|
||||
<command_interface name="velocity"/>
|
||||
<state_interface name="position">
|
||||
<!-- initial position for the FakeSystem and simulation -->
|
||||
<param name="initial_value">${initial_positions['shoulder_lift_joint']}</param>
|
||||
</state_interface>
|
||||
<state_interface name="velocity"/>
|
||||
<state_interface name="effort"/>
|
||||
</joint>
|
||||
<joint name="${tf_prefix}elbow_joint">
|
||||
<command_interface name="position"/>
|
||||
<command_interface name="velocity"/>
|
||||
<state_interface name="position">
|
||||
<!-- initial position for the FakeSystem and simulation -->
|
||||
<param name="initial_value">${initial_positions['elbow_joint']}</param>
|
||||
</state_interface>
|
||||
<state_interface name="velocity"/>
|
||||
<state_interface name="effort"/>
|
||||
</joint>
|
||||
<joint name="${tf_prefix}wrist_1_joint">
|
||||
<command_interface name="position"/>
|
||||
<command_interface name="velocity"/>
|
||||
<state_interface name="position">
|
||||
<!-- initial position for the FakeSystem and simulation -->
|
||||
<param name="initial_value">${initial_positions['wrist_1_joint']}</param>
|
||||
</state_interface>
|
||||
<state_interface name="velocity"/>
|
||||
<state_interface name="effort"/>
|
||||
</joint>
|
||||
<joint name="${tf_prefix}wrist_2_joint">
|
||||
<command_interface name="position"/>
|
||||
<command_interface name="velocity"/>
|
||||
<state_interface name="position">
|
||||
<!-- initial position for the FakeSystem and simulation -->
|
||||
<param name="initial_value">${initial_positions['wrist_2_joint']}</param>
|
||||
</state_interface>
|
||||
<state_interface name="velocity"/>
|
||||
<state_interface name="effort"/>
|
||||
</joint>
|
||||
<joint name="${tf_prefix}wrist_3_joint">
|
||||
<command_interface name="position"/>
|
||||
<command_interface name="velocity"/>
|
||||
<state_interface name="position">
|
||||
<!-- initial position for the FakeSystem and simulation -->
|
||||
<param name="initial_value">${initial_positions['wrist_3_joint']}</param>
|
||||
</state_interface>
|
||||
<state_interface name="velocity"/>
|
||||
<state_interface name="effort"/>
|
||||
</joint>
|
||||
|
||||
<xacro:unless value="${sim_gazebo or sim_ignition}">
|
||||
<sensor name="${tf_prefix}tcp_fts_sensor">
|
||||
<state_interface name="force.x"/>
|
||||
<state_interface name="force.y"/>
|
||||
<state_interface name="force.z"/>
|
||||
<state_interface name="torque.x"/>
|
||||
<state_interface name="torque.y"/>
|
||||
<state_interface name="torque.z"/>
|
||||
</sensor>
|
||||
|
||||
<!-- NOTE The following are joints used only for testing with fake hardware and will change in the future -->
|
||||
<gpio name="${tf_prefix}speed_scaling">
|
||||
<state_interface name="speed_scaling_factor"/>
|
||||
<param name="initial_speed_scaling_factor">1</param>
|
||||
<command_interface name="target_speed_fraction_cmd"/>
|
||||
<command_interface name="target_speed_fraction_async_success"/>
|
||||
</gpio>
|
||||
|
||||
<gpio name="${tf_prefix}gpio">
|
||||
<command_interface name="standard_digital_output_cmd_0"/>
|
||||
<command_interface name="standard_digital_output_cmd_1"/>
|
||||
<command_interface name="standard_digital_output_cmd_2"/>
|
||||
<command_interface name="standard_digital_output_cmd_3"/>
|
||||
<command_interface name="standard_digital_output_cmd_4"/>
|
||||
<command_interface name="standard_digital_output_cmd_5"/>
|
||||
<command_interface name="standard_digital_output_cmd_6"/>
|
||||
<command_interface name="standard_digital_output_cmd_7"/>
|
||||
<command_interface name="standard_digital_output_cmd_8"/>
|
||||
<command_interface name="standard_digital_output_cmd_9"/>
|
||||
<command_interface name="standard_digital_output_cmd_10"/>
|
||||
<command_interface name="standard_digital_output_cmd_11"/>
|
||||
<command_interface name="standard_digital_output_cmd_12"/>
|
||||
<command_interface name="standard_digital_output_cmd_13"/>
|
||||
<command_interface name="standard_digital_output_cmd_14"/>
|
||||
<command_interface name="standard_digital_output_cmd_15"/>
|
||||
|
||||
<command_interface name="configure_digital_output_cmd_0"/>
|
||||
<command_interface name="configure_digital_output_cmd_1"/>
|
||||
<command_interface name="configure_digital_output_cmd_2"/>
|
||||
<command_interface name="configure_digital_output_cmd_3"/>
|
||||
<command_interface name="configure_digital_output_cmd_4"/>
|
||||
<command_interface name="configure_digital_output_cmd_5"/>
|
||||
<command_interface name="configure_digital_output_cmd_6"/>
|
||||
<command_interface name="configure_digital_output_cmd_7"/>
|
||||
|
||||
<command_interface name="tool_digital_output_cmd_0"/>
|
||||
<command_interface name="tool_digital_output_cmd_1"/>
|
||||
<command_interface name="tool_digital_output_cmd_2"/>
|
||||
<command_interface name="tool_digital_output_cmd_3"/>
|
||||
|
||||
<command_interface name="standard_analog_output_type_cmd_0"/>
|
||||
<command_interface name="standard_analog_output_type_cmd_1"/>
|
||||
<command_interface name="standard_analog_output_cmd_0"/>
|
||||
<command_interface name="standard_analog_output_cmd_1"/>
|
||||
|
||||
<command_interface name="tool_voltage_cmd"/>
|
||||
|
||||
<command_interface name="io_async_success"/>
|
||||
|
||||
<state_interface name="standard_digital_output_0"/>
|
||||
<state_interface name="standard_digital_output_1"/>
|
||||
<state_interface name="standard_digital_output_2"/>
|
||||
<state_interface name="standard_digital_output_3"/>
|
||||
<state_interface name="standard_digital_output_4"/>
|
||||
<state_interface name="standard_digital_output_5"/>
|
||||
<state_interface name="standard_digital_output_6"/>
|
||||
<state_interface name="standard_digital_output_7"/>
|
||||
<state_interface name="standard_digital_output_8"/>
|
||||
<state_interface name="standard_digital_output_9"/>
|
||||
<state_interface name="standard_digital_output_10"/>
|
||||
<state_interface name="standard_digital_output_11"/>
|
||||
<state_interface name="standard_digital_output_12"/>
|
||||
<state_interface name="standard_digital_output_13"/>
|
||||
<state_interface name="standard_digital_output_14"/>
|
||||
<state_interface name="standard_digital_output_15"/>
|
||||
|
||||
<state_interface name="configure_digital_output_0"/>
|
||||
<state_interface name="configure_digital_output_1"/>
|
||||
<state_interface name="configure_digital_output_2"/>
|
||||
<state_interface name="configure_digital_output_3"/>
|
||||
<state_interface name="configure_digital_output_4"/>
|
||||
<state_interface name="configure_digital_output_5"/>
|
||||
<state_interface name="configure_digital_output_6"/>
|
||||
<state_interface name="configure_digital_output_7"/>
|
||||
|
||||
<state_interface name="tool_digital_output_0"/>
|
||||
<state_interface name="tool_digital_output_1"/>
|
||||
<state_interface name="tool_digital_output_2"/>
|
||||
<state_interface name="tool_digital_output_3"/>
|
||||
|
||||
<state_interface name="standard_digital_input_0"/>
|
||||
<state_interface name="standard_digital_input_1"/>
|
||||
<state_interface name="standard_digital_input_2"/>
|
||||
<state_interface name="standard_digital_input_3"/>
|
||||
<state_interface name="standard_digital_input_4"/>
|
||||
<state_interface name="standard_digital_input_5"/>
|
||||
<state_interface name="standard_digital_input_6"/>
|
||||
<state_interface name="standard_digital_input_7"/>
|
||||
<state_interface name="standard_digital_input_8"/>
|
||||
<state_interface name="standard_digital_input_9"/>
|
||||
<state_interface name="standard_digital_input_10"/>
|
||||
<state_interface name="standard_digital_input_11"/>
|
||||
<state_interface name="standard_digital_input_12"/>
|
||||
<state_interface name="standard_digital_input_13"/>
|
||||
<state_interface name="standard_digital_input_14"/>
|
||||
<state_interface name="standard_digital_input_15"/>
|
||||
|
||||
<state_interface name="configure_digital_input_0"/>
|
||||
<state_interface name="configure_digital_input_1"/>
|
||||
<state_interface name="configure_digital_input_2"/>
|
||||
<state_interface name="configure_digital_input_3"/>
|
||||
<state_interface name="configure_digital_input_4"/>
|
||||
<state_interface name="configure_digital_input_5"/>
|
||||
<state_interface name="configure_digital_input_6"/>
|
||||
<state_interface name="configure_digital_input_7"/>
|
||||
|
||||
<state_interface name="tool_digital_input_0"/>
|
||||
<state_interface name="tool_digital_input_1"/>
|
||||
<state_interface name="tool_digital_input_2"/>
|
||||
<state_interface name="tool_digital_input_3"/>
|
||||
|
||||
<state_interface name="standard_analog_output_type_0"/>
|
||||
<state_interface name="standard_analog_output_type_1"/>
|
||||
<state_interface name="standard_analog_output_0"/>
|
||||
<state_interface name="standard_analog_output_1"/>
|
||||
|
||||
<state_interface name="standard_analog_input_type_0"/>
|
||||
<state_interface name="standard_analog_input_type_1"/>
|
||||
<state_interface name="standard_analog_input_0"/>
|
||||
<state_interface name="standard_analog_input_1"/>
|
||||
|
||||
<state_interface name="tool_mode"/>
|
||||
<state_interface name="tool_output_voltage"/>
|
||||
<state_interface name="tool_output_current"/>
|
||||
<state_interface name="tool_temperature"/>
|
||||
|
||||
<state_interface name="tool_analog_input"/>
|
||||
<state_interface name="tool_analog_output"/>
|
||||
|
||||
<state_interface name="tool_analog_input_type"/>
|
||||
<state_interface name="tool_analog_output_type"/>
|
||||
|
||||
<state_interface name="robot_mode"/>
|
||||
<state_interface name="robot_status_bit_0"/>
|
||||
<state_interface name="robot_status_bit_1"/>
|
||||
<state_interface name="robot_status_bit_2"/>
|
||||
<state_interface name="robot_status_bit_3"/>
|
||||
|
||||
<state_interface name="safety_mode"/>
|
||||
<state_interface name="safety_status_bit_0"/>
|
||||
<state_interface name="safety_status_bit_1"/>
|
||||
<state_interface name="safety_status_bit_2"/>
|
||||
<state_interface name="safety_status_bit_3"/>
|
||||
<state_interface name="safety_status_bit_4"/>
|
||||
<state_interface name="safety_status_bit_5"/>
|
||||
<state_interface name="safety_status_bit_6"/>
|
||||
<state_interface name="safety_status_bit_7"/>
|
||||
<state_interface name="safety_status_bit_8"/>
|
||||
<state_interface name="safety_status_bit_9"/>
|
||||
<state_interface name="safety_status_bit_10"/>
|
||||
|
||||
<state_interface name="task_running"/>
|
||||
</gpio>
|
||||
|
||||
<gpio name="${tf_prefix}payload">
|
||||
<command_interface name="mass"/>
|
||||
<command_interface name="cog.x"/>
|
||||
<command_interface name="cog.y"/>
|
||||
<command_interface name="cog.z"/>
|
||||
<command_interface name="payload_async_success"/>
|
||||
</gpio>
|
||||
|
||||
<gpio name="${tf_prefix}resend_external_script">
|
||||
<command_interface name="resend_external_script_cmd"/>
|
||||
<command_interface name="resend_external_script_async_success"/>
|
||||
</gpio>
|
||||
|
||||
<gpio name="${tf_prefix}hand_back_control">
|
||||
<command_interface name="hand_back_control_cmd"/>
|
||||
<command_interface name="hand_back_control_async_success"/>
|
||||
</gpio>
|
||||
|
||||
<gpio name="${tf_prefix}zero_ftsensor">
|
||||
<command_interface name="zero_ftsensor_cmd"/>
|
||||
<command_interface name="zero_ftsensor_async_success"/>
|
||||
</gpio>
|
||||
|
||||
<gpio name="${tf_prefix}system_interface">
|
||||
<state_interface name="initialized"/>
|
||||
</gpio>
|
||||
|
||||
</xacro:unless>
|
||||
|
||||
</ros2_control>
|
||||
|
||||
</xacro:macro>
|
||||
|
||||
</robot>
|
||||
118
unilabos/device_mesh/devices/elite_robot/urdf/cs.urdf.xacro
Normal file
118
unilabos/device_mesh/devices/elite_robot/urdf/cs.urdf.xacro
Normal file
@@ -0,0 +1,118 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="$(arg name)">
|
||||
<!-- robot name parameter -->
|
||||
<xacro:arg name="name" default="cs"/>
|
||||
<!-- import main macro -->
|
||||
<xacro:include filename="$(find eli_cs_robot_description)/urdf/cs_macro.xacro"/>
|
||||
|
||||
<!-- possible 'cs_type' values: cs63, cs66, cs612, cs616, cs620, cs625 -->
|
||||
<!-- the default value should raise an error in case this was called without defining the type -->
|
||||
<xacro:arg name="cs_type" default="cs63"/>
|
||||
|
||||
<!-- parameters -->
|
||||
<xacro:arg name="tf_prefix" default="" />
|
||||
<xacro:arg name="joint_limit_params" default="$(find eli_cs_robot_description)/config/$(arg cs_type)/joint_limits.yaml"/>
|
||||
<xacro:arg name="kinematics_params" default="$(find eli_cs_robot_description)/config/$(arg cs_type)/default_kinematics.yaml"/>
|
||||
<xacro:arg name="physical_params" default="$(find eli_cs_robot_description)/config/$(arg cs_type)/physical_parameters.yaml"/>
|
||||
<xacro:arg name="visual_params" default="$(find eli_cs_robot_description)/config/$(arg cs_type)/visual_parameters.yaml"/>
|
||||
<xacro:arg name="transmission_hw_interface" default=""/>
|
||||
<xacro:arg name="safety_limits" default="false"/>
|
||||
<xacro:arg name="safety_pos_margin" default="0.15"/>
|
||||
<xacro:arg name="safety_k_position" default="20"/>
|
||||
<!-- ros2_control related parameters -->
|
||||
<xacro:arg name="headless_mode" default="false" />
|
||||
<xacro:arg name="robot_ip" default="0.0.0.0" />
|
||||
<xacro:arg name="script_filename" default=""/>
|
||||
<xacro:arg name="output_recipe_filename" default=""/>
|
||||
<xacro:arg name="input_recipe_filename" default=""/>
|
||||
<xacro:arg name="local_ip" default="0.0.0.0"/>
|
||||
<xacro:arg name="script_command_port" default="50004"/>
|
||||
<xacro:arg name="reverse_port" default="50001"/>
|
||||
<xacro:arg name="script_sender_port" default="50002"/>
|
||||
<xacro:arg name="trajectory_port" default="50003"/>
|
||||
<!-- tool communication related parameters-->
|
||||
<xacro:arg name="use_tool_communication" default="false" />
|
||||
<xacro:arg name="tool_voltage" default="0" />
|
||||
<xacro:arg name="tool_parity" default="0" />
|
||||
<xacro:arg name="tool_baud_rate" default="115200" />
|
||||
<xacro:arg name="tool_stop_bits" default="1" />
|
||||
<xacro:arg name="tool_tcp_port" default="54321" />
|
||||
|
||||
<!-- Simulation parameters -->
|
||||
<xacro:arg name="use_fake_hardware" default="false" />
|
||||
<xacro:arg name="fake_sensor_commands" default="false" />
|
||||
<xacro:arg name="sim_gazebo" default="false" />
|
||||
<xacro:arg name="sim_ignition" default="false" />
|
||||
<xacro:arg name="simulation_controllers" default="" />
|
||||
|
||||
<!-- initial position for simulations (Fake Hardware, Gazebo, Ignition) -->
|
||||
<xacro:arg name="initial_positions_file" default="$(find eli_cs_robot_description)/config/initial_positions.yaml"/>
|
||||
|
||||
<!-- convert to property to use substitution in function -->
|
||||
<xacro:property name="initial_positions_file" default="$(arg initial_positions_file)"/>
|
||||
|
||||
<!-- create link fixed to the "world" -->
|
||||
<link name="world" />
|
||||
|
||||
<!-- arm -->
|
||||
<xacro:cs_robot
|
||||
name="$(arg name)"
|
||||
tf_prefix="$(arg tf_prefix)"
|
||||
parent="world"
|
||||
joint_limits_parameters_file="$(arg joint_limit_params)"
|
||||
kinematics_parameters_file="$(arg kinematics_params)"
|
||||
physical_parameters_file="$(arg physical_params)"
|
||||
visual_parameters_file="$(arg visual_params)"
|
||||
transmission_hw_interface="$(arg transmission_hw_interface)"
|
||||
safety_limits="$(arg safety_limits)"
|
||||
safety_pos_margin="$(arg safety_pos_margin)"
|
||||
safety_k_position="$(arg safety_k_position)"
|
||||
use_fake_hardware="$(arg use_fake_hardware)"
|
||||
fake_sensor_commands="$(arg fake_sensor_commands)"
|
||||
sim_gazebo="$(arg sim_gazebo)"
|
||||
sim_ignition="$(arg sim_ignition)"
|
||||
headless_mode="$(arg headless_mode)"
|
||||
initial_positions="${xacro.load_yaml(initial_positions_file)}"
|
||||
use_tool_communication="$(arg use_tool_communication)"
|
||||
tool_voltage="$(arg tool_voltage)"
|
||||
tool_parity="$(arg tool_parity)"
|
||||
tool_baud_rate="$(arg tool_baud_rate)"
|
||||
tool_stop_bits="$(arg tool_stop_bits)"
|
||||
tool_tcp_port="$(arg tool_tcp_port)"
|
||||
robot_ip="$(arg robot_ip)"
|
||||
script_filename="$(arg script_filename)"
|
||||
output_recipe_filename="$(arg output_recipe_filename)"
|
||||
input_recipe_filename="$(arg input_recipe_filename)"
|
||||
local_ip="$(arg local_ip)"
|
||||
script_command_port="$(arg script_command_port)"
|
||||
reverse_port="$(arg reverse_port)"
|
||||
script_sender_port="$(arg script_sender_port)"
|
||||
trajectory_port="$(arg trajectory_port)"
|
||||
>
|
||||
<origin xyz="0 0 0" rpy="0 0 0" /> <!-- position robot in the world -->
|
||||
</xacro:cs_robot>
|
||||
|
||||
<xacro:if value="$(arg sim_gazebo)">
|
||||
<!-- Gazebo plugins -->
|
||||
<gazebo reference="world">
|
||||
</gazebo>
|
||||
<gazebo>
|
||||
<plugin filename="libgazebo_ros2_control.so" name="gazebo_ros2_control">
|
||||
<parameters>$(arg simulation_controllers)</parameters>
|
||||
</plugin>
|
||||
</gazebo>
|
||||
</xacro:if>
|
||||
|
||||
<xacro:if value="$(arg sim_ignition)">
|
||||
<!-- Gazebo plugins -->
|
||||
<gazebo reference="world">
|
||||
</gazebo>
|
||||
<gazebo>
|
||||
<plugin filename="libign_ros2_control-system.so" name="ign_ros2_control::IgnitionROS2ControlPlugin">
|
||||
<parameters>$(arg simulation_controllers)</parameters>
|
||||
<controller_manager_node_name>$(arg tf_prefix)controller_manager</controller_manager_node_name>
|
||||
</plugin>
|
||||
</gazebo>
|
||||
</xacro:if>
|
||||
|
||||
</robot>
|
||||
339
unilabos/device_mesh/devices/elite_robot/urdf/cs_macro.xacro
Normal file
339
unilabos/device_mesh/devices/elite_robot/urdf/cs_macro.xacro
Normal file
@@ -0,0 +1,339 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot xmlns:xacro="http://wiki.ros.org/xacro">
|
||||
<!--
|
||||
Base ELITE CS robot series xacro macro.
|
||||
|
||||
NOTE this is NOT a URDF. It cannot directly be loaded by consumers
|
||||
expecting a flattened '.urdf' file. See the top-level '.xacro' for that
|
||||
(but note that .xacro must still be processed by the xacro command).
|
||||
|
||||
This file models the base kinematic chain of a CS robot, which then gets
|
||||
parameterised by various configuration files to convert it into a CS63,
|
||||
CS66, CS612, CS616, CS620 or CS625.
|
||||
|
||||
NOTE the default kinematic parameters (i.e., link lengths, frame locations,
|
||||
offsets, etc) do not correspond to any particular robot. They are defaults
|
||||
only.
|
||||
|
||||
For accurate (and robot-specific) transforms, the 'kinematics_parameters_file'
|
||||
parameter MUST point to a .yaml file containing the appropriate values for
|
||||
the targeted robot.
|
||||
|
||||
- Chen Shichao
|
||||
-->
|
||||
|
||||
<xacro:include filename="${mesh_path}/devices/elite_robot/urdf/inc/cs_transmissions.xacro" />
|
||||
<xacro:include filename="${mesh_path}/devices/elite_robot/urdf/inc/cs_common.xacro" />
|
||||
|
||||
<xacro:macro name="cs_robot" params="
|
||||
name
|
||||
tf_prefix
|
||||
parent
|
||||
*origin
|
||||
joint_limits_parameters_file
|
||||
kinematics_parameters_file
|
||||
physical_parameters_file
|
||||
visual_parameters_file
|
||||
generate_ros2_control_tag:=true
|
||||
transmission_hw_interface:=hardware_interface/PositionJointInterface
|
||||
safety_limits:=false
|
||||
safety_pos_margin:=0.15
|
||||
safety_k_position:=20
|
||||
use_fake_hardware:=false
|
||||
fake_sensor_commands:=false
|
||||
sim_gazebo:=false
|
||||
sim_ignition:=false
|
||||
headless_mode:=false
|
||||
initial_positions:=${dict(shoulder_pan_joint=0.0,shoulder_lift_joint=-1.57,elbow_joint=0.0,wrist_1_joint=-1.57,wrist_2_joint=0.0,wrist_3_joint=0.0)}
|
||||
use_tool_communication:=false
|
||||
tool_voltage:=0
|
||||
tool_parity:=0
|
||||
tool_baud_rate:=115200
|
||||
tool_stop_bits:=1
|
||||
tool_tcp_port:=54321
|
||||
robot_ip:=0.0.0.0
|
||||
script_filename:=to_be_filled_by_cs_robot_driver
|
||||
output_recipe_filename:=to_be_filled_by_cs_robot_driver
|
||||
input_recipe_filename:=to_be_filled_by_cs_robot_driver
|
||||
reverse_port:=50001
|
||||
script_sender_port:=50002
|
||||
local_ip:=0.0.0.0
|
||||
script_command_port:=50004
|
||||
trajectory_port:=50003
|
||||
mesh_path"
|
||||
|
||||
>
|
||||
|
||||
<!-- Load configuration data from the provided .yaml files -->
|
||||
<xacro:read_model_data
|
||||
joint_limits_parameters_file="${joint_limits_parameters_file}"
|
||||
kinematics_parameters_file="${kinematics_parameters_file}"
|
||||
physical_parameters_file="${physical_parameters_file}"
|
||||
visual_parameters_file="${visual_parameters_file}"
|
||||
force_abs_paths="true"
|
||||
mesh_path="${mesh_path}"
|
||||
/>
|
||||
|
||||
|
||||
<xacro:if value="${generate_ros2_control_tag}">
|
||||
<!-- ros2 control include -->
|
||||
<xacro:include filename="${mesh_path}/devices/elite_robot/urdf/cs.ros2_control.xacro" />
|
||||
<!-- ros2 control instance -->
|
||||
<xacro:cs_ros2_control
|
||||
name="${name}"
|
||||
use_fake_hardware="${use_fake_hardware}"
|
||||
initial_positions="${initial_positions}"
|
||||
fake_sensor_commands="${fake_sensor_commands}"
|
||||
headless_mode="${headless_mode}"
|
||||
sim_gazebo="${sim_gazebo}"
|
||||
sim_ignition="${sim_ignition}"
|
||||
script_filename="${script_filename}"
|
||||
output_recipe_filename="${output_recipe_filename}"
|
||||
input_recipe_filename="${input_recipe_filename}"
|
||||
tf_prefix="${tf_prefix}"
|
||||
robot_ip="${robot_ip}"
|
||||
use_tool_communication="${use_tool_communication}"
|
||||
tool_voltage="${tool_voltage}"
|
||||
tool_parity="${tool_parity}"
|
||||
tool_baud_rate="${tool_baud_rate}"
|
||||
tool_stop_bits="${tool_stop_bits}"
|
||||
tool_tcp_port="${tool_tcp_port}"
|
||||
reverse_port="${reverse_port}"
|
||||
script_sender_port="${script_sender_port}"
|
||||
local_ip="${local_ip}"
|
||||
script_command_port="${script_command_port}"
|
||||
trajectory_port="${trajectory_port}"
|
||||
/>
|
||||
</xacro:if>
|
||||
|
||||
<!-- Add URDF transmission elements (for ros_control) -->
|
||||
<!--<xacro:cs_arm_transmission prefix="${prefix}" hw_interface="${transmission_hw_interface}" />-->
|
||||
<!-- Placeholder for ros2_control transmission which don't yet exist -->
|
||||
|
||||
<!-- links - main serial chain -->
|
||||
<link name="${tf_prefix}base_link"/>
|
||||
<link name="${tf_prefix}base_link_inertia">
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="base" type="visual"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="base" type="collision"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<xacro:build_inertial mass="${base_mass}" cog="${prop_base_cog}" inertia="${prop_base_inertia}"/>
|
||||
</link>
|
||||
<link name="${tf_prefix}shoulder_link">
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="shoulder" type="visual"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="shoulder" type="collision"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<xacro:build_inertial mass="${shoulder_mass}" cog="${prop_shoulder_cog}" inertia="${prop_shoulder_inertia}"/>
|
||||
</link>
|
||||
<link name="${tf_prefix}upperarm_link">
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="upperarm" type="visual"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="upperarm" type="collision"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<xacro:build_inertial mass="${upperarm_mass}" cog="${prop_upperarm_cog}" inertia="${prop_upperarm_inertia}"/>
|
||||
</link>
|
||||
<link name="${tf_prefix}forearm_link">
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="forearm" type="visual"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="forearm" type="collision"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<xacro:build_inertial mass="${forearm_mass}" cog="${prop_forearm_cog}" inertia="${prop_forearm_inertia}"/>
|
||||
</link>
|
||||
<link name="${tf_prefix}wrist_1_link">
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="wrist_1" type="visual"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="wrist_1" type="collision"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<xacro:build_inertial mass="${wrist_1_mass}" cog="${prop_wrist_1_cog}" inertia="${prop_wrist_1_inertia}"/>
|
||||
</link>
|
||||
<link name="${tf_prefix}wrist_2_link">
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="wrist_2" type="visual"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="wrist_2" type="collision"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<xacro:build_inertial mass="${wrist_2_mass}" cog="${prop_wrist_2_cog}" inertia="${prop_wrist_2_inertia}"/>
|
||||
</link>
|
||||
<link name="${tf_prefix}wrist_3_link">
|
||||
<visual>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="wrist_3" type="visual"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<geometry>
|
||||
<xacro:get_mesh name="wrist_3" type="collision"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<xacro:build_inertial mass="${wrist_3_mass}" cog="${prop_wrist_3_cog}" inertia="${prop_wrist_3_inertia}"/>
|
||||
</link>
|
||||
|
||||
<!-- base_joint fixes base_link to the environment -->
|
||||
<joint name="${tf_prefix}base_joint" type="fixed">
|
||||
<xacro:insert_block name="origin" />
|
||||
<parent link="${parent}" />
|
||||
<child link="${tf_prefix}base_link" />
|
||||
</joint>
|
||||
|
||||
<!-- joints - main serial chain -->
|
||||
<joint name="${tf_prefix}base_link-base_link_inertia" type="fixed">
|
||||
<parent link="${tf_prefix}base_link" />
|
||||
<child link="${tf_prefix}base_link_inertia" />
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
</joint>
|
||||
<joint name="${tf_prefix}shoulder_pan_joint" type="revolute">
|
||||
<parent link="${tf_prefix}base_link_inertia" />
|
||||
<child link="${tf_prefix}shoulder_link" />
|
||||
<origin xyz="${shoulder_x} ${shoulder_y} ${shoulder_z}" rpy="${shoulder_roll} ${shoulder_pitch} ${shoulder_yaw}" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="${shoulder_pan_lower_limit}" upper="${shoulder_pan_upper_limit}"
|
||||
effort="${shoulder_pan_effort_limit}" velocity="${shoulder_pan_velocity_limit}"/>
|
||||
<xacro:if value="${safety_limits}">
|
||||
<safety_controller soft_lower_limit="${shoulder_pan_lower_limit + safety_pos_margin}" soft_upper_limit="${shoulder_pan_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/>
|
||||
</xacro:if>
|
||||
<dynamics damping="0" friction="0"/>
|
||||
</joint>
|
||||
<joint name="${tf_prefix}shoulder_lift_joint" type="revolute">
|
||||
<parent link="${tf_prefix}shoulder_link" />
|
||||
<child link="${tf_prefix}upperarm_link" />
|
||||
<origin xyz="${upperarm_x} ${upperarm_y} ${upperarm_z}" rpy="${upperarm_roll} ${upperarm_pitch} ${upperarm_yaw}" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="${shoulder_lift_lower_limit}" upper="${shoulder_lift_upper_limit}"
|
||||
effort="${shoulder_lift_effort_limit}" velocity="${shoulder_lift_velocity_limit}"/>
|
||||
<xacro:if value="${safety_limits}">
|
||||
<safety_controller soft_lower_limit="${shoulder_lift_lower_limit + safety_pos_margin}" soft_upper_limit="${shoulder_lift_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/>
|
||||
</xacro:if>
|
||||
<dynamics damping="0" friction="0"/>
|
||||
</joint>
|
||||
<joint name="${tf_prefix}elbow_joint" type="revolute">
|
||||
<parent link="${tf_prefix}upperarm_link" />
|
||||
<child link="${tf_prefix}forearm_link" />
|
||||
<origin xyz="${forearm_x} ${forearm_y} ${forearm_z}" rpy="${forearm_roll} ${forearm_pitch} ${forearm_yaw}" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="${elbow_joint_lower_limit}" upper="${elbow_joint_upper_limit}"
|
||||
effort="${elbow_joint_effort_limit}" velocity="${elbow_joint_velocity_limit}"/>
|
||||
<xacro:if value="${safety_limits}">
|
||||
<safety_controller soft_lower_limit="${elbow_joint_lower_limit + safety_pos_margin}" soft_upper_limit="${elbow_joint_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/>
|
||||
</xacro:if>
|
||||
<dynamics damping="0" friction="0"/>
|
||||
</joint>
|
||||
<joint name="${tf_prefix}wrist_1_joint" type="revolute">
|
||||
<parent link="${tf_prefix}forearm_link" />
|
||||
<child link="${tf_prefix}wrist_1_link" />
|
||||
<origin xyz="${wrist_1_x} ${wrist_1_y} ${wrist_1_z}" rpy="${wrist_1_roll} ${wrist_1_pitch} ${wrist_1_yaw}" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="${wrist_1_lower_limit}" upper="${wrist_1_upper_limit}"
|
||||
effort="${wrist_1_effort_limit}" velocity="${wrist_1_velocity_limit}"/>
|
||||
<xacro:if value="${safety_limits}">
|
||||
<safety_controller soft_lower_limit="${wrist_1_lower_limit + safety_pos_margin}" soft_upper_limit="${wrist_1_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/>
|
||||
</xacro:if>
|
||||
<dynamics damping="0" friction="0"/>
|
||||
</joint>
|
||||
<joint name="${tf_prefix}wrist_2_joint" type="revolute">
|
||||
<parent link="${tf_prefix}wrist_1_link" />
|
||||
<child link="${tf_prefix}wrist_2_link" />
|
||||
<origin xyz="${wrist_2_x} ${wrist_2_y} ${wrist_2_z}" rpy="${wrist_2_roll} ${wrist_2_pitch} ${wrist_2_yaw}" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="${wrist_2_lower_limit}" upper="${wrist_2_upper_limit}"
|
||||
effort="${wrist_2_effort_limit}" velocity="${wrist_2_velocity_limit}"/>
|
||||
<xacro:if value="${safety_limits}">
|
||||
<safety_controller soft_lower_limit="${wrist_2_lower_limit + safety_pos_margin}" soft_upper_limit="${wrist_2_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/>
|
||||
</xacro:if>
|
||||
<dynamics damping="0" friction="0"/>
|
||||
</joint>
|
||||
<joint name="${tf_prefix}wrist_3_joint" type="revolute">
|
||||
<parent link="${tf_prefix}wrist_2_link" />
|
||||
<child link="${tf_prefix}wrist_3_link" />
|
||||
<origin xyz="${wrist_3_x} ${wrist_3_y} ${wrist_3_z}" rpy="${wrist_3_roll} ${wrist_3_pitch} ${wrist_3_yaw}" />
|
||||
<axis xyz="0 0 1" />
|
||||
<limit lower="${wrist_3_lower_limit}" upper="${wrist_3_upper_limit}"
|
||||
effort="${wrist_3_effort_limit}" velocity="${wrist_3_velocity_limit}"/>
|
||||
<xacro:if value="${safety_limits}">
|
||||
<safety_controller soft_lower_limit="${wrist_3_lower_limit + safety_pos_margin}" soft_upper_limit="${wrist_3_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/>
|
||||
</xacro:if>
|
||||
<dynamics damping="0" friction="0"/>
|
||||
</joint>
|
||||
|
||||
<link name="${tf_prefix}ft_frame"/>
|
||||
<joint name="${tf_prefix}wrist_3_link-ft_frame" type="fixed">
|
||||
<parent link="${tf_prefix}wrist_3_link"/>
|
||||
<child link="${tf_prefix}ft_frame"/>
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
</joint>
|
||||
|
||||
<!-- ROS-Industrial 'base' frame - base_link to CS 'Base' Coordinates transform -->
|
||||
<link name="${tf_prefix}base"/>
|
||||
<joint name="${tf_prefix}base_link-base_fixed_joint" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<parent link="${tf_prefix}base_link"/>
|
||||
<child link="${tf_prefix}base"/>
|
||||
</joint>
|
||||
|
||||
<!-- ROS-Industrial 'flange' frame - attachment point for EEF models -->
|
||||
<link name="${tf_prefix}flange" />
|
||||
<joint name="${tf_prefix}wrist_3-flange" type="fixed">
|
||||
<parent link="${tf_prefix}wrist_3_link" />
|
||||
<child link="${tf_prefix}flange" />
|
||||
<origin xyz="0 0 0" rpy="0 0 0" />
|
||||
</joint>
|
||||
|
||||
<!-- ROS-Industrial 'tool0' frame - all-zeros tool frame -->
|
||||
<link name="${tf_prefix}tool0"/>
|
||||
<joint name="${tf_prefix}flange-tool0" type="fixed">
|
||||
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||
<parent link="${tf_prefix}flange"/>
|
||||
<child link="${tf_prefix}tool0"/>
|
||||
</joint>
|
||||
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
@@ -0,0 +1,174 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot xmlns:xacro="http://wiki.ros.org/xacro">
|
||||
<!--
|
||||
NOTE the macros defined in this file are NOT part of the public API of this
|
||||
package. Users CANNOT rely on this file being available, or stored in
|
||||
this location. Nor can they rely on the existence of the two macros.
|
||||
The macros store the defined properties in the scope of the caller.
|
||||
However, users MUST NOT rely on these properties, their contents or their
|
||||
names.
|
||||
|
||||
Author: Chen Shichao
|
||||
-->
|
||||
<xacro:macro name="build_inertial" params="mass cog inertia">
|
||||
<inertial>
|
||||
<mass value="${mass}" />
|
||||
<origin
|
||||
xyz="${cog['x']} ${cog['y']} ${cog['z']}"
|
||||
rpy="0 0 0" />
|
||||
<inertia
|
||||
ixx="${inertia['ixx']}"
|
||||
ixy="${inertia['ixy']}"
|
||||
ixz="${inertia['ixz']}"
|
||||
iyy="${inertia['iyy']}"
|
||||
iyz="${inertia['iyz']}"
|
||||
izz="${inertia['izz']}" />
|
||||
</inertial>
|
||||
</xacro:macro>
|
||||
|
||||
<xacro:macro name="get_visual_params" params="name:=^ type:=^" >
|
||||
<xacro:property name="visual_params" value="${sec_mesh_files[name][type]}" scope="parent"/>
|
||||
</xacro:macro>
|
||||
|
||||
<!-- Simplification of getting meshes. Available types can be seen in the visual_parameters.yaml (At the time of writing: visual, collision) -->
|
||||
<xacro:macro name="get_mesh_path" params="name:=^ type:=^" >
|
||||
<xacro:get_visual_params />
|
||||
<xacro:if value="${force_abs_paths}">
|
||||
<xacro:property name="mesh" value="file://${mesh_path}/devices/elite_robot/${visual_params['mesh']['path']}" scope="parent"/>
|
||||
</xacro:if>
|
||||
<xacro:unless value="${force_abs_paths}">
|
||||
<xacro:property name="mesh" value="package://${visual_params['mesh']['package']}/${visual_params['mesh']['path']}" scope="parent"/>
|
||||
</xacro:unless>
|
||||
</xacro:macro>
|
||||
|
||||
<xacro:macro name="get_mesh" params="name type" >
|
||||
<xacro:get_mesh_path/>
|
||||
<mesh filename="${mesh}"/>
|
||||
</xacro:macro>
|
||||
|
||||
<xacro:macro name="read_model_data" params="joint_limits_parameters_file kinematics_parameters_file physical_parameters_file visual_parameters_file force_abs_paths mesh_path">
|
||||
|
||||
<xacro:property name="force_abs_paths" value="${force_abs_paths}" scope="parent"/>
|
||||
<!-- Read .yaml files from disk, load content into properties -->
|
||||
<xacro:property name="config_joint_limit_parameters" value="${xacro.load_yaml(joint_limits_parameters_file)}"/>
|
||||
<xacro:property name="config_kinematics_parameters" value="${xacro.load_yaml(kinematics_parameters_file)}"/>
|
||||
<xacro:property name="config_physical_parameters" value="${xacro.load_yaml(physical_parameters_file)}"/>
|
||||
<xacro:property name="config_visual_parameters" value="${xacro.load_yaml(visual_parameters_file)}"/>
|
||||
|
||||
<xacro:property name="mesh_path" value="${mesh_path}" scope="parent"/>
|
||||
|
||||
<!-- Extract subsections from yaml dictionaries -->
|
||||
<xacro:property name="sec_limits" value="${config_joint_limit_parameters['joint_limits']}"/>
|
||||
<xacro:property name="sec_dh_parameters" value="${config_physical_parameters['dh_parameters']}"/>
|
||||
<xacro:property name="sec_offsets" value="${config_physical_parameters['offsets']}"/>
|
||||
<xacro:property name="sec_inertia_parameters" value="${config_physical_parameters['inertia_parameters']}" />
|
||||
<xacro:property name="sec_mesh_files" value="${config_visual_parameters['mesh_files']}" scope="parent"/>
|
||||
<xacro:property name="sec_kinematics" value="${config_kinematics_parameters['kinematics']}" />
|
||||
|
||||
<!-- JOINTS LIMIT PARAMETERS -->
|
||||
<xacro:property name="shoulder_pan_lower_limit" value="${sec_limits['shoulder_pan_joint']['min_position']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_pan_upper_limit" value="${sec_limits['shoulder_pan_joint']['max_position']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_pan_velocity_limit" value="${sec_limits['shoulder_pan_joint']['max_velocity']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_pan_effort_limit" value="${sec_limits['shoulder_pan_joint']['max_effort']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_lift_lower_limit" value="${sec_limits['shoulder_lift_joint']['min_position']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_lift_upper_limit" value="${sec_limits['shoulder_lift_joint']['max_position']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_lift_velocity_limit" value="${sec_limits['shoulder_lift_joint']['max_velocity']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_lift_effort_limit" value="${sec_limits['shoulder_lift_joint']['max_effort']}" scope="parent"/>
|
||||
<xacro:property name="elbow_joint_lower_limit" value="${sec_limits['elbow_joint']['min_position']}" scope="parent"/>
|
||||
<xacro:property name="elbow_joint_upper_limit" value="${sec_limits['elbow_joint']['max_position']}" scope="parent"/>
|
||||
<xacro:property name="elbow_joint_velocity_limit" value="${sec_limits['elbow_joint']['max_velocity']}" scope="parent"/>
|
||||
<xacro:property name="elbow_joint_effort_limit" value="${sec_limits['elbow_joint']['max_effort']}" scope="parent"/>
|
||||
<xacro:property name="wrist_1_lower_limit" value="${sec_limits['wrist_1_joint']['min_position']}" scope="parent"/>
|
||||
<xacro:property name="wrist_1_upper_limit" value="${sec_limits['wrist_1_joint']['max_position']}" scope="parent"/>
|
||||
<xacro:property name="wrist_1_velocity_limit" value="${sec_limits['wrist_1_joint']['max_velocity']}" scope="parent"/>
|
||||
<xacro:property name="wrist_1_effort_limit" value="${sec_limits['wrist_1_joint']['max_effort']}" scope="parent"/>
|
||||
<xacro:property name="wrist_2_lower_limit" value="${sec_limits['wrist_2_joint']['min_position']}" scope="parent"/>
|
||||
<xacro:property name="wrist_2_upper_limit" value="${sec_limits['wrist_2_joint']['max_position']}" scope="parent"/>
|
||||
<xacro:property name="wrist_2_velocity_limit" value="${sec_limits['wrist_2_joint']['max_velocity']}" scope="parent"/>
|
||||
<xacro:property name="wrist_2_effort_limit" value="${sec_limits['wrist_2_joint']['max_effort']}" scope="parent"/>
|
||||
<xacro:property name="wrist_3_lower_limit" value="${sec_limits['wrist_3_joint']['min_position']}" scope="parent"/>
|
||||
<xacro:property name="wrist_3_upper_limit" value="${sec_limits['wrist_3_joint']['max_position']}" scope="parent"/>
|
||||
<xacro:property name="wrist_3_velocity_limit" value="${sec_limits['wrist_3_joint']['max_velocity']}" scope="parent"/>
|
||||
<xacro:property name="wrist_3_effort_limit" value="${sec_limits['wrist_3_joint']['max_effort']}" scope="parent"/>
|
||||
|
||||
<!-- DH PARAMETERS -->
|
||||
<xacro:property name="d1" value="${sec_dh_parameters['d1']}" scope="parent"/>
|
||||
<xacro:property name="a2" value="${sec_dh_parameters['a2']}" scope="parent"/>
|
||||
<xacro:property name="a3" value="${sec_dh_parameters['a3']}" scope="parent"/>
|
||||
<xacro:property name="d4" value="${sec_dh_parameters['d4']}" scope="parent"/>
|
||||
<xacro:property name="d5" value="${sec_dh_parameters['d5']}" scope="parent"/>
|
||||
<xacro:property name="d6" value="${sec_dh_parameters['d6']}" scope="parent"/>
|
||||
|
||||
<!-- kinematics -->
|
||||
<xacro:property name="shoulder_x" value="${sec_kinematics['shoulder']['x']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_y" value="${sec_kinematics['shoulder']['y']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_z" value="${sec_kinematics['shoulder']['z']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_roll" value="${sec_kinematics['shoulder']['roll']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_pitch" value="${sec_kinematics['shoulder']['pitch']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_yaw" value="${sec_kinematics['shoulder']['yaw']}" scope="parent"/>
|
||||
|
||||
<xacro:property name="upperarm_x" value="${sec_kinematics['upperarm']['x']}" scope="parent"/>
|
||||
<xacro:property name="upperarm_y" value="${sec_kinematics['upperarm']['y']}" scope="parent"/>
|
||||
<xacro:property name="upperarm_z" value="${sec_kinematics['upperarm']['z']}" scope="parent"/>
|
||||
<xacro:property name="upperarm_roll" value="${sec_kinematics['upperarm']['roll']}" scope="parent"/>
|
||||
<xacro:property name="upperarm_pitch" value="${sec_kinematics['upperarm']['pitch']}" scope="parent"/>
|
||||
<xacro:property name="upperarm_yaw" value="${sec_kinematics['upperarm']['yaw']}" scope="parent"/>
|
||||
|
||||
<xacro:property name="forearm_x" value="${sec_kinematics['forearm']['x']}" scope="parent"/>
|
||||
<xacro:property name="forearm_y" value="${sec_kinematics['forearm']['y']}" scope="parent"/>
|
||||
<xacro:property name="forearm_z" value="${sec_kinematics['forearm']['z']}" scope="parent"/>
|
||||
<xacro:property name="forearm_roll" value="${sec_kinematics['forearm']['roll']}" scope="parent"/>
|
||||
<xacro:property name="forearm_pitch" value="${sec_kinematics['forearm']['pitch']}" scope="parent"/>
|
||||
<xacro:property name="forearm_yaw" value="${sec_kinematics['forearm']['yaw']}" scope="parent"/>
|
||||
|
||||
<xacro:property name="wrist_1_x" value="${sec_kinematics['wrist_1']['x']}" scope="parent"/>
|
||||
<xacro:property name="wrist_1_y" value="${sec_kinematics['wrist_1']['y']}" scope="parent"/>
|
||||
<xacro:property name="wrist_1_z" value="${sec_kinematics['wrist_1']['z']}" scope="parent"/>
|
||||
<xacro:property name="wrist_1_roll" value="${sec_kinematics['wrist_1']['roll']}" scope="parent"/>
|
||||
<xacro:property name="wrist_1_pitch" value="${sec_kinematics['wrist_1']['pitch']}" scope="parent"/>
|
||||
<xacro:property name="wrist_1_yaw" value="${sec_kinematics['wrist_1']['yaw']}" scope="parent"/>
|
||||
|
||||
<xacro:property name="wrist_2_x" value="${sec_kinematics['wrist_2']['x']}" scope="parent"/>
|
||||
<xacro:property name="wrist_2_y" value="${sec_kinematics['wrist_2']['y']}" scope="parent"/>
|
||||
<xacro:property name="wrist_2_z" value="${sec_kinematics['wrist_2']['z']}" scope="parent"/>
|
||||
<xacro:property name="wrist_2_roll" value="${sec_kinematics['wrist_2']['roll']}" scope="parent"/>
|
||||
<xacro:property name="wrist_2_pitch" value="${sec_kinematics['wrist_2']['pitch']}" scope="parent"/>
|
||||
<xacro:property name="wrist_2_yaw" value="${sec_kinematics['wrist_2']['yaw']}" scope="parent"/>
|
||||
|
||||
<xacro:property name="wrist_3_x" value="${sec_kinematics['wrist_3']['x']}" scope="parent"/>
|
||||
<xacro:property name="wrist_3_y" value="${sec_kinematics['wrist_3']['y']}" scope="parent"/>
|
||||
<xacro:property name="wrist_3_z" value="${sec_kinematics['wrist_3']['z']}" scope="parent"/>
|
||||
<xacro:property name="wrist_3_roll" value="${sec_kinematics['wrist_3']['roll']}" scope="parent"/>
|
||||
<xacro:property name="wrist_3_pitch" value="${sec_kinematics['wrist_3']['pitch']}" scope="parent"/>
|
||||
<xacro:property name="wrist_3_yaw" value="${sec_kinematics['wrist_3']['yaw']}" scope="parent"/>
|
||||
|
||||
<!-- INERTIA PARAMETERS -->
|
||||
<!-- mass -->
|
||||
<xacro:property name="base_mass" value="${sec_inertia_parameters['base_mass']}" scope="parent"/>
|
||||
<xacro:property name="shoulder_mass" value="${sec_inertia_parameters['shoulder_mass']}" scope="parent"/>
|
||||
<xacro:property name="upperarm_mass" value="${sec_inertia_parameters['upperarm_mass']}" scope="parent"/>
|
||||
<xacro:property name="forearm_mass" value="${sec_inertia_parameters['forearm_mass']}" scope="parent"/>
|
||||
<xacro:property name="wrist_1_mass" value="${sec_inertia_parameters['wrist_1_mass']}" scope="parent"/>
|
||||
<xacro:property name="wrist_2_mass" value="${sec_inertia_parameters['wrist_2_mass']}" scope="parent"/>
|
||||
<xacro:property name="wrist_3_mass" value="${sec_inertia_parameters['wrist_3_mass']}" scope="parent"/>
|
||||
|
||||
<!-- center of mass -->
|
||||
<xacro:property name="prop_base_cog" value="${sec_inertia_parameters['center_of_mass']['base_cog']}" scope="parent"/>
|
||||
<xacro:property name="prop_shoulder_cog" value="${sec_inertia_parameters['center_of_mass']['shoulder_cog']}" scope="parent"/>
|
||||
<xacro:property name="prop_upperarm_cog" value="${sec_inertia_parameters['center_of_mass']['upperarm_cog']}" scope="parent"/>
|
||||
<xacro:property name="prop_forearm_cog" value="${sec_inertia_parameters['center_of_mass']['forearm_cog']}" scope="parent"/>
|
||||
<xacro:property name="prop_wrist_1_cog" value="${sec_inertia_parameters['center_of_mass']['wrist_1_cog']}" scope="parent"/>
|
||||
<xacro:property name="prop_wrist_2_cog" value="${sec_inertia_parameters['center_of_mass']['wrist_2_cog']}" scope="parent"/>
|
||||
<xacro:property name="prop_wrist_3_cog" value="${sec_inertia_parameters['center_of_mass']['wrist_3_cog']}" scope="parent"/>
|
||||
|
||||
<!-- inertia -->
|
||||
<xacro:property name="prop_base_inertia" value="${sec_inertia_parameters['inertia']['base']}" scope="parent"/>
|
||||
<xacro:property name="prop_shoulder_inertia" value="${sec_inertia_parameters['inertia']['shoulder']}" scope="parent"/>
|
||||
<xacro:property name="prop_upperarm_inertia" value="${sec_inertia_parameters['inertia']['upperarm']}" scope="parent"/>
|
||||
<xacro:property name="prop_forearm_inertia" value="${sec_inertia_parameters['inertia']['forearm']}" scope="parent"/>
|
||||
<xacro:property name="prop_wrist_1_inertia" value="${sec_inertia_parameters['inertia']['wrist_1']}" scope="parent"/>
|
||||
<xacro:property name="prop_wrist_2_inertia" value="${sec_inertia_parameters['inertia']['wrist_2']}" scope="parent"/>
|
||||
<xacro:property name="prop_wrist_3_inertia" value="${sec_inertia_parameters['inertia']['wrist_3']}" scope="parent"/>
|
||||
|
||||
</xacro:macro>
|
||||
</robot>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot xmlns:xacro="http://wiki.ros.org/xacro">
|
||||
<!--
|
||||
NOTE the macro defined in this file is NOT part of the public API of this
|
||||
package. Users CANNOT rely on this file being available, or stored in
|
||||
this location. Nor can they rely on the existence of the macro.
|
||||
-->
|
||||
|
||||
<xacro:macro name="cs_arm_transmission" params="prefix hw_interface">
|
||||
|
||||
<transmission name="${prefix}shoulder_pan_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}shoulder_pan_joint">
|
||||
<hardwareInterface>${hw_interface}</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}shoulder_pan_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
<transmission name="${prefix}shoulder_lift_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}shoulder_lift_joint">
|
||||
<hardwareInterface>${hw_interface}</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}shoulder_lift_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
<transmission name="${prefix}elbow_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}elbow_joint">
|
||||
<hardwareInterface>${hw_interface}</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}elbow_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
<transmission name="${prefix}wrist_1_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}wrist_1_joint">
|
||||
<hardwareInterface>${hw_interface}</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}wrist_1_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
<transmission name="${prefix}wrist_2_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}wrist_2_joint">
|
||||
<hardwareInterface>${hw_interface}</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}wrist_2_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
<transmission name="${prefix}wrist_3_trans">
|
||||
<type>transmission_interface/SimpleTransmission</type>
|
||||
<joint name="${prefix}wrist_3_joint">
|
||||
<hardwareInterface>${hw_interface}</hardwareInterface>
|
||||
</joint>
|
||||
<actuator name="${prefix}wrist_3_motor">
|
||||
<mechanicalReduction>1</mechanicalReduction>
|
||||
</actuator>
|
||||
</transmission>
|
||||
|
||||
</xacro:macro>
|
||||
|
||||
</robot>
|
||||
Reference in New Issue
Block a user