【睿尔曼-RealMan】睿尔曼超轻量仿人机械臂之——Vmware虚拟机下的UDP数据回传
harry@realman-robot.com 2024-05-19
背景:
用户在使用Vmware虚拟机的时候,想要访问机械臂,获取udp数据但是会回传失败。
Errormsg:
工具版本信息:
虚拟机版本:VmwareWorkstation17pro
机械臂型号:Rm65-B
ROS版本:Ros2
UDP 主动上报功能集成到 rm_driver 功能包中, 用户可使用最高频率 200Hz 的速率获取机械臂状 态信息。将 RM65、RM75、RML63、ECO65 四种机械臂的功能包进行融合。
话不多说。。开整--------------------------------------------------------->
打开虚拟机后编译我们的ros包后,首先呢关于机械臂状态主动分三步(和把大象装进冰箱门一样)
第一步:设置 UDP 机械臂状态主动上报配置
功能描述:设置UDP 机械臂状态主动上报配置
参数说明 Setrealtimepush.msg
uint16 cycle:设置广播周期,为5ms的倍数(默认1即1*5=5ms,200Hz)。
uint16 port:设置广播的端口号(默认8089)。
uint16 force_coordinate:设置系统外受力数据的坐标系(仅带有力传感
器的机械臂支持)。
string ip:设置自定义的上报目标IP 地址(默认192.168.1.10)。
命令示例
ros2 topic pub --once /rm_driver/set_realtime_push_cmd
rm_ros_interfaces/msg/Setrealtimepush "cycle: 1
port: 8089
force_coordinate: 0
ip: '192.168.1.10'"
返回值:
成功返回:true;失败返回:false,driver终端返回错误码。
ros2 topic echo /rm_driver/set_realtime_push_result
第二步 功能描述查询UDP 机械臂状态主动上报配置
参数说明:Setrealtimepush.msg
uint16 cycle:设置广播周期,为5ms的倍数(默认1即1*5=5ms,200Hz)。
uint16 port:设置广播的端口号(默认8089)。
uint16 force_coordinate:设置系统外受力数据的坐标系(仅带有力传感
器的机械臂支持)。
string ip:设置自定义的上报目标IP 地址(默认192.168.1.10)
命令示例ros2 topic pub --once /rm_driver/get_realtime_push_cmd
std_msgs/msg/Empty "{}"
返 值成功设置信息;失败返回:driver终端返回错误码。
ros2 topic echo /rm_driver/get_realtime_push_result
第三步 UDP 机械臂状态主动上报(关门!!冷冻大象!!)
udp上传的数据包括机械臂错误,系统错误,位姿信息等这里不逐个罗列,具体参看ros文档中的订阅命令(要吃大象的哪个部位取哪个部位)
1.机械臂错误
功能描述:机械臂错误
参数说明:std_msgs::msg::UInt16
uint16 data:机械臂报错信息。
订阅命令:ros2 topic echo /rm_driver/udp_arm_err
2.位姿信息
功能描述: 位姿信息
参数说明geometry_msgs::msg::Pose
Point position:机械臂当前坐标信息。
float64 x
float64 y
float64 z
Quaternion orientation:机械臂当前姿态信息。
float64 x 0
float64 y 0
float64 z 0
float64 w 1
订阅命令
ros2 topic echo /rm_driver/udp_arm_position
然而虚拟机在使用过程中由于客户没有固定回传地址或者回传地址设置不对会导致回传的数据没有到虚拟机上(至于到哪里了———听天由命)
首先默认的数据回传的地址是192.168.1.10 但是虚拟机创建时候地址不一定是默认的,所以就需要固定虚拟机ip。
我这里是ens37(默认是ens33)
再通过
以上设置来设置回传ip
接着验证
接下来就可以获取回传数据了
以上就是这期分享的内容,ありがとう、みんなさん~
撰写评论