ros网页控制机械臂

在这里插入图片描述
在这里插入图片描述

网卡设置固定IP和机械臂通过网线连接。

请参考这篇文章中的步骤:ROS - 使用UR机械臂最新的 ur_robot_driver

网页控制机械臂主要通过 robot web tools

robot web tools包含roslibjs, ros2djs, ros3djs, roslibpy, rosgraph web visualizer等工具,它们提供了本地ROS和网页交互的接口。

同时,PC通过ROS控制机械臂,还需要UR机械臂的驱动程序,目前最新的驱动是ur robot driver,考虑到生态,使用ur modern driver会有更多的资料和使用经验。对于CB3.10以上,还需要对ur modern driver进行一些修改。

为了监视机械臂,还配置了一个摄像头,摄像头通过ROS连到网页需要async-web-server
和web_video_server,如果使用USB摄像头,还需要USB摄像头的驱动文件(usb cam)。

所有的这些必须软件已经集成在了软件仓库中,直接git clone下来。
首先要建立ros workspace

mkdir -p catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
sudo apt install git
sudo apt-get install ros-${ROS_DISTRO}-async-web-server-cpp
git clone https://github.com/borninfreedom/ur-webgui.git
cd ..
catkin_make

使用

roslaunch ur_webgui ur3_real.launch robot_ip:=192.168.56.2
roslaunch usb_cam usb_cam-test.launch
rosrun web_video_server web_video_server

在另一台和控制机械臂的PC在同一局域网的电脑浏览器上输入

http://hostname_of_PC_control_ur:8000/ur_webgui,

其中hostname_of_PC_control_ur指的是和控制柜相连的PC,hostname可以直接通过 hostname 指令查看。
如果通过hostname不能连接成功,直接用IP替换hostname。

在浏览器新打开一个标签页,输入

http://hostname:8080/stream?topic=/usb_cam/image_raw

同样,hostname指控制PC的hostname,或者用IP代替。

输入后,账户和密码都是admin,即可看到开始界面。

### ROS 使用手柄控制机械的实现 在 ROS 中,可以通过 Joystick 或 Gamepad 手柄来发送指令并控制机械的动作。这通常涉及订阅 `joy` 主题中的数据,并将其映射到机械的具体动作上。 #### 实现流程概述 为了完成这一目标,可以按照以下方式设计节点结构: 1. **Joy 节点配置**: 配置一个 Joy 节点用于读取手柄输入的数据流[^3]。 2. **自定义消息转换逻辑**: 创建一个中间节点,该节点接收来自 Joy 的主题 `/joy` 数据,并将其解析为适合机械控制器的消息类型(如 Twist、JointTrajectory 等)[^4]。 3. **发布至机械接口**: 将处理后的运动命令传递给机械的实际驱动程序或仿真环境。 以下是基于上述描述的一个具体代码示例: ```python #!/usr/bin/env python3 import rospy from sensor_msgs.msg import Joy from geometry_msgs.msg import Twist class JoystickToTwist: def __init__(self): self.pub_twist = rospy.Publisher('/cmd_vel', Twist, queue_size=10) rospy.Subscriber('joy', Joy, self.joy_callback) def joy_callback(self, data): twist_msg = Twist() # 假设左摇杆上下轴对应线速度,左右轴对应角速度 linear_speed = data.axes[1] * 0.5 # 缩放因子调整范围 [-0.5, 0.5] angular_speed = data.axes[0] * 1.0 # 缩放因子调整范围 [-1.0, 1.0] twist_msg.linear.x = linear_speed twist_msg.angular.z = angular_speed self.pub_twist.publish(twist_msg) if __name__ == '__main__': try: rospy.init_node('joystick_to_twist') controller = JoystickToTwist() rospy.spin() except rospy.ROSInterruptException: pass ``` 此脚本实现了从手柄输入到机器人移动基础的速度控制转化过程。对于更复杂的机械控制系统,则可能需要进一步扩展功能模块以支持关节空间轨迹规划或其他高级特性[^5]。 #### 注意事项 - 不同品牌的手柄按键布局有所差异,在开发前需确认所用手柄的确切按钮编号及其含义。 - 如果针对特定硬件比如 Franka Emika 机械进行适配时,请参照官方文档中有关 API 接口说明部分的内容[^6]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值