精华内容
下载资源
问答
  • 基于累积损伤理论结合有限元子结构方法对复合材料单钉机械连接强度进行了研究。根据层合板特性和螺栓受力特点,利用子结构建模技术分别构造层合板和螺栓的子结构。分析了层合板出现损伤时,材料参数退化对强度预测的...
  • 用于倾角传感器的推荐电路连接方式,包括机械式和光电式开关,包括两脚和四脚的,用到这个传感器的会用到这个电路连接
  • 工业产品常用的连接和固定方式;按照不同的分类标准连接结构可以分为不同的形式按照不同的连接原理可以分为机械连接结构粘接和焊接三种连接方式按照结构的功能和部件的活动空间可以分为动连接和静连接结构;蝶阀-L
  • 在航天、军事等领域往往需要传递无机械连接的设备之间的空间方位信息,而传统的方位测量系统测量范围小、测量精度低,难以满足系统高精度大范围传递的要求,为此改变传统方法中的调制方式,将方波磁光调制引入了方位...
  • 今天用电脑,打开桌面上的一个文件夹的快捷方式时,弹框提示“快捷方式‘*.lnk’指向的驱动器或网络连接不可用”,如下图: 这时查看”此电脑“(”我的电脑“)发现,硬盘只剩下固态硬盘的两个盘符,其余盘符...

    今天用电脑,打开桌面上的一个文件夹的快捷方式时,弹框提示“快捷方式‘*.lnk’指向的驱动器或网络连接不可用”,如下图:

     

    这时查看”此电脑“(”我的电脑“)发现,硬盘只剩下固态硬盘的两个盘符,其余盘符全部不见了,不见的正好是所有的机械硬盘的。

     

     

    猜想:

            1、机械硬盘驱动故障

            2、机械硬盘硬件故障

     

    解决:

            控制面板——设备管理器——磁盘驱动器:

            发现此项下面两个磁盘,第一个是固态硬盘,状态没问题,第二个显示”未知“。

            在未知的这个上面尝试更新驱动未果,然后“扫描检测硬件改动”,这时候硬盘出来了,可以正常使用了。

          

           深入原因没有去研究,记录下这次问题经过,以备不时之需。

    展开全文
  • 文章目录网络连接方式一,无线设置方法1,具有广域网环境的路由器1-1,连接1-2,查看1-3,测试1-4,验证2,手机热点构成局域网3,无广域网但有路由器下建立局域网二,有线设置方法1-1,连接1-2,查看1-3,测试1-4,...

    这个教程主要演示了Aubo机械臂与笔记本进行网络连接的两种方式。相比较而言,利用有线连接,机械臂控制会更加柔顺。

    网络连接方式


    一,无线设置方法


    1,具有广域网环境的路由器

    当我们拥有路由器且具有广域网连入路由器Wan口的情况下,笔记本电脑的ubuntu端和移动平台的ubuntu端的都连接到szar_robot(路由器散播的局域网下wifi名称,根据自己所处环境进行变更)的无线下。

    1-1,连接

    首先自己电脑的连接很简单,就是连接到路由器散播的热点就可以。

    Aubo_i5在ubuntu下配置连接,网络配置部分在
    /usr/share/applications/Network下设置IP地址和笔记本电脑无线连接的网段一致。
    在这里插入图片描述

    1-2,查看

    然后进入aubo_i5示教器环境前,可以在上面的图片中,查看连接szar_robot的属性,可以找到机械臂的IP地址。提示,这里的IP地址应该和无线网卡上标的IP地址一致。

    查看笔记本电脑的IP地址:
    网页端输入:
    http://tplogin.cn/

    密码输入1234567890
    进入后点暂不升级,可以看到笔记本电脑的IP地址是192.168.20.113。

    在这里插入图片描述

    1-3,测试

    首先在自己笔记本电脑上ping一下,ping示教器下的IP地址,也就是无线网卡下写的IP地址,例如192.168.20.107,可以ping通。
    在这里插入图片描述
    然后在示教器下,找到网络,ping一下自己的笔记本电脑,看看能不能ping通。
    在这里插入图片描述
    可以ping通的情况下,这样两边就利用无线路由器建立了连接。

    1-4,验证

    运行:

    roslaunch aubo_i5_moveit_config moveit_planning_execution.launch sim:=false robot_ip:=192.168.20.107
    

    注意这里的IP地址是机械臂的IP地址。可以看到机械臂的姿态和实际环境中一致。
    在这里插入图片描述
    上面是一种常规的方式,但是如果所在的区域没有这样一个局域网,该怎么办呢?

    两种替代方案:

    2,手机热点构成局域网

    利用手机散播热点,然后两台机器同时连接到手机热点。IP地址,也是通过查看各自连接到热点的属性进行查看。

    3,无广域网但有路由器下建立局域网

    在有路由器的情况下,但是无广域网与路由器的wan(广域网)进行连接。

    首先需要配置一下路由器,散播一个热点,这里的配置参考一下路由器的教程,配置完成后路由器只要上电便会散播一个热点。

    然后我们并不需要连接到广域网下,只需要将设备直接连接到热点下就可以。

    可以看到本身路由器会自动分配一个IP地址,有些情况下,我们需要修改一下IP地址的网段,那么如何进行修改呢?

    这时可以采用,笔记本电脑的网口端连接到路由器的 Lan口(局域网)。

    输入http://tplogin.cn/
    
    密码输入1234567890
    

    找到lan口设置,这里我设置的IP地址是192.168.20.1,然后设备连接后的IP地址的网段也是在192.168.20.*下。
    在这里插入图片描述

    这样我们便可以进行网段的修改。

    可以查看分配的IP地址。
    在这里插入图片描述

    二,有线设置方法

    说明:下面我的演示采用的网段是192.168.1.,但是由于移动平台本身的IP是在192.168.20.,所以这里建立大家把IP地址设置成在192.168.20.,这样可以保证在一个网段下可以控制两个设备。

    1-1,连接

    首先利用网线,将机械臂与笔记本电脑进行连接。

    首先明确笔记本电脑端的IP地址和示教器端的IP地址在同一个网段,但是不同的IP下。

    设置成
    笔记本:
    在这里插入图片描述
    示教器端设置成:
    网卡选择eth× 名称的。
    在这里插入图片描述

    示教器端设置完成后,重启一下。

    1-2,查看

    在aubo的ubuntu端可以查看设置的结果,在/etc/network/interfaces文件下,

    在这里插入图片描述
    进入示教器端,点击ifconfig查看设置是否成功,如果出现我们设置的eth×网络提示,说明设置成功。
    在这里插入图片描述

    1-3,测试

    然后在电脑端和示教器端分别ping一下对方,如果能够ping通,说明连接已经建立。
    在这里插入图片描述
    在这里插入图片描述

    1-4,验证

    验证方式同无线设置一样。

    展开全文
  • 在ROS industrial介绍中,给出了ROS和常用机械臂的连接方式。具体信息可以参考:http://wiki.ros.org/Industrial ROS连接ABB机械臂调试详细教程-ROS(indigo)和ABB RobotStudio 6.03.02- 补充:...

    在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:

     

    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

     

     

    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

     

     

    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等。

    在终端启动:

     

    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:

    --

     

    展开全文
  • 类似这样的: ...结果重启了效果更差,害怕是机械硬盘坏了,立马Google一下,查了半天心灰意冷,又重启了一下. 结果,好了! 没错,如果遇到了电脑出问题,不妨重启一下,一次不行再重启,99%的问题都能解决. ...

    类似这样的:

    今天点击了一个应用出现这个错误,一看是机械硬盘没读取出来,慌得一批,立马重启一下试试.

    结果重启了效果更差,害怕是机械硬盘坏了,立马Google一下,查了半天心灰意冷,又重启了一下.

    结果,好了!

    没错,如果遇到了电脑出问题,不妨重启一下,一次不行再重启,99%的问题都能解决.

     

     

    展开全文
  • 探讨了在机械研磨的界面上引入超声能的复合研磨方式,将机械研磨和超声/机械研磨两种方法的去除效率、研磨质量进行了实验对比,发现超声/机械复合研磨的效率和质量都有显著提高,可以达到插入损耗小于0.1dB、回波...
  • 在海洋石油管线连接中多采用卡爪式连接等机械连接方式,针对此类连接器的安装与维护,设计了一套水下卡爪式连接器安装工具。对此安装工具进行了机械结构的设计,并将其工作过程分为下放、软着陆、加载、二次锁紧、...
  • 此包含与之间的连接的持续开发。 OpenBCI除了能够采样大脑活动之外,还是一种功能强大的,高通道数的EMG设备。 结果,我认为开发8或16通道肌电图控制的机械手真是太棒了。 我相信,低成本,高质量,可3D打印的假肢的...
  • 焊接电子元件不仅可为这些元件提供电气连接,还可提供元件与印刷电路板和其他基板之间的机械连接。事实上,焊接通常是将元件固定的唯一机械连接方式
  • 介质连接

    2011-05-25 10:53:59
    这些标准规定了连接器的机械尺寸和他们在不同实施中所采用的各种连接器的可接受电气性能。 虽然有些连接器外观相同,但根据它们适用的物理层规范,它们具有不同的布线方式。ISO 8877 指定 RJ-45 连接器可用于各种...
  • 连接方式为螺纹连接锁紧机构,使用方便。插座采用玻璃烧结工艺,气密封性高,属于仪器式电连接器。 主要技术参数: 环境温度:-55℃~+100℃; 相对湿度:+40℃,达90%~95%; 额定电压:200Ⅴ ; 额定电流:5A...
  • 该程序模拟了项目中使用的机器人,并以图形方式显示了相关的坐标系,然后您可以连接到上述的StyroCutRobot程序并发送在3D环境中可视化显示的简单命令。 该程序是用JavaScript用编写的,并且和库用于简化的图形显示...
  • 机械键盘 程序员 键盘是我们连接到计算机以及经常连接到世界其他地方的方式。 键的布局是我们所讲语言的物理表示,并且此简单的工具为我们提供了无限的交流能力。 键盘是将触摸转换为数字信号的机械和电气继电器的...
  • 将尺寸向gh60靠拢。好处是可以便宜的共享好多零部件:底壳儿。。。 qsy 2018年6月7日16:12:42 ...键盘作为电脑录入设备,现在几乎是...机械键盘的轴、键位布局和连接方式,是选取一款合适的机械键盘的最重要的三点...
  • 机械臂5---机械臂连杆及连杆链

    千次阅读 2020-03-02 21:29:02
    在进行操作臂的结构设计时,通常优先选择仅具有一个自由度的关节作为连杆的连接方式。大部分操作中包括转动关节或移动关节。在极少数情况下,采用具有n个自由度的关节,这种关节可以看出是用n个...
  • 事实上,焊接通常是将元件固定的唯一机械连接方式。  相比固态器件,MEMS陀螺仪等机械传感器对焊接的机械可靠性特别敏感。陀螺仪和其他MEMS传感器在焊接时必须特别注意机械稳定性,由机械不稳定引起的任何移动都将...
  • FCI公司近日推出一种29针直角安装的插座连接器,该产品可用于实现串行附加SCSI硬盘与数据、通信...这种连接器还具有附加的夹具以提供额外焊接后的机械强度与稳定性。 上述连接器符合RoHS规范。根据配置不同,批量达1,
  • 插拔式快速接线端子系列采用易于操作的可插拔连接与牢固通用的螺钉方式相结合,是各种零件连接了起来。插拔式快速接线端子由两部分插拔连接而成,一部分将线压紧,然后插到另一部分,这部分在焊接到PCB板上。此接...
  • 连接器能够满足PICMG ( PCI Industrial Computer Manufacturers Group ) AMC.0 的机械和电气需求,而且使用 压入方式。压入方式是AMC.0 的下一修订版的要求。 该新连接器支持高数据传输速率,以及AMC所需的低色度...
  • 压装型连接器提供压模定位方式,可选择黑色或蓝色。压装连接器还有一款透明闭锁,可与显示插槽状态的LED一起使用。  所有连接器都为模块的固定和插拔提供了机械电压调节和端子闭锁。典型插入力小于22lbs。焊
  • 罗技g310驱动是由罗技官方为该型号的键盘打造的驱动程序,它可以有效的解决键盘与电脑连接故障的问题,并轻松的对键盘进行自定义...罗技g310机械游戏键盘参数简介产品定位:机械键盘,游戏键盘连接方式:,欢迎下载体验
  • FCI公司推出一种29针直角安装的插座连接器,该产品可用于实现串行附加SCSI硬盘与数据、通信及工业设备...这种连接器还具有附加的夹具以提供额外焊接后的机械强度与稳定性。  上述连接器符合RoHS规范。根据配置不同,
  • 雷神k70驱动是专为雷神该型号键盘用户提供的一款驱动程序,通过该驱动用户可以自定义键盘使用的各项参数,让键盘的功能极大限度发挥,操作体验更顺畅,需要的朋友欢迎下载!...机械连接方式nbsp;有,欢迎下载体验
  • 阐述了一种支架搬运车的后机架基本结构,分析了静液压—机械传动的支架搬运车后机架摆动梁的作用。通过结构与受力分析,对后机架与摆动梁之间连接方式进行了设计,并在后续相应机型中得到推广应用,取得良好的效果。
  • 采用边界条件法,提出满足连接圆曲线与圆曲线的新型缓和曲线,建立三种不同的计算工况,利用MATLAB数值计算分析列车以高速通过不同曲曲连接方式对乘车舒适性的影响,采用通用的机械动力学/运动学仿真分析软件...
  • 海盗船K68机械键盘驱动程序是一款美商海盗船K68机械键盘的配套驱动软件,该驱动可以设置键盘的性能、灯光效果,以及为键盘的自定义按键...连接方式有线 键盘接口USB 按键数104键 键盘布局全尺寸式 技术参数 按键技

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 517
精华内容 206
关键字:

机械连接方式