Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ROS连接ABB机械臂调试详细教程-ROS(indigo)和ABB RobotStudio 6.03.02-

ROS连接ABB机械臂调试详细教程-ROS(indigo)和ABB RobotStudio 6.03.02-

作者头像
zhangrelay
发布于 2019-01-23 03:18:31
发布于 2019-01-23 03:18:31
4.1K00
代码可运行
举报
运行总次数:0
代码可运行

在ROS industrial介绍中,给出了ROS和常用机械臂的连接方式。具体信息可以参考:http://wiki.ros.org/Industrial

ROS连接ABB机械臂调试详细教程-ROS(indigo)和ABB RobotStudio 6.03.02-

补充:https://github.com/robotics/open_abb

open-abb-driver

Control ABB robots remotely with ROS, Python, or C++

What is it?

open-abb-driver consists of two main parts. The first is a program which is written in the ABB robot control language, RAPID, which allows remote clients to send requests for actions (such as joint moves, cartesian moves, speed changes, etc.). The second is a series of libraries to interact with the robot from remote computers, using several different control schemes. You can use the ROS driver, which allows control using ROS services and publishers. You can also include the Python or C++ libraries to communicate with the robot directly (both located in abb_node/packages/abb_comm), and bypass ROS completely.

Requirements

  • ABB IRC5 controller
  • 6 DOF robotic manipulator
  • Robot must have the following factory software options
    • "PC Interface"
    • "Multitasking" (required for position feedback stream)

Quick Start

Robot Setup

  • Install the RAPID module 'SERVER'
    • Using RobotStudio online mode is the easiest way to do this, check out the wiki article for details.
  • For position feedback, install the RAPID module 'LOGGER' into another task.
  • In SERVER.mod, check to make sure the "ipController" specified is the same as your robot. The default robot IP is 192.168.125.1
  • Start the programs on the robot
    • Production Window->PP to Main, then press the play button.

Computer Setup

  • Verify that your computer is on the same subnet as the robot.
    • Try pinging the robot (default IP is 192.168.125.1).
  • Before trying ROS, it's pretty easy to check functionality using the simple python interface.
    • Note that you must either copy abb_node/packages/abb_comm/abb.py to your local directory or somewhere included in your PYTHONPATH environment.
  • To set up the ROS node (Fuerte only at the moment), copy abb_node to somewhere in your $ROS_PACKAGE_PATH.
    • If you did that correctly, try: roscd abb_node rosmake abb_node roslaunch abb_node abb_tf.launch

调试视频链接:http://v.youku.com/v_show/id_XMTc0MzUxNDU4OA

ROS官网给出了一些示例,可以移植应用(120 120t 4400 2400 5400 6600 6640),参考网址: 1 http://wiki.ros.org/abb 2 https://github.com/ros-industrial/abb 3 https://github.com/ros-industrial/abb_experimental

下面详细介绍,如何用ROS中MoveIt!规划并控制ABB RobotStudio中机械臂的运动。

MoveIt!:http://moveit.ros.org/

ABB RobotStudio:http://blog.csdn.net/ZhangRelay/article/details/51177098

----官方教程分为3个小节----

The following tutorials are provided to demonstrate installation and operation of an ABB robot using the ROS Industrial interfaces:

  1. Installing the ABB ROS Server This tutorial walks through the steps of installing the ROS server code on the ABB robot controller and configuring the required controller settings.
  2. Running the ROS Server This tutorial describes how to run the ABB ROS Server, so the robot will execute motion commands sent from the ROS client node.

The following tutorials show how to use the ABB Robot Studio with the driver:

  1. Using Simulated Robot in Robot Studio This tutorial describes how to setup the ABB RobotStudio simulator for use with the ROS-Industrial driver.

分别为:安装ABB ROS服务器,运行ROS 服务器和在RobotStudio中使用仿真机器人,这里以仿真机器人为例,

当然配置完成后就可以控制真实机械臂运动了。

A 在RobotStudio中使用仿真机器人

通过使用仿真机械臂替代真实机械臂,可以在ROS和ABB机械臂进行通信仿真。这种情况下,通常有两台PC,

一台运行windows及ABB机械臂,winpc;另一台运行ubuntu和ROS,rospc。

1 需要熟悉ABB RobotStudio使用 1.1 新建一个空工作站解决方案:

1.2 在ABB模型库中选择一款机械臂,这里以IRB120_3_58__01为例:

1.3 选择机器人系统,点击从布局:

1.4 点击下一步,出现下面界面,点击选项:

1.5 通过过滤器快速添加616-1 PC interface 623-1 Multitasking后,点击完成:

2 安装RAPID文件

2.1 到创建的文档\RobotStudio\Systems下选择对应的工作站 2.2 打开,新建ROS文件夹,并复制\abb_driver\rapid到其中(下载地址https://github.com/ros-industrial/abb):

2.3 查看目前winpc的IP地址,并写入到ROS_socket.sys中对应处,如下:

3 选择控制器,配置示教器:

在配置中,为了使用方便先将语言设置为中文:

配置到手动模式,就可以进行下一步,安装ROS服务器。

B 安装ROS服务器

必须具备的组件清单:

Multitasking (623-1) -- for parallel socket communications Socket Messaging (672-1) -- for communications with a ROS PC for recent RobotWare versions, this option is included with "PC Interface (616-1)" RobotWare OS >= 5.13 -- for required socket options earlier versions may work, but will require modifications to the RAPID code

如果不全,仿真没有问题,但无法控制实际机器人。

之前,已经将代码文件复制到相应文件夹下了,如(e.g. /<system>/HOME/ROS/*)。

进行下一步操作。

1 配置控制器

这里文件说明如下:

Shared by all tasks ROS_common.sys -- Global variables and data types shared by all files ROS_socket.sys -- Socket handling and simple_message implementation ROS_messages.sys -- Implementation of specific message types Specific task modules ROS_stateServer.mod -- Broadcast joint position and state data ROS_motionServer.mod -- Receive robot motion commands ROS_motion.mod -- Issues motion commands to the robot

1.1 创建任务

在ABB--控制器--配置编辑器--Controller--Task:

Create 3 tasks as follows:

Name

Type

Trust Level

Entry

Motion Task

ROS_StateServer

SEMISTATIC

NoSafety

main

NO

ROS_MotionServer

SEMISTATIC

SysStop

main

NO

T_ROB1

NORMAL

main

YES

It is easiest to wait until all configuration tasks are completed before rebooting the controller.

NOTES:

  1. The T_ROB1 motion task probably already exists on your controller.
  2. If T_ROB1 has existing motion-control modules, you may need to rename the main() routine in ROS_Motion.mod to ROS_main(). In this case, set the Entry point for T_ROB1 task to ROS_main().
  3. For multi-robot controllers, specify the desired robot (e.g. rob1) for each task
  4. SEMISTATIC tasks will auto-start when controller is booted. They are visible, but cannot be easily seen for troubleshooting. For debug or development purposes, it may be desired to set both ROS_*Server tasks to Type=NORMAL.

1.2 加载模块到任务

在ABB--控制器--配置编辑器--Controller--Automatic Loading of Modules:

File

Task

Installed

All Tasks

Hidden

HOME:/ROS/ROS_common.sys

NO

YES

NO

HOME:/ROS/ROS_socket.sys

NO

YES

NO

HOME:/ROS/ROS_messages.sys

NO

YES

NO

HOME:/ROS/ROS_stateServer.mod

ROS_StateServer

NO

NO

NO

HOME:/ROS/ROS_motionServer.mod

ROS_MotionServer

NO

NO

NO

HOME:/ROS/ROS_motion.mod

T_ROB1

NO

NO

NO

添加完成后如下所示:

然后,重启控制器,应用更改。

1.3 更新

在控制器--重启中选择合适模式进行重启,完成后可以看到如下:

如果IP错误:

设置正确IP后,显示:

补充RAPID:

ROS_motionServer:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MODULE ROS_motionServer

! Software License Agreement (BSD License)
!
! Copyright (c) 2012, Edward Venator, Case Western Reserve University
! Copyright (c) 2012, Jeremy Zoss, Southwest Research Institute
! All rights reserved.
!
! Redistribution and use in source and binary forms, with or without modification,
! are permitted provided that the following conditions are met:
!
!   Redistributions of source code must retain the above copyright notice, this
!       list of conditions and the following disclaimer.
!   Redistributions in binary form must reproduce the above copyright notice, this
!       list of conditions and the following disclaimer in the documentation
!       and/or other materials provided with the distribution.
!   Neither the name of the Case Western Reserve University nor the names of its contributors
!       may be used to endorse or promote products derived from this software without
!       specific prior written permission.
!
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
! EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
! OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
! SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
! INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
! TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
! BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
! WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

LOCAL CONST num server_port := 11000;

LOCAL VAR socketdev server_socket;
LOCAL VAR socketdev client_socket;
LOCAL VAR ROS_joint_trajectory_pt trajectory{MAX_TRAJ_LENGTH};
LOCAL VAR num trajectory_size;

PROC main()
    VAR ROS_msg_joint_traj_pt message;

    TPWrite "MotionServer: Waiting for connection.";
	ROS_init_socket server_socket, server_port;
    ROS_wait_for_client server_socket, client_socket;

    WHILE ( true ) DO
		! Recieve Joint Trajectory Pt Message
        ROS_receive_msg_joint_traj_pt client_socket, message;
		trajectory_pt_callback message;
	ENDWHILE

ERROR (ERR_SOCK_TIMEOUT, ERR_SOCK_CLOSED)
	IF (ERRNO=ERR_SOCK_TIMEOUT) OR (ERRNO=ERR_SOCK_CLOSED) THEN
        SkipWarn;  ! TBD: include this error data in the message logged below?
        ErrWrite \W, "ROS MotionServer disconnect", "Connection lost.  Resetting socket.";
		ExitCycle;  ! restart program
	ELSE
		TRYNEXT;
	ENDIF
UNDO
	IF (SocketGetStatus(client_socket) <> SOCKET_CLOSED) SocketClose client_socket;
	IF (SocketGetStatus(server_socket) <> SOCKET_CLOSED) SocketClose server_socket;
ENDPROC

LOCAL PROC trajectory_pt_callback(ROS_msg_joint_traj_pt message)
	VAR ROS_joint_trajectory_pt point;
	VAR jointtarget current_pos;
    VAR ROS_msg reply_msg;

    point := [message.joints, message.duration];
    
    ! use sequence_id to signal start/end of trajectory download
	TEST message.sequence_id
		CASE ROS_TRAJECTORY_START_DOWNLOAD:
            TPWrite "Traj START received";
			trajectory_size := 0;                 ! Reset trajectory size
            add_traj_pt point;                    ! Add this point to the trajectory
		CASE ROS_TRAJECTORY_END:
            TPWrite "Traj END received";
            add_traj_pt point;                    ! Add this point to the trajectory
            activate_trajectory;
		CASE ROS_TRAJECTORY_STOP:
            TPWrite "Traj STOP received";
            trajectory_size := 0;  ! empty trajectory
            activate_trajectory;
            StopMove; ClearPath; StartMove;  ! redundant, but re-issue stop command just to be safe
		DEFAULT:
            add_traj_pt point;                    ! Add this point to the trajectory
	ENDTEST

    ! send reply, if requested
    IF (message.header.comm_type = ROS_COM_TYPE_SRV_REQ) THEN
        reply_msg.header := [ROS_MSG_TYPE_JOINT_TRAJ_PT, ROS_COM_TYPE_SRV_REPLY, ROS_REPLY_TYPE_SUCCESS];
        ROS_send_msg client_socket, reply_msg;
    ENDIF

ERROR
    RAISE;  ! raise errors to calling code
ENDPROC

LOCAL PROC add_traj_pt(ROS_joint_trajectory_pt point)
    IF (trajectory_size = MAX_TRAJ_LENGTH) THEN
        ErrWrite \W, "Too Many Trajectory Points", "Trajectory has already reached its maximum size",
            \RL2:="max_size = " + ValToStr(MAX_TRAJ_LENGTH);
    ELSE
        Incr trajectory_size;
        trajectory{trajectory_size} := point; !Add this point to the trajectory
    ENDIF
ENDPROC

LOCAL PROC activate_trajectory()
    WaitTestAndSet ROS_trajectory_lock;  ! acquire data-lock
    TPWrite "Sending " + ValToStr(trajectory_size) + " points to MOTION task";
    ROS_trajectory := trajectory;
    ROS_trajectory_size := trajectory_size;
    ROS_new_trajectory := TRUE;
    ROS_trajectory_lock := FALSE;  ! release data-lock
ENDPROC
	
ENDMODULE

ROS_stateServer

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MODULE ROS_stateServer

! Software License Agreement (BSD License)
!
! Copyright (c) 2012, Edward Venator, Case Western Reserve University
! Copyright (c) 2012, Jeremy Zoss, Southwest Research Institute
! All rights reserved.
!
! Redistribution and use in source and binary forms, with or without modification,
! are permitted provided that the following conditions are met:
!
!   Redistributions of source code must retain the above copyright notice, this
!       list of conditions and the following disclaimer.
!   Redistributions in binary form must reproduce the above copyright notice, this
!       list of conditions and the following disclaimer in the documentation
!       and/or other materials provided with the distribution.
!   Neither the name of the Case Western Reserve University nor the names of its contributors
!       may be used to endorse or promote products derived from this software without
!       specific prior written permission.
!
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
! EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
! OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
! SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
! INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
! TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
! BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
! WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

LOCAL CONST num server_port := 11002;
LOCAL CONST num update_rate := 0.10;  ! broadcast rate (sec)

LOCAL VAR socketdev server_socket;
LOCAL VAR socketdev client_socket;

PROC main()

    TPWrite "StateServer: Waiting for connection.";
	ROS_init_socket server_socket, server_port;
    ROS_wait_for_client server_socket, client_socket;
    
	WHILE (TRUE) DO
		send_joints;
		WaitTime update_rate;
    ENDWHILE

ERROR (ERR_SOCK_TIMEOUT, ERR_SOCK_CLOSED)
	IF (ERRNO=ERR_SOCK_TIMEOUT) OR (ERRNO=ERR_SOCK_CLOSED) THEN
        SkipWarn;  ! TBD: include this error data in the message logged below?
        ErrWrite \W, "ROS StateServer disconnect", "Connection lost.  Waiting for new connection.";
        ExitCycle;  ! restart program
	ELSE
		TRYNEXT;
	ENDIF
UNDO
ENDPROC

LOCAL PROC send_joints()
	VAR ROS_msg_joint_data message;
	VAR jointtarget joints;
	
    ! get current joint position (degrees)
	joints := CJointT();
    
    ! create message
    message.header := [ROS_MSG_TYPE_JOINT, ROS_COM_TYPE_TOPIC, ROS_REPLY_TYPE_INVALID];
    message.sequence_id := 0;
    message.joints := joints.robax;
    
    ! send message to client
    ROS_send_msg_joint_data client_socket, message;

ERROR
    RAISE;  ! raise errors to calling code
ENDPROC

ENDMODULE

ROS_motion

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MODULE ROS_motion

! Software License Agreement (BSD License)
!
! Copyright (c) 2012, Edward Venator, Case Western Reserve University
! Copyright (c) 2012, Jeremy Zoss, Southwest Research Institute
! All rights reserved.
!
! Redistribution and use in source and binary forms, with or without modification,
! are permitted provided that the following conditions are met:
!
!   Redistributions of source code must retain the above copyright notice, this
!       list of conditions and the following disclaimer.
!   Redistributions in binary form must reproduce the above copyright notice, this
!       list of conditions and the following disclaimer in the documentation
!       and/or other materials provided with the distribution.
!   Neither the name of the Case Western Reserve University nor the names of its contributors
!       may be used to endorse or promote products derived from this software without
!       specific prior written permission.
!
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
! EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
! OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
! SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
! INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
! TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
! BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
! WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

LOCAL CONST zonedata DEFAULT_CORNER_DIST := z10;
LOCAL VAR ROS_joint_trajectory_pt trajectory{MAX_TRAJ_LENGTH};
LOCAL VAR num trajectory_size := 0;
LOCAL VAR intnum intr_new_trajectory;

PROC main()
    VAR num current_index;
    VAR jointtarget target;
    VAR speeddata move_speed := v10;  ! default speed
    VAR zonedata stop_mode;
    VAR bool skip_move;
    
    ! Set up interrupt to watch for new trajectory
    IDelete intr_new_trajectory;    ! clear interrupt handler, in case restarted with ExitCycle
    CONNECT intr_new_trajectory WITH new_trajectory_handler;
    IPers ROS_new_trajectory, intr_new_trajectory;

    WHILE true DO
        ! Check for new Trajectory
        IF (ROS_new_trajectory)
            init_trajectory;

        ! execute all points in this trajectory
        IF (trajectory_size > 0) THEN
            FOR current_index FROM 1 TO trajectory_size DO
                target.robax := trajectory{current_index}.joint_pos;

                skip_move := (current_index = 1) AND is_near(target.robax, 0.1);

                stop_mode := DEFAULT_CORNER_DIST;  ! assume we're smoothing between points
                IF (current_index = trajectory_size) stop_mode := fine;  ! stop at path end

                ! Execute move command
                IF (NOT skip_move)
                    MoveAbsJ target, move_speed, \T:=trajectory{current_index}.duration, stop_mode, tool0;
            ENDFOR

            trajectory_size := 0;  ! trajectory done
        ENDIF
        
        WaitTime 0.05;  ! Throttle loop while waiting for new command
    ENDWHILE
ERROR
    ErrWrite \W, "Motion Error", "Error executing motion.  Aborting trajectory.";
    abort_trajectory;
ENDPROC

LOCAL PROC init_trajectory()
    clear_path;                    ! cancel any active motions

    WaitTestAndSet ROS_trajectory_lock;  ! acquire data-lock
      trajectory := ROS_trajectory;            ! copy to local var
      trajectory_size := ROS_trajectory_size;  ! copy to local var
      ROS_new_trajectory := FALSE;
    ROS_trajectory_lock := FALSE;         ! release data-lock
ENDPROC

LOCAL FUNC bool is_near(robjoint target, num tol)
    VAR jointtarget curr_jnt;
    
    curr_jnt := CJointT();
    
    RETURN ( ABS(curr_jnt.robax.rax_1 - target.rax_1) < tol )
       AND ( ABS(curr_jnt.robax.rax_2 - target.rax_2) < tol )
       AND ( ABS(curr_jnt.robax.rax_3 - target.rax_3) < tol )
       AND ( ABS(curr_jnt.robax.rax_4 - target.rax_4) < tol )
       AND ( ABS(curr_jnt.robax.rax_5 - target.rax_5) < tol )
       AND ( ABS(curr_jnt.robax.rax_6 - target.rax_6) < tol );
ENDFUNC

LOCAL PROC abort_trajectory()
    trajectory_size := 0;  ! "clear" local trajectory
    clear_path;
    ExitCycle;  ! restart program
ENDPROC

LOCAL PROC clear_path()
    IF ( NOT (IsStopMoveAct(\FromMoveTask) OR IsStopMoveAct(\FromNonMoveTask)) )
        StopMove;          ! stop any active motions
    ClearPath;             ! clear queued motion commands
    StartMove;             ! re-enable motions
ENDPROC

LOCAL TRAP new_trajectory_handler
    IF (NOT ROS_new_trajectory) RETURN;
    
    abort_trajectory;
ENDTRAP

ENDMODULE

C 运行ROS服务器

注意,RAPID运行模式为连续。

在ROS端编译完成abb和abb_experimental包,可从github下载。

支持IRB2400、IRB5400、IRB6600、IRB6640、IRB120、IRB120T和IRB4400等。

在终端启动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exbot@relay-Aspire-4741:~$ roslaunch abb_irb120_moveit_config moveit_planning_execution.launch sim:=false robot_ip:=192.168.1.100

winpc显示如下:

rospc显示如下:

1 手动模式

程序指针 "PP to Main",Enable使得 "Motors On",点击运行按钮。即可在rospc端控制机械臂运动。

winpc端:

rospc端:

手动模式,规划执行过程有可能中断,请查阅相关文档。

2 自动模式

 "Motors On"并点击运行模式。

winpc:

如果是实际机器人,请注意为全速运行。

rospc:

--

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年09月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ROS Industrial
工业机器人是机器人中非常重要的一个部分,在工业领域应用广泛而且成熟,ROS迅猛发展的过程中,也不断渗入到工业领域,从而产生了一个新的分支——ROS-Industrial(ROS-I)。
CreateAMind
2018/07/24
1.5K0
ROS Industrial
ABB机器人中断触发socket通讯实时位置上传
中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。在运行一个程序的过程中,断续地以“插入”方式执行一些完成特定处理功能的程序段。
工业技术网-zuodianshier.net
2022/05/22
1.3K0
ABB机器人中断触发socket通讯实时位置上传
ROS机械臂篇
从https://github.com/danfis/libccd下载源码,解压缩后进入主文件夹下的src,编译
算法之名
2023/10/16
1.4K0
ROS机械臂篇
ROS 2 驱动程序现在可用于 ABB 的机械臂
2021年:ABB之ROS功能更新2021_zhangrelay的博客-CSDN博客
zhangrelay
2022/06/27
1.1K0
ROS 2 驱动程序现在可用于 ABB 的机械臂
越疆魔术师DEBOT(magician)机械臂ROS、MoveIt!和Gazebo功能包与ROS-I教程(melodic)
喜欢DEBOT的小伙伴,现在可以仿真玩耍机械臂啦,如果已经购买可以配合一起玩耍起来。
zhangrelay
2019/08/29
1.7K0
越疆魔术师DEBOT(magician)机械臂ROS、MoveIt!和Gazebo功能包与ROS-I教程(melodic)
开源七轴myArm协作机械臂正逆运动学技术讲解
在本文中,我们将深入探讨机器人学的两个核心概念:正运动学和逆运动学。这两个概念是理解和控制机械臂运动的基础。通过一个具体的7轴机械臂实例,我们将详细介绍如何计算机械臂的正运动学和逆运动学。我们首先会解释正运动学和逆运动学的基本概念和数学原理,然后我们将展示如何应用这些原理来计算7轴机械臂的运动。我们的目标是让读者对机械臂的运动控制有一个深入的理解,并了解如何在实践中应用这些知识。
大象机器人
2023/11/06
1.9K0
开源七轴myArm协作机械臂正逆运动学技术讲解
Webots和ROS2使用说明(部分翻译)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/18
1.7K0
Webots和ROS2使用说明(部分翻译)
超冗余机器人运动控制:蛇形机器人 & 8自由度平面机械臂
超冗余机器人具有适应复杂多变环境的特点,成为机器人研究中的一个热点,超冗余机器人的代表诸如蛇形机器人等。,生物蛇所 具有的运动步态是无足脊椎动物行走步态的典 范。运动学模型和动力学模型是蛇形机器人的控 制基础。基于前人对生物蛇形态曲线的初步探 索,为深入研究蛇形机器人步态,运动学模型和动 力学模型成为该领域的研究重点。根据蛇形机器 人的运动步态特点,可以将运动学模型和动力学 模型分为二维步态和三维步态两种。
ZC_Robot机器人技术
2020/09/25
4.9K1
超冗余机器人运动控制:蛇形机器人 & 8自由度平面机械臂
ROS机器人程序设计(原书第2版)补充资料 (拾) 第十章 使用MoveIt!
书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用。
zhangrelay
2019/01/23
1K0
ROS2极简总结-命令行接口基础
ros2 <main_command> <sub_command> <<arguments>>
zhangrelay
2021/12/02
1.7K0
ROS2极简总结-命令行接口基础
YoloV8自定义姿势关键点检测教程:机械臂关键点姿势跟踪(步骤 + 源码)
自定义姿势关键点检测是一种计算机视觉技术,涉及识别和跟踪对象上的特定点或关键点。对于下棋机器人手臂来说,这些关键点可以代表棋子的位置、棋盘的方向,甚至机器人手臂本身的配置。
Color Space
2024/01/12
1.8K0
YoloV8自定义姿势关键点检测教程:机械臂关键点姿势跟踪(步骤 + 源码)
ROS2 Humble测试版功能包列表
 2022-05-04列表如下1040个: sudo apt install ros-humble- Display all 1040 possibilities? (y or n) ros-hum
zhangrelay
2022/05/10
1.1K0
ROS2 Humble测试版功能包列表
机器人操作系统(ROS)中控制与智能的一点差异
通过/backpack_led控制LED灯,/cmd_vel控制Cozmo速度和转向,/say让cozmo开口说话。
zhangrelay
2019/06/25
6730
机器人操作系统(ROS)中控制与智能的一点差异
机器人程序设计课程配套系统镜像使用说明( Ubuntu 14.04.5 + ROS indigo )
本镜像主要针对机器人程序设计本科课程,供学生课程学习与实践操作使用,基于ROS爱好者和学生使用的反馈意见对之前发布的版本进行修正和补充,在此致谢。更新日期为:2017.03.17,ROS学习推荐网址如下:
zhangrelay
2019/01/23
9930
ROS(1和2)机器人操作系统相关书籍、资料和学习路径
ROS发展10年了,已经逐渐成为通用的机器人操作系统标准。ROS 2相关资料链接:http://blog.csdn.net/zhangrelay/article/details/78778590。
zhangrelay
2019/01/23
2.4K0
sekiro框架部署以及简单的js-hook
https://files.cnblogs.com/files/pythonywy/sekiro-release-demo-20210823.zip
小小咸鱼YwY
2021/12/04
1.3K0
ROS和RRT的一些资料
ROS和RRT结合的示例比较多,之前博文提过两次( 1 和 2 ),本文做一些汇总和整理,大部分都在roswiki和GitHub上有具体说明。需要认真阅读源码和说明文件,才能使用顺利。
zhangrelay
2019/01/23
1.5K0
ROS(indigo) 用于机器人控制的图形化编程工具--code_it robot_blockly
编程语言有汇编,高级语言,解释语言等,现在图形化编程也越来越流行。图形化编程简单易学。8年前,微软推出了VPL用于机器人程序设计,如Python和JavaScript都可以用图形化框图实现程序,有趣直观。
zhangrelay
2019/01/23
1.8K0
ROS2+Gazebo11+Car+OpenCV录制视觉数据和控制学习
录制视觉数据如下: ---- 控制效果如下: ---- 如上控制案例参考: 2019年的一篇旧文,大概三年前了。 不变的配方,熟悉的味道。  ---- 居中 注意前轮夹角和方向盘 左转 注意前轮夹角和方向盘 右转 注意前轮夹角和方向盘 ---- 部分记录: [INFO] [launch]: All log files can be found below /home/zhangrelay/.ros/log/2022-06-06-21-44-07-338514-LAPTOP-5RE
zhangrelay
2022/06/08
7150
ROS2+Gazebo11+Car+OpenCV录制视觉数据和控制学习
Webots2021b和ROS2调试笔记21-07-27
先上结论: 凉 凉凉 透心凉 webots2021b刚发布时间不长,其ROS2接口包也不全。 2021b(win10)安装包小,很多库需要启动时联网下载。 很多节点不支持windows哦!如下: [WARNING] [webots_robotic_arm_node.EXE-2]: 'SIGINT' sent to process[webots_robotic_arm_node.EXE-2] not supported on Windows, escalating to 'SIGTERM' 还调试个毛线
zhangrelay
2021/12/02
7950
Webots2021b和ROS2调试笔记21-07-27
推荐阅读
相关推荐
ROS Industrial
更多 >
交个朋友
加入行业数字化趋势交流群
解读转型政策方向 参考企业落地案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验